From 0673c98f4eab95263a0d0776900ac56b013c3546 Mon Sep 17 00:00:00 2001 From: Jim Ehrismann <40840436+jim-docker@users.noreply.github.com> Date: Mon, 29 Nov 2021 12:21:45 -0500 Subject: [PATCH] Add a query param for filtering port forwards by clusterId (#4441) * Add a query param for filtering port forwards by clusterId Signed-off-by: Jim Ehrismann * pass clusterId query as param Signed-off-by: Jim Ehrismann * pass queries as params for other apiBase calls, for consistency Signed-off-by: Jim Ehrismann --- src/main/routes/port-forward-route.ts | 11 +++++- .../port-forward/port-forward.store.ts | 38 ++++++++----------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/main/routes/port-forward-route.ts b/src/main/routes/port-forward-route.ts index fe425df48d..6392c70ed9 100644 --- a/src/main/routes/port-forward-route.ts +++ b/src/main/routes/port-forward-route.ts @@ -189,9 +189,10 @@ export class PortForwardRoute { } static async routeAllPortForwards(request: LensApiRequest) { - const { response } = request; + const { query, response } = request; + const clusterId = query.get("clusterId"); - const portForwards: PortForwardArgs[] = PortForward.portForwards.map(f => ( + let portForwards: PortForwardArgs[] = PortForward.portForwards.map(f => ( { clusterId: f.clusterId, kind: f.kind, @@ -203,6 +204,12 @@ export class PortForwardRoute { }), ); + if (clusterId) { + // filter out any not for this cluster + portForwards = portForwards.filter(pf => pf.clusterId == clusterId); + + } + respondJson(response, { portForwards }); } diff --git a/src/renderer/port-forward/port-forward.store.ts b/src/renderer/port-forward/port-forward.store.ts index 8a8d7c6e62..57c9d8a1c4 100644 --- a/src/renderer/port-forward/port-forward.store.ts +++ b/src/renderer/port-forward/port-forward.store.ts @@ -60,10 +60,8 @@ export class PortForwardStore extends ItemStore { loadAll() { return this.loadItems(async () => { - let portForwards = await getPortForwards(); + const portForwards = await getPortForwards(getHostedClusterId()); - // filter out any not for this cluster - portForwards = portForwards.filter(pf => pf.clusterId == getHostedClusterId()); this.storage.set(portForwards); this.reset(); @@ -101,12 +99,13 @@ interface PortForwardsResult { } export async function addPortForward(portForward: ForwardedPort): Promise { + const { port, forwardPort } = portForward; let response: PortForwardResult; try { const protocol = portForward.protocol ?? "http"; - response = await apiBase.post(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}&protocol=${protocol}`); + response = await apiBase.post(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}`, { query: { port, forwardPort, protocol }}); // expecting the received port to be the specified port, unless the specified port is 0, which indicates any available port is suitable if (portForward.forwardPort && response?.port && response.port != +portForward.forwardPort) { @@ -114,29 +113,22 @@ export async function addPortForward(portForward: ForwardedPort): Promise { + const { port, forwardPort, protocol } = portForward; let response: PortForwardResult; try { - response = await apiBase.get(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}${getProtocolQuery(portForward.protocol)}`); + response = await apiBase.get(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}`, { query: { port, forwardPort, protocol }}); } catch (error) { logger.warn("[PORT-FORWARD-STORE] Error getting port-forward:", error, portForward); - throw(error); + throw (error); } return response?.port; @@ -144,7 +136,7 @@ export async function getPortForward(portForward: ForwardedPort): Promise { let port = 0; - + await removePortForward(portForward); portForward.forwardPort = desiredPort; port = await addPortForward(portForward); @@ -156,24 +148,26 @@ export async function modifyPortForward(portForward: ForwardedPort, desiredPort: export async function removePortForward(portForward: ForwardedPort) { + const { port, forwardPort } = portForward; + try { - await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`); - await waitUntilFree(+portForward.forwardPort, 200, 1000); + await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}`, { query: { port, forwardPort }}); + await waitUntilFree(+forwardPort, 200, 1000); } catch (error) { logger.warn("[PORT-FORWARD-STORE] Error removing port-forward:", error, portForward); - throw(error); + throw (error); } portForwardStore.reset(); } -export async function getPortForwards(): Promise { +export async function getPortForwards(clusterId?: string): Promise { try { - const response = await apiBase.get(`/pods/port-forwards`); + const response = await apiBase.get("/pods/port-forwards", { query: { clusterId }}); return response.portForwards; } catch (error) { logger.warn("[PORT-FORWARD-STORE] Error getting all port-forwards:", error); - + return []; } }