From 954912cefaff5906dadaea55e5432b77836efea7 Mon Sep 17 00:00:00 2001 From: Jim Ehrismann Date: Tue, 5 Oct 2021 09:38:45 -0400 Subject: [PATCH] made port and forwardPort query params and cleaned up port-forward routing paths Signed-off-by: Jim Ehrismann --- src/main/router.ts | 10 +++++----- src/main/routes/port-forward-route.ts | 18 ++++++++++++------ .../port-forward/port-forward.store.ts | 8 ++++---- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/router.ts b/src/main/router.ts index 8706ff1f08..d17c41e861 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -179,11 +179,11 @@ export class Router { this.router.add({ method: "post", path: `${apiPrefix}/metrics` }, MetricsRoute.routeMetrics); this.router.add({ method: "get", path: `${apiPrefix}/metrics/providers` }, MetricsRoute.routeMetricsProviders); - // Port-forward API - this.router.add({ method: "post", path: `${apiPrefix}/pods/{namespace}/{resourceType}/{resourceName}/port-forward/{port}/{forwardPort}` }, PortForwardRoute.routePortForward); - this.router.add({ method: "get", path: `${apiPrefix}/pods/{namespace}/{resourceType}/{resourceName}/port-forward/{port}/{forwardPort}` }, PortForwardRoute.routeCurrentPortForward); - this.router.add({ method: "get", path: `${apiPrefix}/port-forwards` }, PortForwardRoute.routeAllPortForwards); - this.router.add({ method: "delete", path: `${apiPrefix}/pods/{namespace}/{resourceType}/{resourceName}/port-forward/{port}/{forwardPort}` }, PortForwardRoute.routeCurrentPortForwardStop); + // 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}` }, PortForwardRoute.routePortForward); + this.router.add({ method: "get", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForward); + this.router.add({ method: "get", path: `${apiPrefix}/pods/port-forwards` }, PortForwardRoute.routeAllPortForwards); + this.router.add({ method: "delete", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForwardStop); // Helm API this.router.add({ method: "get", path: `${apiPrefix}/v2/charts` }, HelmApiRoute.listCharts); diff --git a/src/main/routes/port-forward-route.ts b/src/main/routes/port-forward-route.ts index efc9d791bb..0904ab7793 100644 --- a/src/main/routes/port-forward-route.ts +++ b/src/main/routes/port-forward-route.ts @@ -115,8 +115,10 @@ class PortForward { export class PortForwardRoute { static async routePortForward(request: LensApiRequest) { - const { params, response, cluster } = request; - const { namespace, port, forwardPort, resourceType, resourceName } = params; + const { params, query, response, cluster } = request; + const { namespace, resourceType, resourceName } = params; + const port = query.get("port"); + const forwardPort = query.get("forwardPort"); try { let portForward = PortForward.getPortforward({ @@ -164,8 +166,10 @@ export class PortForwardRoute { } static async routeCurrentPortForward(request: LensApiRequest) { - const { params, response, cluster } = request; - const { namespace, port, forwardPort, resourceType, resourceName } = params; + const { params, query, response, cluster } = request; + const { namespace, resourceType, resourceName } = params; + const port = query.get("port"); + const forwardPort = query.get("forwardPort"); const portForward = PortForward.getPortforward({ clusterId: cluster.id, kind: resourceType, name: resourceName, @@ -193,8 +197,10 @@ export class PortForwardRoute { } static async routeCurrentPortForwardStop(request: LensApiRequest) { - const { params, response, cluster } = request; - const { namespace, port, forwardPort, resourceType, resourceName } = params; + const { params, query, response, cluster } = request; + const { namespace, resourceType, resourceName } = params; + const port = query.get("port"); + const forwardPort = query.get("forwardPort"); const portForward = PortForward.getPortforward({ clusterId: cluster.id, kind: resourceType, name: resourceName, diff --git a/src/renderer/port-forward/port-forward.store.ts b/src/renderer/port-forward/port-forward.store.ts index 96e1b6e34e..546e1eeaee 100644 --- a/src/renderer/port-forward/port-forward.store.ts +++ b/src/renderer/port-forward/port-forward.store.ts @@ -97,7 +97,7 @@ export async function addPortForward(portForward: ForwardedPort): Promise(`/pods/${portForward.namespace}/${portForward.kind}/${portForward.name}/port-forward/${portForward.port}/${portForward.forwardPort}`, {}); + response = await apiBase.post(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`, {}); if (response?.port && response.port != +portForward.forwardPort) { logger.warn(`specified ${portForward.forwardPort} got ${response.port}`); @@ -114,7 +114,7 @@ export async function getPortForward(portForward: ForwardedPort): Promise(`/pods/${portForward.namespace}/${portForward.kind}/${portForward.name}/port-forward/${portForward.port}/${portForward.forwardPort}`, {}); + response = await apiBase.get(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`, {}); } catch (error) { logger.warn(error); // don't care, caller must check } @@ -140,7 +140,7 @@ export async function modifyPortForward(portForward: ForwardedPort, desiredPort: export async function removePortForward(portForward: ForwardedPort) { try { - await apiBase.del(`/pods/${portForward.namespace}/${portForward.kind}/${portForward.name}/port-forward/${portForward.port}/${portForward.forwardPort}`, {}); + await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`, {}); await waitUntilFree(+portForward.forwardPort, 200, 1000); } catch (error) { logger.warn(error); // don't care, caller must check @@ -150,7 +150,7 @@ export async function removePortForward(portForward: ForwardedPort) { export async function getPortForwards(): Promise { try { - const response = await apiBase.get(`/port-forwards`, {}); + const response = await apiBase.get(`/pods/port-forwards`, {}); return response.portForwards; } catch (error) {