export default async function aksAutomatedDeployments()

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