From 72ec1d09a7c2c16264e106f6da731f056e45291b Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Fri, 11 Feb 2022 10:50:49 +0200 Subject: [PATCH] Switch to using injectable to setup route for deleting release Signed-off-by: Janne Savolainen --- src/main/router.ts | 5 +-- .../delete-release-route.injectable.ts | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/main/routes/helm/releases/delete-release-route.injectable.ts diff --git a/src/main/router.ts b/src/main/router.ts index c765e73268..e20bba1e65 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -11,7 +11,7 @@ import path from "path"; import { readFile } from "fs-extra"; import type { Cluster } from "../common/cluster/cluster"; import { apiPrefix, appName, publicPath } from "../common/vars"; -import { HelmApiRoute, KubeconfigRoute, MetricsRoute, PortForwardRoute, ResourceApplierApiRoute, VersionRoute } from "./routes"; +import { KubeconfigRoute, MetricsRoute, PortForwardRoute, ResourceApplierApiRoute, VersionRoute } from "./routes"; import logger from "./logger"; export interface RouterRequestOpts { @@ -182,9 +182,6 @@ export class Router { this.router.add({ method: "get", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForward); this.router.add({ method: "delete", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForwardStop); - // Helm API - this.router.add({ method: "delete", path: `${apiPrefix}/v2/releases/{namespace}/{release}` }, HelmApiRoute.deleteRelease); - // Resource Applier API this.router.add({ method: "post", path: `${apiPrefix}/stack` }, ResourceApplierApiRoute.applyResource); this.router.add({ method: "patch", path: `${apiPrefix}/stack` }, ResourceApplierApiRoute.patchResource); diff --git a/src/main/routes/helm/releases/delete-release-route.injectable.ts b/src/main/routes/helm/releases/delete-release-route.injectable.ts new file mode 100644 index 0000000000..0039bdb5f9 --- /dev/null +++ b/src/main/routes/helm/releases/delete-release-route.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 { apiPrefix } from "../../../../common/vars"; +import type { LensApiRequest } from "../../../router"; +import { helmService } from "../../../helm/helm-service"; +import { respondJson, respondText } from "../../../utils/http-responses"; +import { routeInjectionToken } from "../../../router/router.injectable"; +import { getInjectable } from "@ogre-tools/injectable"; +import logger from "../../../logger"; + +const deleteReleaseRouteInjectable = getInjectable({ + id: "delete-release-route", + + instantiate: () => ({ + method: "delete", + path: `${apiPrefix}/v2/releases/{namespace}/{release}`, + + handler: async (request: LensApiRequest) => { + const { cluster, params, response } = request; + + try { + const result = await helmService.deleteRelease(cluster, params.release, params.namespace); + + respondJson(response, result); + } catch (error) { + logger.debug(error); + respondText(response, error?.toString() || "Error deleting release", 422); + } + }, + }), + + injectionToken: routeInjectionToken, +}); + +export default deleteReleaseRouteInjectable;