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

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 <jehrismann@mirantis.com>

* pass clusterId query as param

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>

* pass queries as params for other apiBase calls, for consistency

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann 2021-11-29 12:21:45 -05:00 committed by GitHub
parent 406f595011
commit 0673c98f4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 24 deletions

View File

@ -189,9 +189,10 @@ export class PortForwardRoute {
} }
static async routeAllPortForwards(request: LensApiRequest) { 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, clusterId: f.clusterId,
kind: f.kind, 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 }); respondJson(response, { portForwards });
} }

View File

@ -60,10 +60,8 @@ export class PortForwardStore extends ItemStore<PortForwardItem> {
loadAll() { loadAll() {
return this.loadItems(async () => { 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.storage.set(portForwards);
this.reset(); this.reset();
@ -101,12 +99,13 @@ interface PortForwardsResult {
} }
export async function addPortForward(portForward: ForwardedPort): Promise<number> { export async function addPortForward(portForward: ForwardedPort): Promise<number> {
const { port, forwardPort } = portForward;
let response: PortForwardResult; let response: PortForwardResult;
try { try {
const protocol = portForward.protocol ?? "http"; const protocol = portForward.protocol ?? "http";
response = await apiBase.post<PortForwardResult>(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}&protocol=${protocol}`); response = await apiBase.post<PortForwardResult>(`/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 // 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) { if (portForward.forwardPort && response?.port && response.port != +portForward.forwardPort) {
@ -121,19 +120,12 @@ export async function addPortForward(portForward: ForwardedPort): Promise<number
return response?.port; return response?.port;
} }
function getProtocolQuery(protocol: string) {
if (protocol) {
return `&protocol=${protocol}`;
}
return "";
}
export async function getPortForward(portForward: ForwardedPort): Promise<number> { export async function getPortForward(portForward: ForwardedPort): Promise<number> {
const { port, forwardPort, protocol } = portForward;
let response: PortForwardResult; let response: PortForwardResult;
try { try {
response = await apiBase.get<PortForwardResult>(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}${getProtocolQuery(portForward.protocol)}`); response = await apiBase.get<PortForwardResult>(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}`, { query: { port, forwardPort, protocol }});
} catch (error) { } catch (error) {
logger.warn("[PORT-FORWARD-STORE] Error getting port-forward:", error, portForward); logger.warn("[PORT-FORWARD-STORE] Error getting port-forward:", error, portForward);
throw (error); throw (error);
@ -156,9 +148,11 @@ export async function modifyPortForward(portForward: ForwardedPort, desiredPort:
export async function removePortForward(portForward: ForwardedPort) { export async function removePortForward(portForward: ForwardedPort) {
const { port, forwardPort } = portForward;
try { try {
await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}?port=${portForward.port}&forwardPort=${portForward.forwardPort}`); await apiBase.del(`/pods/port-forward/${portForward.namespace}/${portForward.kind}/${portForward.name}`, { query: { port, forwardPort }});
await waitUntilFree(+portForward.forwardPort, 200, 1000); await waitUntilFree(+forwardPort, 200, 1000);
} catch (error) { } catch (error) {
logger.warn("[PORT-FORWARD-STORE] Error removing port-forward:", error, portForward); logger.warn("[PORT-FORWARD-STORE] Error removing port-forward:", error, portForward);
throw (error); throw (error);
@ -166,9 +160,9 @@ export async function removePortForward(portForward: ForwardedPort) {
portForwardStore.reset(); portForwardStore.reset();
} }
export async function getPortForwards(): Promise<ForwardedPort[]> { export async function getPortForwards(clusterId?: string): Promise<ForwardedPort[]> {
try { try {
const response = await apiBase.get<PortForwardsResult>(`/pods/port-forwards`); const response = await apiBase.get<PortForwardsResult>("/pods/port-forwards", { query: { clusterId }});
return response.portForwards; return response.portForwards;
} catch (error) { } catch (error) {