From 1853c23e5ef074d7afcab2e04cbf2f12bf7dc46c Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Fri, 11 Feb 2022 11:25:38 +0200 Subject: [PATCH] Switch to using injectable to setup route for stopping current port forward Signed-off-by: Janne Savolainen --- src/main/router.ts | 1 - src/main/routes/port-forward-route.ts | 24 ---------- ...p-current-port-forward-route.injectable.ts | 48 +++++++++++++++++++ 3 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 src/main/routes/port-forward2/stop-current-port-forward-route.injectable.ts diff --git a/src/main/router.ts b/src/main/router.ts index f270db621d..889d349397 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -180,7 +180,6 @@ export class Router { // Port-forward API (the container port and local forwarding port are obtained from the query parameters) this.router.add({ method: "post", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, this.dependencies.routePortForward); 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); } } diff --git a/src/main/routes/port-forward-route.ts b/src/main/routes/port-forward-route.ts index 4d688d68a6..6b849ab9d9 100644 --- a/src/main/routes/port-forward-route.ts +++ b/src/main/routes/port-forward-route.ts @@ -4,7 +4,6 @@ */ import type { LensApiRequest } from "../router"; -import logger from "../logger"; import { respondJson } from "../utils/http-responses"; import { PortForward } from "./port-forward/port-forward"; @@ -22,27 +21,4 @@ export class PortForwardRoute { respondJson(response, { port: portForward?.forwardPort ?? null }); } - - static async routeCurrentPortForwardStop(request: LensApiRequest) { - const { params, query, response, cluster } = request; - const { namespace, resourceType, resourceName } = params; - const port = Number(query.get("port")); - const forwardPort = Number(query.get("forwardPort")); - - const portForward = PortForward.getPortforward({ - clusterId: cluster.id, kind: resourceType, name: resourceName, - namespace, port, forwardPort, - }); - - try { - await portForward.stop(); - respondJson(response, { status: true }); - } catch (error) { - logger.error("[PORT-FORWARD-ROUTE]: error stopping a port-forward", { namespace, port, forwardPort, resourceType, resourceName }); - - return respondJson(response, { - message: `error stopping a forward port ${port}`, - }, 400); - } - } } diff --git a/src/main/routes/port-forward2/stop-current-port-forward-route.injectable.ts b/src/main/routes/port-forward2/stop-current-port-forward-route.injectable.ts new file mode 100644 index 0000000000..c56a3ff1a8 --- /dev/null +++ b/src/main/routes/port-forward2/stop-current-port-forward-route.injectable.ts @@ -0,0 +1,48 @@ +/** + * 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 { routeInjectionToken } from "../../router/router.injectable"; +import type { LensApiRequest } from "../../router"; +import { apiPrefix } from "../../../common/vars"; +import { respondJson } from "../../utils/http-responses"; +import { PortForward } from "../port-forward/port-forward"; +import logger from "../../logger"; + +const stopCurrentPortForward = async (request: LensApiRequest) => { + const { params, query, response, cluster } = request; + const { namespace, resourceType, resourceName } = params; + const port = Number(query.get("port")); + const forwardPort = Number(query.get("forwardPort")); + + const portForward = PortForward.getPortforward({ + clusterId: cluster.id, kind: resourceType, name: resourceName, + namespace, port, forwardPort, + }); + + try { + await portForward.stop(); + respondJson(response, { status: true }); + } catch (error) { + logger.error("[PORT-FORWARD-ROUTE]: error stopping a port-forward", { namespace, port, forwardPort, resourceType, resourceName }); + + return respondJson(response, { + message: `error stopping a forward port ${port}`, + }, 400); + } +}; + +const stopCurrentPortForwardRouteInjectable = getInjectable({ + id: "stop-current-port-forward-route", + + instantiate: () => ({ + method: "delete", + path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}`, + handler: stopCurrentPortForward, + }), + + injectionToken: routeInjectionToken, +}); + +export default stopCurrentPortForwardRouteInjectable;