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:
parent
406f595011
commit
0673c98f4e
@ -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 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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) {
|
||||||
@ -114,29 +113,22 @@ export async function addPortForward(portForward: ForwardedPort): Promise<number
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.warn("[PORT-FORWARD-STORE] Error adding port-forward:", error, portForward);
|
logger.warn("[PORT-FORWARD-STORE] Error adding port-forward:", error, portForward);
|
||||||
throw(error);
|
throw (error);
|
||||||
}
|
}
|
||||||
portForwardStore.reset();
|
portForwardStore.reset();
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response?.port;
|
return response?.port;
|
||||||
@ -156,19 +148,21 @@ 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);
|
||||||
}
|
}
|
||||||
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) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user