From 468ca344959b41df372f2e1798c93f34846fdf21 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 22 Dec 2022 12:57:54 -0500 Subject: [PATCH] Make deleteHelmRelease injectable Signed-off-by: Sebastian Malton --- src/main/getDiForUnitTesting.ts | 2 - .../helm/delete-helm-release.injectable.ts | 37 +++++++++++++++++++ src/main/helm/helm-release-manager.ts | 15 -------- .../delete-helm-release.injectable.ts | 18 ++++----- .../delete-release-route.injectable.ts | 10 ++--- 5 files changed, 51 insertions(+), 31 deletions(-) create mode 100644 src/main/helm/delete-helm-release.injectable.ts diff --git a/src/main/getDiForUnitTesting.ts b/src/main/getDiForUnitTesting.ts index b7043e8945..a1703f8790 100644 --- a/src/main/getDiForUnitTesting.ts +++ b/src/main/getDiForUnitTesting.ts @@ -57,7 +57,6 @@ import normalizedPlatformArchitectureInjectable from "../common/vars/normalized- import getHelmChartVersionsInjectable from "./helm/helm-service/get-helm-chart-versions.injectable"; import getHelmChartValuesInjectable from "./helm/helm-service/get-helm-chart-values.injectable"; import listHelmChartsInjectable from "./helm/helm-service/list-helm-charts.injectable"; -import deleteHelmReleaseInjectable from "./helm/helm-service/delete-helm-release.injectable"; import getHelmReleaseHistoryInjectable from "./helm/helm-service/get-helm-release-history.injectable"; import getHelmReleaseValuesInjectable from "./helm/helm-service/get-helm-release-values.injectable"; import rollbackHelmReleaseInjectable from "./helm/helm-service/rollback-helm-release.injectable"; @@ -137,7 +136,6 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) getHelmChartVersionsInjectable, getHelmChartValuesInjectable, listHelmChartsInjectable, - deleteHelmReleaseInjectable, getHelmReleaseHistoryInjectable, getHelmReleaseValuesInjectable, rollbackHelmReleaseInjectable, diff --git a/src/main/helm/delete-helm-release.injectable.ts b/src/main/helm/delete-helm-release.injectable.ts new file mode 100644 index 0000000000..a4c08af96f --- /dev/null +++ b/src/main/helm/delete-helm-release.injectable.ts @@ -0,0 +1,37 @@ +/** + * 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 execHelmInjectable from "./exec-helm/exec-helm.injectable"; + +export interface DeleteHelmReleaseData { + name: string; + namespace: string; +} + +export type DeleteHelmRelease = (kubeconfigPath: string, data: DeleteHelmReleaseData) => Promise; + +const deleteHelmReleaseInjectable = getInjectable({ + id: "delete-helm-release", + instantiate: (di): DeleteHelmRelease => { + const execHelm = di.inject(execHelmInjectable); + + return async (kubeconfigPath, { name, namespace }) => { + const result = await execHelm([ + "delete", + name, + "--namespace", namespace, + "--kubeconfig", kubeconfigPath, + ]); + + if (result.callWasSuccessful) { + return result.response; + } + + throw result.error; + }; + }, +}); + +export default deleteHelmReleaseInjectable; diff --git a/src/main/helm/helm-release-manager.ts b/src/main/helm/helm-release-manager.ts index e67f1551ee..1f22264085 100644 --- a/src/main/helm/helm-release-manager.ts +++ b/src/main/helm/helm-release-manager.ts @@ -10,21 +10,6 @@ import execHelmInjectable from "./exec-helm/exec-helm.injectable"; const execHelm = asLegacyGlobalFunctionForExtensionApi(execHelmInjectable); -export async function deleteRelease(name: string, namespace: string, kubeconfigPath: string): Promise { - const result = await execHelm([ - "delete", - name, - "--namespace", namespace, - "--kubeconfig", kubeconfigPath, - ]); - - if (result.callWasSuccessful) { - return result.response; - } - - throw result.error; -} - interface GetValuesOptions { namespace: string; all?: boolean; diff --git a/src/main/helm/helm-service/delete-helm-release.injectable.ts b/src/main/helm/helm-service/delete-helm-release.injectable.ts index d03cd480dc..fa27980355 100644 --- a/src/main/helm/helm-service/delete-helm-release.injectable.ts +++ b/src/main/helm/helm-service/delete-helm-release.injectable.ts @@ -4,25 +4,25 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import type { Cluster } from "../../../common/cluster/cluster"; -import { deleteRelease } from "../helm-release-manager"; import loggerInjectable from "../../../common/logger.injectable"; +import type { DeleteHelmReleaseData } from "../delete-helm-release.injectable"; +import deleteHelmReleaseInjectable from "../delete-helm-release.injectable"; -const deleteHelmReleaseInjectable = getInjectable({ - id: "delete-helm-release", +const deleteClusterHelmReleaseInjectable = getInjectable({ + id: "delete-cluster-helm-release", instantiate: (di) => { const logger = di.inject(loggerInjectable); + const deleteHelmRelease = di.inject(deleteHelmReleaseInjectable); - return async (cluster: Cluster, releaseName: string, namespace: string) => { + return async (cluster: Cluster, data: DeleteHelmReleaseData) => { const proxyKubeconfig = await cluster.getProxyKubeconfigPath(); - logger.debug("Delete release"); + logger.debug(`[CLUSTER]: Delete helm release`, data); - return deleteRelease(releaseName, namespace, proxyKubeconfig); + return deleteHelmRelease(proxyKubeconfig, data); }; }, - - causesSideEffects: true, }); -export default deleteHelmReleaseInjectable; +export default deleteClusterHelmReleaseInjectable; diff --git a/src/main/routes/helm/releases/delete-release-route.injectable.ts b/src/main/routes/helm/releases/delete-release-route.injectable.ts index 2da28fd591..79d3195643 100644 --- a/src/main/routes/helm/releases/delete-release-route.injectable.ts +++ b/src/main/routes/helm/releases/delete-release-route.injectable.ts @@ -5,19 +5,19 @@ import { apiPrefix } from "../../../../common/vars"; import { getRouteInjectable } from "../../../router/router.injectable"; import { clusterRoute } from "../../../router/route"; -import deleteHelmReleaseInjectable from "../../../helm/helm-service/delete-helm-release.injectable"; +import deleteClusterHelmReleaseInjectable from "../../../helm/helm-service/delete-helm-release.injectable"; const deleteReleaseRouteInjectable = getRouteInjectable({ id: "delete-release-route", instantiate: (di) => { - const deleteHelmRelease = di.inject(deleteHelmReleaseInjectable); + const deleteHelmRelease = di.inject(deleteClusterHelmReleaseInjectable); return clusterRoute({ method: "delete", - path: `${apiPrefix}/v2/releases/{namespace}/{release}`, - })(async ({ cluster, params: { release, namespace }}) => ({ - response: await deleteHelmRelease(cluster, release, namespace), + path: `${apiPrefix}/v2/releases/{namespace}/{name}`, + })(async ({ cluster, params }) => ({ + response: await deleteHelmRelease(cluster, params), })); }, });