diff --git a/src/main/getDiForUnitTesting.ts b/src/main/getDiForUnitTesting.ts index a1703f8790..e07e2d3aea 100644 --- a/src/main/getDiForUnitTesting.ts +++ b/src/main/getDiForUnitTesting.ts @@ -58,7 +58,6 @@ import getHelmChartVersionsInjectable from "./helm/helm-service/get-helm-chart-v import getHelmChartValuesInjectable from "./helm/helm-service/get-helm-chart-values.injectable"; import listHelmChartsInjectable from "./helm/helm-service/list-helm-charts.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"; import waitUntilBundledExtensionsAreLoadedInjectable from "./start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable"; import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx"; @@ -137,7 +136,6 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) getHelmChartValuesInjectable, listHelmChartsInjectable, getHelmReleaseHistoryInjectable, - getHelmReleaseValuesInjectable, rollbackHelmReleaseInjectable, writeJsonFileInjectable, readJsonFileInjectable, diff --git a/src/main/helm/get-helm-release-values.injectable.ts b/src/main/helm/get-helm-release-values.injectable.ts new file mode 100644 index 0000000000..1ef74d5820 --- /dev/null +++ b/src/main/helm/get-helm-release-values.injectable.ts @@ -0,0 +1,49 @@ +/** + * 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 GetHelmReleaseValuesData { + name: string; + namespace: string; + all?: boolean; +} + +export type GetHelmReleaseValues = (kubeconfigPath: string, data: GetHelmReleaseValuesData) => Promise; + +const getHelmReleaseValuesInjectable = getInjectable({ + id: "get-helm-release-values", + instantiate: (di): GetHelmReleaseValues => { + const execHelm = di.inject(execHelmInjectable); + + return async (kubeconfigPath, { name, namespace, all = false }) => { + const args = [ + "get", + "values", + name, + ]; + + if (all) { + args.push("--all"); + } + + args.push( + "--output", "yaml", + "--namespace", namespace, + "--kubeconfig", kubeconfigPath, + ); + + const result = await execHelm(args); + + if (result.callWasSuccessful) { + return result.response; + } + + throw result.error; + }; + }, +}); + +export default getHelmReleaseValuesInjectable; diff --git a/src/main/helm/helm-release-manager.ts b/src/main/helm/helm-release-manager.ts index 1f22264085..2feb81691c 100644 --- a/src/main/helm/helm-release-manager.ts +++ b/src/main/helm/helm-release-manager.ts @@ -10,37 +10,6 @@ import execHelmInjectable from "./exec-helm/exec-helm.injectable"; const execHelm = asLegacyGlobalFunctionForExtensionApi(execHelmInjectable); -interface GetValuesOptions { - namespace: string; - all?: boolean; - kubeconfigPath: string; -} - -export async function getValues(name: string, { namespace, all = false, kubeconfigPath }: GetValuesOptions): Promise { - const args = [ - "get", - "values", - name, - ]; - - if (all) { - args.push("--all"); - } - - args.push( - "--output", "yaml", - "--namespace", namespace, - "--kubeconfig", kubeconfigPath, - ); - - const result = await execHelm(args); - - if (result.callWasSuccessful) { - return result.response; - } - - throw result.error; -} export async function getHistory(name: string, namespace: string, kubeconfigPath: string): Promise { const result = await execHelm([ diff --git a/src/main/helm/helm-service/get-helm-release-values.injectable.ts b/src/main/helm/helm-service/get-helm-release-values.injectable.ts index 5bca2d5723..8070ed366e 100644 --- a/src/main/helm/helm-service/get-helm-release-values.injectable.ts +++ b/src/main/helm/helm-service/get-helm-release-values.injectable.ts @@ -3,39 +3,26 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { getValues } from "../helm-release-manager"; import loggerInjectable from "../../../common/logger.injectable"; import type { Cluster } from "../../../common/cluster/cluster"; +import type { GetHelmReleaseValuesData } from "../get-helm-release-values.injectable"; +import getHelmReleaseValuesInjectable from "../get-helm-release-values.injectable"; -interface GetReleaseValuesArgs { - cluster: Cluster; - namespace: string; - all: boolean; -} - -const getHelmReleaseValuesInjectable = getInjectable({ - id: "get-helm-release-values", +const getClusterHelmReleaseValuesInjectable = getInjectable({ + id: "get-cluster-helm-release-values", instantiate: (di) => { const logger = di.inject(loggerInjectable); + const getHelmReleaseValues = di.inject(getHelmReleaseValuesInjectable); - return async ( - releaseName: string, - { cluster, namespace, all }: GetReleaseValuesArgs, - ) => { + return async (cluster: Cluster, data: GetHelmReleaseValuesData) => { const pathToKubeconfig = await cluster.getProxyKubeconfigPath(); - logger.debug("Fetch release values"); + logger.debug(`[CLUSTER]: getting helm release values`, data); - return getValues(releaseName, { - namespace, - all, - kubeconfigPath: pathToKubeconfig, - }); + return getHelmReleaseValues(pathToKubeconfig, data); }; }, - - causesSideEffects: true, }); -export default getHelmReleaseValuesInjectable; +export default getClusterHelmReleaseValuesInjectable; diff --git a/src/main/routes/helm/releases/get-release-values-route.injectable.ts b/src/main/routes/helm/releases/get-release-values-route.injectable.ts index d68e5c53d1..78799f3e58 100644 --- a/src/main/routes/helm/releases/get-release-values-route.injectable.ts +++ b/src/main/routes/helm/releases/get-release-values-route.injectable.ts @@ -7,20 +7,20 @@ import { getRouteInjectable } from "../../../router/router.injectable"; import { getBoolean } from "../../../utils/parse-query"; import { contentTypes } from "../../../router/router-content-types"; import { clusterRoute } from "../../../router/route"; -import getHelmReleaseValuesInjectable from "../../../helm/helm-service/get-helm-release-values.injectable"; +import getClusterHelmReleaseValuesInjectable from "../../../helm/helm-service/get-helm-release-values.injectable"; const getReleaseRouteValuesInjectable = getRouteInjectable({ id: "get-release-values-route", instantiate: (di) => { - const getHelmReleaseValues = di.inject(getHelmReleaseValuesInjectable); + const getClusterHelmReleaseValues = di.inject(getClusterHelmReleaseValuesInjectable); return clusterRoute({ method: "get", - path: `${apiPrefix}/v2/releases/{namespace}/{release}/values`, - })(async ({ cluster, params: { namespace, release }, query }) => ({ - response: await getHelmReleaseValues(release, { - cluster, + path: `${apiPrefix}/v2/releases/{namespace}/{name}/values`, + })(async ({ cluster, params: { namespace, name }, query }) => ({ + response: await getClusterHelmReleaseValues(cluster, { + name, namespace, all: getBoolean(query, "all"), }),