mirror of
https://github.com/portainer/portainer.git
synced 2025-07-22 23:09: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>
71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
import KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';
|
|
|
|
export default class KubernetesRegistryAccessController {
|
|
/* @ngInject */
|
|
constructor($async, $state, EndpointService, Notifications, KubernetesResourcePoolService) {
|
|
this.$async = $async;
|
|
this.$state = $state;
|
|
this.Notifications = Notifications;
|
|
this.KubernetesResourcePoolService = KubernetesResourcePoolService;
|
|
this.EndpointService = EndpointService;
|
|
|
|
this.state = {
|
|
actionInProgress: false,
|
|
};
|
|
|
|
this.selectedResourcePools = [];
|
|
this.resourcePools = [];
|
|
this.savedResourcePools = [];
|
|
|
|
this.handleRemove = this.handleRemove.bind(this);
|
|
}
|
|
|
|
async submit() {
|
|
return this.updateNamespaces([...this.savedResourcePools.map(({ value }) => value), ...this.selectedResourcePools.map((pool) => pool.name)]);
|
|
}
|
|
|
|
handleRemove(namespaces) {
|
|
const removeNamespaces = namespaces.map(({ value }) => value);
|
|
|
|
return this.updateNamespaces(this.savedResourcePools.map(({ value }) => value).filter((value) => !removeNamespaces.includes(value)));
|
|
}
|
|
|
|
updateNamespaces(namespaces) {
|
|
return this.$async(async () => {
|
|
try {
|
|
await this.EndpointService.updateRegistryAccess(this.endpoint.Id, this.registry.Id, {
|
|
namespaces,
|
|
});
|
|
this.$state.reload();
|
|
} catch (err) {
|
|
this.Notifications.error('Failure', err, 'Failed saving registry access');
|
|
}
|
|
});
|
|
}
|
|
|
|
$onInit() {
|
|
return this.$async(async () => {
|
|
try {
|
|
this.state = {
|
|
registryId: this.$state.params.id,
|
|
};
|
|
this.registry = await this.EndpointService.registry(this.endpoint.Id, this.state.registryId);
|
|
if (this.registry.RegistryAccesses && this.registry.RegistryAccesses[this.endpoint.Id]) {
|
|
this.savedResourcePools = this.registry.RegistryAccesses[this.endpoint.Id].Namespaces.map((value) => ({ value }));
|
|
}
|
|
} catch (err) {
|
|
this.Notifications.error('Failure', err, 'Unable to retrieve registry details');
|
|
}
|
|
|
|
try {
|
|
const resourcePools = await this.KubernetesResourcePoolService.get();
|
|
|
|
this.resourcePools = resourcePools
|
|
.filter((pool) => !KubernetesNamespaceHelper.isSystemNamespace(pool.Namespace.Name) && !this.savedResourcePools.find(({ value }) => value === pool.Namespace.Name))
|
|
.map((pool) => ({ name: pool.Namespace.Name, id: pool.Namespace.Id }));
|
|
} catch (err) {
|
|
this.Notifications.error('Failure', err, 'Unable to retrieve namespaces');
|
|
}
|
|
});
|
|
}
|
|
}
|