export default async function periscope()

in src/commands/periscope/periscope.ts [27:82]


export default async function periscope(_context: IActionContext, target: unknown): Promise<void> {
    const kubectl = await k8s.extension.kubectl.v1;
    if (!kubectl.available) {
        return;
    }

    const sessionProvider = await getReadySessionProvider();
    if (failed(sessionProvider)) {
        vscode.window.showErrorMessage(sessionProvider.error);
        return;
    }

    const cloudExplorer = await k8s.extension.cloudExplorer.v1;

    const clusterNode = getAksClusterTreeNode(target, cloudExplorer);
    if (failed(clusterNode)) {
        vscode.window.showErrorMessage(clusterNode.error);
        return;
    }

    // Once Periscope will support usgov endpoints all we need is to remove this check.
    // I have done background plumbing for vscode to fetch downlodable link from correct endpoint.
    const cloudName = getEnvironment().name;
    if (cloudName !== "AzureCloud") {
        vscode.window.showInformationMessage(`Periscope is not supported in ${cloudName} cloud.`);
        return;
    }

    const properties = await longRunning(`Getting properties for cluster ${clusterNode.result.name}.`, () =>
        getManagedCluster(
            sessionProvider.result,
            clusterNode.result.subscriptionId,
            clusterNode.result.resourceGroupName,
            clusterNode.result.name,
        ),
    );
    if (failed(properties)) {
        vscode.window.showErrorMessage(properties.error);
        return undefined;
    }

    const kubeconfig = await longRunning(`Retrieving kubeconfig for cluster ${clusterNode.result.name}.`, () =>
        getKubeconfigYaml(
            sessionProvider.result,
            clusterNode.result.subscriptionId,
            clusterNode.result.resourceGroupName,
            properties.result,
        ),
    );
    if (failed(kubeconfig)) {
        vscode.window.showErrorMessage(kubeconfig.error);
        return undefined;
    }

    await runAKSPeriscope(kubectl, clusterNode.result, kubeconfig.result);
}