From 91ab6bf3ce8c09b2b755c0431382d9c84badb6e0 Mon Sep 17 00:00:00 2001 From: rdeepc <12953177+rdeepc@users.noreply.github.com> Date: Sat, 10 Jul 2021 00:33:44 -0400 Subject: [PATCH] Added ability to add custom port on pod and service port forwarding - pod-container-port fixed init async and active port checking - service-port-component fixed init async and active port checking - port-forward-route promise and response fix Signed-off-by: rdeepc <12953177+rdeepc@users.noreply.github.com> --- src/main/routes/port-forward-route.ts | 25 +++++++++---------- .../service-port-component.tsx | 11 ++++---- .../+workloads-pods/pod-container-port.tsx | 12 +++++---- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/main/routes/port-forward-route.ts b/src/main/routes/port-forward-route.ts index 88d7a087de..183f3bf6c1 100644 --- a/src/main/routes/port-forward-route.ts +++ b/src/main/routes/port-forward-route.ts @@ -45,10 +45,10 @@ class PortForward { static getPortforward(forward: PortForwardArgs) { return PortForward.portForwards.find((pf) => ( pf.clusterId == forward.clusterId && - pf.kind == forward.kind && - pf.name == forward.name && - pf.namespace == forward.namespace && - pf.port == forward.port + pf.kind == forward.kind && + pf.name == forward.name && + pf.namespace == forward.namespace && + pf.port == forward.port )); } @@ -59,7 +59,7 @@ class PortForward { public name: string; public port: string; public internalPort?: number; - public forwardPort: string; + public forwardPort?: string; constructor(public kubeConfig: string, args: PortForwardArgs) { this.clusterId = args.clusterId; @@ -156,7 +156,7 @@ export class PortForwardRoute { portForward.open(); respondJson(response, {port: portForward.forwardPort}); - } catch (e) { + } catch (error) { return respondJson(response, { message: `Failed to forward port ${port} to ${forwardPort}` }, 400); @@ -172,11 +172,7 @@ export class PortForwardRoute { namespace, port, forwardPort }); - let forwardedPort = -1; - - if (portForward) { - forwardedPort = Number(portForward.forwardPort); - } + const forwardedPort = portForward?.forwardPort?? null; respondJson(response, {port: forwardedPort}); } @@ -190,8 +186,11 @@ export class PortForwardRoute { namespace, port, forwardPort, }); - portForward.stop().then( () => { + try { + await portForward.stop(); respondJson(response, {status: true}); - }).catch(error => logger.error(error)); + } catch (error) { + logger.error(error); + } } } diff --git a/src/renderer/components/+network-services/service-port-component.tsx b/src/renderer/components/+network-services/service-port-component.tsx index 864cec3d8b..8ac56a1202 100644 --- a/src/renderer/components/+network-services/service-port-component.tsx +++ b/src/renderer/components/+network-services/service-port-component.tsx @@ -43,7 +43,7 @@ interface PortForwardResult { @observer export class ServicePortComponent extends React.Component { @observable waiting = false; - @observable forwardPort = -1; + @observable forwardPort: number | null; @observable isPortForwarded = false; constructor(props: Props) { @@ -53,7 +53,9 @@ export class ServicePortComponent extends React.Component { } init() { - this.checkExistingPortForwarding().then(); + this.checkExistingPortForwarding().catch(error => { + console.error(error); + }); } async checkExistingPortForwarding() { @@ -62,7 +64,7 @@ export class ServicePortComponent extends React.Component { const activePort = response.port; - if (activePort && activePort != -1) { + if (activePort) { this.forwardPort = activePort; this.isPortForwarded = true; } @@ -78,7 +80,6 @@ export class ServicePortComponent extends React.Component { this.forwardPort = response.port; this.isPortForwarded = true; - } catch(error) { Notifications.error(error); } finally { @@ -104,7 +105,7 @@ export class ServicePortComponent extends React.Component { render() { const { port } = this.props; - if (this.forwardPort == -1) { + if (this.forwardPort == null) { this.forwardPort = port.port; } diff --git a/src/renderer/components/+workloads-pods/pod-container-port.tsx b/src/renderer/components/+workloads-pods/pod-container-port.tsx index 9c5e670bab..68065ce4e7 100644 --- a/src/renderer/components/+workloads-pods/pod-container-port.tsx +++ b/src/renderer/components/+workloads-pods/pod-container-port.tsx @@ -47,7 +47,7 @@ interface PortForwardResult { @observer export class PodContainerPort extends React.Component { @observable waiting = false; - @observable forwardPort = -1; + @observable forwardPort: number | null; @observable isPortForwarded = false; constructor(props: Props) { @@ -57,7 +57,9 @@ export class PodContainerPort extends React.Component { } init() { - this.checkExistingPortForwarding().then(); + this.checkExistingPortForwarding().catch(error => { + console.error(error); + }); } async checkExistingPortForwarding() { @@ -66,7 +68,7 @@ export class PodContainerPort extends React.Component { const activePort = response.port; - if (activePort && activePort != -1) { + if (activePort) { this.forwardPort = activePort; this.isPortForwarded = true; } @@ -109,14 +111,14 @@ export class PodContainerPort extends React.Component { const { name, containerPort, protocol } = port; const text = `${name ? `${name}: ` : ""}${containerPort}/${protocol}`; - if (this.forwardPort == -1) { + if (this.forwardPort == null) { this.forwardPort = containerPort; } const portForwardAction = async () => { if (this.isPortForwarded) { await this.stopPortForward(); - }else { + } else { await this.portForward(); } };