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