mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 13:29:41 +02:00
* feat(k8s/resource-pool): add the ability to mark/unmark resource pool as system fix(kube/ns): check label to see if namespace is system refactor(k8s/namespaces): rename variables feat(kubernetes): toggle system state in the server (#5361) fix(app/resource-pool): UI fixes feat(app/resource-pool): add confirmation modal when unamrking system namespace * refactor(app): review changes * feat(app/namespaces): introduce store to retrieve namespace system status without changing all the kubernetes models refactor(app/namespaces): remove unused code first introduced for system tagging fix(app/namespaces): cache namespaces to retrieve system status regardless of namespace reference format refactor(app): migrate namespace store from helper to a separate singleton refactor(app): remove KubernetesNamespaceHelper from DI cycle * refactor(app): normalize usage of KubernetesNamespaceHelper functions * refactor(app/k8s): change namespace store to functions instead of class Co-authored-by: LP B <xAt0mZ@users.noreply.github.com>
43 lines
1.8 KiB
JavaScript
43 lines
1.8 KiB
JavaScript
import _ from 'lodash-es';
|
|
import { KubernetesNamespace } from 'Kubernetes/models/namespace/models';
|
|
import { KubernetesNamespaceCreatePayload } from 'Kubernetes/models/namespace/payloads';
|
|
import {
|
|
KubernetesPortainerResourcePoolNameLabel,
|
|
KubernetesPortainerResourcePoolOwnerLabel,
|
|
KubernetesPortainerNamespaceSystemLabel,
|
|
} from 'Kubernetes/models/resource-pool/models';
|
|
import KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';
|
|
|
|
export default class KubernetesNamespaceConverter {
|
|
static apiToNamespace(data, yaml) {
|
|
const res = new KubernetesNamespace();
|
|
res.Id = data.metadata.uid;
|
|
res.Name = data.metadata.name;
|
|
res.CreationDate = data.metadata.creationTimestamp;
|
|
res.Status = data.status.phase;
|
|
res.Yaml = yaml ? yaml.data : '';
|
|
res.ResourcePoolName = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolNameLabel] : '';
|
|
res.ResourcePoolOwner = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] : '';
|
|
|
|
res.IsSystem = KubernetesNamespaceHelper.isDefaultSystemNamespace(data.metadata.name);
|
|
if (data.metadata.labels) {
|
|
const systemLabel = data.metadata.labels[KubernetesPortainerNamespaceSystemLabel];
|
|
if (!_.isEmpty(systemLabel)) {
|
|
res.IsSystem = systemLabel === 'true';
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
static createPayload(namespace) {
|
|
const res = new KubernetesNamespaceCreatePayload();
|
|
res.metadata.name = namespace.Name;
|
|
res.metadata.labels[KubernetesPortainerResourcePoolNameLabel] = namespace.ResourcePoolName;
|
|
|
|
if (namespace.ResourcePoolOwner) {
|
|
const resourcePoolOwner = _.truncate(namespace.ResourcePoolOwner, { length: 63, omission: '' });
|
|
res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = resourcePoolOwner;
|
|
}
|
|
return res;
|
|
}
|
|
}
|