1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

made port and forwardPort query params and cleaned up port-forward routing paths

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann 2021-10-05 09:38:45 -04:00
parent 6d63c39b11
commit 954912cefa
3 changed files with 21 additions and 15 deletions

View File

@ -179,11 +179,11 @@ export class Router {
this.router.add({ method: "post", path: `${apiPrefix}/metrics` }, MetricsRoute.routeMetrics); this.router.add({ method: "post", path: `${apiPrefix}/metrics` }, MetricsRoute.routeMetrics);
this.router.add({ method: "get", path: `${apiPrefix}/metrics/providers` }, MetricsRoute.routeMetricsProviders); this.router.add({ method: "get", path: `${apiPrefix}/metrics/providers` }, MetricsRoute.routeMetricsProviders);
// Port-forward API // Port-forward API (the container port and local forwarding port are obtained from the query parameters)
this.router.add({ method: "post", path: `${apiPrefix}/pods/{namespace}/{resourceType}/{resourceName}/port-forward/{port}/{forwardPort}` }, PortForwardRoute.routePortForward); this.router.add({ method: "post", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, 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}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForward);
this.router.add({ method: "get", path: `${apiPrefix}/port-forwards` }, PortForwardRoute.routeAllPortForwards); this.router.add({ method: "get", path: `${apiPrefix}/pods/port-forwards` }, PortForwardRoute.routeAllPortForwards);
this.router.add({ method: "delete", path: `${apiPrefix}/pods/{namespace}/{resourceType}/{resourceName}/port-forward/{port}/{forwardPort}` }, PortForwardRoute.routeCurrentPortForwardStop); this.router.add({ method: "delete", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForwardStop);
// Helm API // Helm API
this.router.add({ method: "get", path: `${apiPrefix}/v2/charts` }, HelmApiRoute.listCharts); this.router.add({ method: "get", path: `${apiPrefix}/v2/charts` }, HelmApiRoute.listCharts);

View File

@ -115,8 +115,10 @@ class PortForward {
export class PortForwardRoute { export class PortForwardRoute {
static async routePortForward(request: LensApiRequest) { static async routePortForward(request: LensApiRequest) {
const { params, response, cluster } = request; const { params, query, response, cluster } = request;
const { namespace, port, forwardPort, resourceType, resourceName } = params; const { namespace, resourceType, resourceName } = params;
const port = query.get("port");
const forwardPort = query.get("forwardPort");
try { try {
let portForward = PortForward.getPortforward({ let portForward = PortForward.getPortforward({
@ -164,8 +166,10 @@ export class PortForwardRoute {
} }
static async routeCurrentPortForward(request: LensApiRequest) { static async routeCurrentPortForward(request: LensApiRequest) {
const { params, response, cluster } = request; const { params, query, response, cluster } = request;
const { namespace, port, forwardPort, resourceType, resourceName } = params; const { namespace, resourceType, resourceName } = params;
const port = query.get("port");
const forwardPort = query.get("forwardPort");
const portForward = PortForward.getPortforward({ const portForward = PortForward.getPortforward({
clusterId: cluster.id, kind: resourceType, name: resourceName, clusterId: cluster.id, kind: resourceType, name: resourceName,
@ -193,8 +197,10 @@ export class PortForwardRoute {
} }
static async routeCurrentPortForwardStop(request: LensApiRequest) { static async routeCurrentPortForwardStop(request: LensApiRequest) {
const { params, response, cluster } = request; const { params, query, response, cluster } = request;
const { namespace, port, forwardPort, resourceType, resourceName } = params; const { namespace, resourceType, resourceName } = params;
const port = query.get("port");
const forwardPort = query.get("forwardPort");
const portForward = PortForward.getPortforward({ const portForward = PortForward.getPortforward({
clusterId: cluster.id, kind: resourceType, name: resourceName, clusterId: cluster.id, kind: resourceType, name: resourceName,

View File

@ -97,7 +97,7 @@ export async function addPortForward(portForward: ForwardedPort): Promise<number
let response: PortForwardResult; let response: PortForwardResult;
try { try {
response = await apiBase.post<PortForwardResult>(`/pods/${portForward.namespace}/${portForward.kind}/${portForward.name}/port-forward/${portForward.port}/${portForward.forwardPort}`, {}); response = await apiBase.post<PortForwardResult>(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`, {});
if (response?.port && response.port != +portForward.forwardPort) { if (response?.port && response.port != +portForward.forwardPort) {
logger.warn(`specified ${portForward.forwardPort} got ${response.port}`); logger.warn(`specified ${portForward.forwardPort} got ${response.port}`);
@ -114,7 +114,7 @@ export async function getPortForward(portForward: ForwardedPort): Promise<number
let response: PortForwardResult; let response: PortForwardResult;
try { try {
response = await apiBase.get<PortForwardResult>(`/pods/${portForward.namespace}/${portForward.kind}/${portForward.name}/port-forward/${portForward.port}/${portForward.forwardPort}`, {}); response = await apiBase.get<PortForwardResult>(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`, {});
} catch (error) { } catch (error) {
logger.warn(error); // don't care, caller must check 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) { export async function removePortForward(portForward: ForwardedPort) {
try { 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); await waitUntilFree(+portForward.forwardPort, 200, 1000);
} catch (error) { } catch (error) {
logger.warn(error); // don't care, caller must check logger.warn(error); // don't care, caller must check
@ -150,7 +150,7 @@ export async function removePortForward(portForward: ForwardedPort) {
export async function getPortForwards(): Promise<ForwardedPort[]> { export async function getPortForwards(): Promise<ForwardedPort[]> {
try { try {
const response = await apiBase.get<PortForwardsResult>(`/port-forwards`, {}); const response = await apiBase.get<PortForwardsResult>(`/pods/port-forwards`, {});
return response.portForwards; return response.portForwards;
} catch (error) { } catch (error) {