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