mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
57 lines
2.4 KiB
TypeScript
57 lines
2.4 KiB
TypeScript
/**
|
|
* 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 catalogCategoryRegistryInjectable from "../../../common/catalog/category-registry.injectable";
|
|
import getClusterByIdInjectable from "../../../common/cluster-store/get-by-id.injectable";
|
|
import readFileInjectable from "../../../common/fs/read-file.injectable";
|
|
import { loadConfigFromString } from "../../../common/kube-helpers";
|
|
import loggerInjectable from "../../../common/logger.injectable";
|
|
import openDeleteClusterDialogInjectable from "../../components/delete-cluster-dialog/open.injectable";
|
|
import { beforeFrameStartsInjectionToken } from "../tokens";
|
|
|
|
const setupKubernetesClusterContextMenuOpenInjectable = getInjectable({
|
|
id: "setup-kubernetes-cluster-context-menu-open",
|
|
instantiate: (di) => ({
|
|
id: "setup-kubernetes-cluster-context-menu-open",
|
|
run: () => {
|
|
const catalogCategoryRegistry = di.inject(catalogCategoryRegistryInjectable);
|
|
const openDeleteClusterDialog = di.inject(openDeleteClusterDialogInjectable);
|
|
const readFile = di.inject(readFileInjectable);
|
|
const getClusterById = di.inject(getClusterByIdInjectable);
|
|
const logger = di.inject(loggerInjectable);
|
|
|
|
catalogCategoryRegistry
|
|
.getForGroupKind("entity.k8slens.dev", "KubernetesCluster")
|
|
?.on("contextMenuOpen", (entity, context) => {
|
|
if (entity.metadata?.source == "local") {
|
|
context.menuItems.push({
|
|
title: "Remove",
|
|
icon: "delete",
|
|
onClick: async () => {
|
|
const clusterId = entity.getId();
|
|
const cluster = getClusterById(entity.getId());
|
|
|
|
if (!cluster) {
|
|
return logger.warn("[KUBERNETES-CLUSTER]: cannot delete cluster, does not exist in store", { clusterId });
|
|
}
|
|
|
|
const result = loadConfigFromString(await readFile(cluster.kubeConfigPath));
|
|
|
|
if (result.error) {
|
|
logger.error("[KUBERNETES-CLUSTER]: failed to parse kubeconfig file", result.error);
|
|
} else {
|
|
openDeleteClusterDialog({ cluster, config: result.config });
|
|
}
|
|
},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
}),
|
|
injectionToken: beforeFrameStartsInjectionToken,
|
|
});
|
|
|
|
export default setupKubernetesClusterContextMenuOpenInjectable;
|