in src/commands/devhub/aksAutomatedDeployments.ts [14:106]
export default async function aksAutomatedDeployments(_context: IActionContext, target: unknown): Promise<void> {
const cloudExplorer = await k8s.extension.cloudExplorer.v1;
const clusterExplorer = await k8s.extension.clusterExplorer.v1;
const sessionProvider = await getReadySessionProvider();
if (failed(sessionProvider)) {
vscode.window.showErrorMessage(sessionProvider.error);
return;
}
const kubectl = await k8s.extension.kubectl.v1;
if (!kubectl.available) {
vscode.window.showErrorMessage(`Kubectl is unavailable.`);
return;
}
if (!cloudExplorer.available) {
vscode.window.showWarningMessage(`Cloud explorer is unavailable.`);
return;
}
if (!clusterExplorer.available) {
vscode.window.showWarningMessage(`Cluster explorer is unavailable.`);
return;
}
const clusterNode = getAksClusterTreeNode(target, cloudExplorer);
if (failed(clusterNode)) {
vscode.window.showErrorMessage(clusterNode.error);
return;
}
const clusterInfo = await getKubernetesClusterInfo(sessionProvider.result, target, cloudExplorer, clusterExplorer);
if (failed(clusterInfo)) {
vscode.window.showErrorMessage(clusterInfo.error);
return;
}
const extension = getExtension();
if (failed(extension)) {
vscode.window.showErrorMessage(extension.error);
return;
}
const graphClient = msGraph.createGraphClient(sessionProvider.result);
if (!graphClient) {
vscode.window.showErrorMessage(`Could not create Graph client.`);
return;
}
const subscriptionId = clusterNode.result.subscriptionId;
if (!subscriptionId) {
vscode.window.showErrorMessage(`Subscription ID is not available.`);
return;
}
const location = clusterNode.result.clusterResource.location;
if (!location) {
vscode.window.showErrorMessage(`Cluster location is not available.`);
return;
}
//DevHub Client Creation
const credential = getCredential(sessionProvider.result);
const devHubClient = new DeveloperHubServiceClient(credential, subscriptionId);
// GitHub OAuth request via DevHub
// Currently the GitHub OAuth flow is initiated everytime the command is called but simply returns the token if already authenticated
const gitHubToken = await checkAndAuthenticateWithGitHub(devHubClient, location);
if (!gitHubToken) {
vscode.window.showWarningMessage(`Could Not Authenticate with GitHub`);
return;
}
const octokitClient = new Octokit({
auth: gitHubToken,
});
const dataProvider = new AutomatedDeploymentsDataProvider(
sessionProvider.result,
subscriptionId,
devHubClient,
octokitClient,
graphClient,
kubectl,
);
const panel = new AutomatedDeploymentsPanel(extension.result.extensionUri);
panel.show(dataProvider);
}