mirror of
https://github.com/portainer/portainer.git
synced 2025-07-25 08:19:40 +02:00
refactor(app): backport technical changes (#4679)
* refactor(app): backport technical changes * refactor(app): remove EE only features * feat(app): small review changes to match EE codebase layout on some files Co-authored-by: xAt0mZ <baron_l@epitech.eu>
This commit is contained in:
parent
158bdae10e
commit
ccf6babc02
40 changed files with 951 additions and 976 deletions
|
@ -1,10 +1,20 @@
|
|||
import * as JsonPatch from 'fast-json-patch';
|
||||
import filesizeParser from 'filesize-parser';
|
||||
|
||||
import { KubernetesResourceQuota } from 'Kubernetes/models/resource-quota/models';
|
||||
import { KubernetesResourceQuotaCreatePayload, KubernetesResourceQuotaUpdatePayload } from 'Kubernetes/models/resource-quota/payloads';
|
||||
import {
|
||||
KubernetesResourceQuota,
|
||||
KubernetesPortainerResourceQuotaCPULimit,
|
||||
KubernetesPortainerResourceQuotaMemoryLimit,
|
||||
KubernetesPortainerResourceQuotaCPURequest,
|
||||
KubernetesPortainerResourceQuotaMemoryRequest,
|
||||
KubernetesResourceQuotaDefaults,
|
||||
} from 'Kubernetes/models/resource-quota/models';
|
||||
import { KubernetesResourceQuotaCreatePayload } from 'Kubernetes/models/resource-quota/payloads';
|
||||
import KubernetesResourceQuotaHelper from 'Kubernetes/helpers/resourceQuotaHelper';
|
||||
import { KubernetesPortainerResourcePoolNameLabel, KubernetesPortainerResourcePoolOwnerLabel } from 'Kubernetes/models/resource-pool/models';
|
||||
import KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';
|
||||
import KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';
|
||||
import { KubernetesResourcePoolFormValues } from 'Kubernetes/models/resource-pool/formValues';
|
||||
|
||||
class KubernetesResourceQuotaConverter {
|
||||
static apiToResourceQuota(data, yaml) {
|
||||
|
@ -14,21 +24,21 @@ class KubernetesResourceQuotaConverter {
|
|||
res.Name = data.metadata.name;
|
||||
res.CpuLimit = 0;
|
||||
res.MemoryLimit = 0;
|
||||
if (data.spec.hard && data.spec.hard['limits.cpu']) {
|
||||
res.CpuLimit = KubernetesResourceReservationHelper.parseCPU(data.spec.hard['limits.cpu']);
|
||||
if (data.spec.hard && data.spec.hard[KubernetesPortainerResourceQuotaCPULimit]) {
|
||||
res.CpuLimit = KubernetesResourceReservationHelper.parseCPU(data.spec.hard[KubernetesPortainerResourceQuotaCPULimit]);
|
||||
}
|
||||
if (data.spec.hard && data.spec.hard['limits.memory']) {
|
||||
res.MemoryLimit = filesizeParser(data.spec.hard['limits.memory'], { base: 10 });
|
||||
if (data.spec.hard && data.spec.hard[KubernetesPortainerResourceQuotaMemoryLimit]) {
|
||||
res.MemoryLimit = filesizeParser(data.spec.hard[KubernetesPortainerResourceQuotaMemoryLimit], { base: 10 });
|
||||
}
|
||||
|
||||
res.MemoryLimitUsed = 0;
|
||||
if (data.status.used && data.status.used['limits.memory']) {
|
||||
res.MemoryLimitUsed = filesizeParser(data.status.used['limits.memory'], { base: 10 });
|
||||
if (data.status.used && data.status.used[KubernetesPortainerResourceQuotaMemoryLimit]) {
|
||||
res.MemoryLimitUsed = filesizeParser(data.status.used[KubernetesPortainerResourceQuotaMemoryLimit], { base: 10 });
|
||||
}
|
||||
|
||||
res.CpuLimitUsed = 0;
|
||||
if (data.status.used && data.status.used['limits.cpu']) {
|
||||
res.CpuLimitUsed = KubernetesResourceReservationHelper.parseCPU(data.status.used['limits.cpu']);
|
||||
if (data.status.used && data.status.used[KubernetesPortainerResourceQuotaCPULimit]) {
|
||||
res.CpuLimitUsed = KubernetesResourceReservationHelper.parseCPU(data.status.used[KubernetesPortainerResourceQuotaCPULimit]);
|
||||
}
|
||||
res.Yaml = yaml ? yaml.data : '';
|
||||
res.ResourcePoolName = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolNameLabel] : '';
|
||||
|
@ -40,48 +50,54 @@ class KubernetesResourceQuotaConverter {
|
|||
const res = new KubernetesResourceQuotaCreatePayload();
|
||||
res.metadata.name = KubernetesResourceQuotaHelper.generateResourceQuotaName(quota.Namespace);
|
||||
res.metadata.namespace = quota.Namespace;
|
||||
res.spec.hard['requests.cpu'] = quota.CpuLimit;
|
||||
res.spec.hard['requests.memory'] = quota.MemoryLimit;
|
||||
res.spec.hard['limits.cpu'] = quota.CpuLimit;
|
||||
res.spec.hard['limits.memory'] = quota.MemoryLimit;
|
||||
KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaCPURequest}']`, quota.CpuLimit);
|
||||
KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaMemoryRequest}']`, quota.MemoryLimit);
|
||||
KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaCPULimit}']`, quota.CpuLimit);
|
||||
KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaMemoryLimit}']`, quota.MemoryLimit);
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolNameLabel] = quota.ResourcePoolName;
|
||||
if (quota.ResourcePoolOwner) {
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = quota.ResourcePoolOwner;
|
||||
}
|
||||
if (!quota.CpuLimit || quota.CpuLimit === 0) {
|
||||
delete res.spec.hard['requests.cpu'];
|
||||
delete res.spec.hard['limits.cpu'];
|
||||
}
|
||||
if (!quota.MemoryLimit || quota.MemoryLimit === 0) {
|
||||
delete res.spec.hard['requests.memory'];
|
||||
delete res.spec.hard['limits.memory'];
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
static updatePayload(quota) {
|
||||
const res = new KubernetesResourceQuotaUpdatePayload();
|
||||
res.metadata.name = quota.Name;
|
||||
res.metadata.namespace = quota.Namespace;
|
||||
const res = KubernetesResourceQuotaConverter.createPayload(quota);
|
||||
res.metadata.uid = quota.Id;
|
||||
res.spec.hard['requests.cpu'] = quota.CpuLimit;
|
||||
res.spec.hard['requests.memory'] = quota.MemoryLimit;
|
||||
res.spec.hard['limits.cpu'] = quota.CpuLimit;
|
||||
res.spec.hard['limits.memory'] = quota.MemoryLimit;
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolNameLabel] = quota.ResourcePoolName;
|
||||
if (quota.ResourcePoolOwner) {
|
||||
res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = quota.ResourcePoolOwner;
|
||||
}
|
||||
if (!quota.CpuLimit || quota.CpuLimit === 0) {
|
||||
delete res.spec.hard['requests.cpu'];
|
||||
delete res.spec.hard['limits.cpu'];
|
||||
}
|
||||
if (!quota.MemoryLimit || quota.MemoryLimit === 0) {
|
||||
delete res.spec.hard['requests.memory'];
|
||||
delete res.spec.hard['limits.memory'];
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
static patchPayload(oldQuota, newQuota) {
|
||||
const oldPayload = KubernetesResourceQuotaConverter.createPayload(oldQuota);
|
||||
const newPayload = KubernetesResourceQuotaConverter.createPayload(newQuota);
|
||||
const payload = JsonPatch.compare(oldPayload, newPayload);
|
||||
return payload;
|
||||
}
|
||||
|
||||
static quotaToResourcePoolFormValues(quota) {
|
||||
const res = new KubernetesResourcePoolFormValues(KubernetesResourceQuotaDefaults);
|
||||
res.Name = quota.Namespace;
|
||||
res.CpuLimit = quota.CpuLimit;
|
||||
res.MemoryLimit = KubernetesResourceReservationHelper.megaBytesValue(quota.MemoryLimit);
|
||||
if (res.CpuLimit || res.MemoryLimit) {
|
||||
res.HasQuota = true;
|
||||
}
|
||||
res.StorageClasses = quota.StorageRequests;
|
||||
return res;
|
||||
}
|
||||
|
||||
static resourcePoolFormValuesToResourceQuota(formValues) {
|
||||
if (formValues.HasQuota) {
|
||||
const quota = new KubernetesResourceQuota(formValues.Name);
|
||||
if (formValues.HasQuota) {
|
||||
quota.CpuLimit = formValues.CpuLimit;
|
||||
quota.MemoryLimit = KubernetesResourceReservationHelper.bytesValue(formValues.MemoryLimit);
|
||||
}
|
||||
quota.ResourcePoolName = formValues.Name;
|
||||
quota.ResourcePoolOwner = formValues.Owner;
|
||||
return quota;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default KubernetesResourceQuotaConverter;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue