in src/commands/utils/clusterfilter.ts [13:77]
export default async function aksClusterFilter(_context: IActionContext, target: unknown): Promise<void> {
const cloudExplorer = await k8s.extension.cloudExplorer.v1;
const subscriptionNode = getAksClusterSubscriptionNode(target, cloudExplorer);
if (failed(subscriptionNode)) {
vscode.window.showErrorMessage(subscriptionNode.error);
return;
}
const sessionProvider = await getReadySessionProvider();
if (failed(sessionProvider)) {
vscode.window.showErrorMessage(sessionProvider.error);
return;
}
const extension = getExtension();
if (failed(extension)) {
vscode.window.showErrorMessage(extension.error);
return;
}
const filteredClusters = await getUniqueClusters();
const clusterList = await getClusterList(
subscriptionNode.result.name,
subscriptionNode.result.subscriptionId,
sessionProvider.result,
);
if (failed(clusterList)) {
vscode.window.showErrorMessage(clusterList.error);
return;
}
const quickPickItems: ClusterQuickPickItem[] = clusterList.result.map((cluster: AksClusterAndFleet) => {
return {
label: cluster.name,
description: cluster.name,
picked: filteredClusters.some(
(filtered) =>
filtered.clusterName === cluster.name && filtered.subscriptionId === cluster.subscriptionId,
),
Cluster: {
clusterName: cluster.name,
subscriptionId: cluster.subscriptionId,
},
};
});
// show picked items at the top
quickPickItems.sort((itemA, itemB) => (itemA.picked === itemB.picked ? 0 : itemA.picked ? -1 : 1));
const selectedItems = await vscode.window.showQuickPick(quickPickItems, {
canPickMany: true,
placeHolder: "Select Cluster",
});
// Set Cluster Instance
const newFilteredClusters = selectedItems
? [
...selectedItems.map((item) => item.Cluster), // Retain filters in any other tenants.
]
: [];
await setFilteredClusters(newFilteredClusters, clusterList.result);
}