export default async function aksClusterFilter()

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);
}