1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-22 23:09:41 +02:00
portainer/app/kubernetes/helpers/resourceReservationHelper.js
Alice Groux d99358ea8e
feat(k8s/container): realtime metrics (#4416)
* feat(k8s/container): metrics layout

* feat(k8s/container): memory graph

* feat(k8s/container): cpu usage percent

* feat(k8s/metrics): metrics api validation to enable metrics server

* feat(k8s/pods): update error metrics view

* feat(k8s/container): improve stopRepeater function

* feat(k8s/pods): display empty view instead of empty graphs

* feat(k8s/pods): fix CPU usage

* feat(k8s/configure): fix the metrics server test

* feat(k8s/pod): fix cpu issue

* feat(k8s/pod): fix toaster for non register pods in metrics server

* feat(k8s/service): remove options before 30 secondes for refresh rate

* feat(k8s/pod): fix default value for the refresh rate

* feat(k8s/pod): fix rebase
2021-04-29 13:10:14 +12:00

46 lines
1.2 KiB
JavaScript

import _ from 'lodash-es';
import filesizeParser from 'filesize-parser';
import { KubernetesResourceReservation } from 'Kubernetes/models/resource-reservation/models';
class KubernetesResourceReservationHelper {
static computeResourceReservation(pods) {
const containers = _.reduce(pods, (acc, pod) => _.concat(acc, pod.Containers), []);
return _.reduce(
containers,
(acc, container) => {
if (container.Requests) {
if (container.Requests.memory) {
acc.Memory += filesizeParser(container.Requests.memory, { base: 10 });
}
if (container.Requests.cpu) {
acc.CPU += KubernetesResourceReservationHelper.parseCPU(container.Requests.cpu);
}
}
return acc;
},
new KubernetesResourceReservation()
);
}
static parseCPU(cpu) {
let res = parseInt(cpu, 10);
if (_.endsWith(cpu, 'm')) {
res /= 1000;
} else if (_.endsWith(cpu, 'n')) {
res /= 1000000000;
}
return res;
}
static megaBytesValue(value) {
return Math.floor(filesizeParser(value) / 1000 / 1000);
}
static bytesValue(mem) {
return filesizeParser(mem) * 1000 * 1000;
}
}
export default KubernetesResourceReservationHelper;