mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
feat: Introduce injectables to remove subNamespaces
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
87598fc7d1
commit
c5572257bd
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { Namespace } from "../../../common/k8s-api/endpoints";
|
||||
import requestDeleteNormalNamespaceInjectable from "./request-delete-normal-namespace.injectable";
|
||||
import requestDeleteSubNamespaceAnchorInjectable from "./request-delete-sub-namespace.injectable";
|
||||
|
||||
export type RequestDeleteNamespace = (namespace: Namespace) => Promise<void>;
|
||||
|
||||
const requestDeleteNamespaceInjectable = getInjectable({
|
||||
id: "request-delete-namespace",
|
||||
instantiate: (di): RequestDeleteNamespace => {
|
||||
const requestDeleteSubNamespaceAnchor = di.inject(requestDeleteSubNamespaceAnchorInjectable);
|
||||
const requestDeleteNormalNamespace = di.inject(requestDeleteNormalNamespaceInjectable);
|
||||
|
||||
return async (namespace) => {
|
||||
if (namespace.isSubnamespace()) {
|
||||
await requestDeleteSubNamespaceAnchor(namespace);
|
||||
}
|
||||
|
||||
await requestDeleteNormalNamespace(namespace);
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export default requestDeleteNamespaceInjectable;
|
||||
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { Namespace } from "../../../common/k8s-api/endpoints";
|
||||
import namespaceStoreInjectable from "./store.injectable";
|
||||
|
||||
export type RequestDeleteNormalNamespace = (namespace: Namespace) => Promise<void>;
|
||||
|
||||
const requestDeleteNormalNamespaceInjectable = getInjectable({
|
||||
id: "request-delete-normal-namespace",
|
||||
instantiate: (di): RequestDeleteNormalNamespace => {
|
||||
const namespaceStore = di.inject(namespaceStoreInjectable);
|
||||
|
||||
return (namespace) => namespaceStore.remove(namespace);
|
||||
},
|
||||
});
|
||||
|
||||
export default requestDeleteNormalNamespaceInjectable;
|
||||
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { waitUntilDefined } from "@k8slens/utilities";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import customResourceDefinitionStoreInjectable from "../+custom-resources/definition.store.injectable";
|
||||
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||
import type { Namespace } from "../../../common/k8s-api/endpoints";
|
||||
|
||||
export type RequestDeleteSubNamespaceAnchor = (namespace: Namespace) => Promise<void>;
|
||||
|
||||
const requestDeleteSubNamespaceAnchorInjectable = getInjectable({
|
||||
id: "request-delete-sub-namespace-anchor",
|
||||
instantiate: (di): RequestDeleteSubNamespaceAnchor => {
|
||||
const crdStore = di.inject(customResourceDefinitionStoreInjectable);
|
||||
const apiManager = di.inject(apiManagerInjectable);
|
||||
|
||||
return async (namespace) => {
|
||||
const anchorCrd = await waitUntilDefined(() => crdStore.getByGroup("hnc.x-k8s.io", "subnamespaceanchors"));
|
||||
const anchorApi = apiManager.getApi(anchorCrd.getResourceApiBase());
|
||||
|
||||
await anchorApi?.delete({ name: namespace.getName() });
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export default requestDeleteSubNamespaceAnchorInjectable;
|
||||
Loading…
Reference in New Issue
Block a user