Skip to content

Commit 8116b95

Browse files
authored
Add managed environments to command contexts in preparation for managed identity work (#724)
1 parent bbebed9 commit 8116b95

21 files changed

+120
-75
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { type ManagedEnvironment } from "@azure/arm-appcontainers";
7+
import { type ISubscriptionActionContext } from "@microsoft/vscode-azext-utils";
8+
import { type AzureSubscription } from "@microsoft/vscode-azureresources-api";
9+
10+
export interface ManagedEnvironmentRequiredContext extends ISubscriptionActionContext {
11+
subscription: AzureSubscription;
12+
managedEnvironment: ManagedEnvironment;
13+
}

src/commands/createContainerApp/CreateContainerAppContext.ts renamed to src/commands/createContainerApp/ContainerAppCreateContext.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { type ManagedEnvironment } from '@azure/arm-appcontainers';
76
import { type IResourceGroupWizardContext } from '@microsoft/vscode-azext-azureutils';
87
import { type ExecuteActivityContext } from '@microsoft/vscode-azext-utils';
98
import { type SetTelemetryProps } from '../../telemetry/SetTelemetryProps';
@@ -12,11 +11,8 @@ import { type IContainerAppContext } from '../IContainerAppContext';
1211
import { type ImageSourceBaseContext } from '../image/imageSource/ImageSourceContext';
1312
import { type IngressBaseContext } from '../ingress/IngressContext';
1413

15-
export interface CreateContainerAppBaseContext extends IResourceGroupWizardContext, ImageSourceBaseContext, IngressBaseContext, IContainerAppContext, ExecuteActivityContext {
14+
export interface ContainerAppCreateBaseContext extends IResourceGroupWizardContext, ImageSourceBaseContext, IngressBaseContext, IContainerAppContext, ExecuteActivityContext {
1615
newContainerAppName?: string;
17-
18-
managedEnvironmentId?: string;
19-
managedEnvironment?: ManagedEnvironment;
2016
}
2117

22-
export type CreateContainerAppContext = CreateContainerAppBaseContext & SetTelemetryProps<TelemetryProps>;
18+
export type ContainerAppCreateContext = ContainerAppCreateBaseContext & SetTelemetryProps<TelemetryProps>;

src/commands/createContainerApp/ContainerAppCreateStep.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import { ContainerAppItem } from "../../tree/ContainerAppItem";
1212
import { createContainerAppsAPIClient } from "../../utils/azureClients";
1313
import { localize } from "../../utils/localize";
1414
import { getContainerNameForImage } from "../image/imageSource/containerRegistry/getContainerNameForImage";
15-
import { type CreateContainerAppContext } from "./CreateContainerAppContext";
15+
import { type ContainerAppCreateContext } from "./ContainerAppCreateContext";
1616

17-
export class ContainerAppCreateStep extends AzureWizardExecuteStep<CreateContainerAppContext> {
17+
export class ContainerAppCreateStep extends AzureWizardExecuteStep<ContainerAppCreateContext> {
1818
public priority: number = 620;
1919

20-
public async execute(context: CreateContainerAppContext, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
20+
public async execute(context: ContainerAppCreateContext, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
2121
const appClient: ContainerAppsAPIClient = await createContainerAppsAPIClient(context);
2222

2323
const resourceGroupName: string = nonNullValueAndProp(context.resourceGroup, 'name');
@@ -41,7 +41,7 @@ export class ContainerAppCreateStep extends AzureWizardExecuteStep<CreateContain
4141

4242
context.containerApp = ContainerAppItem.CreateContainerAppModel(await appClient.containerApps.beginCreateOrUpdateAndWait(resourceGroupName, containerAppName, {
4343
location: (await LocationListStep.getLocation(context, containerAppsWebProvider)).name,
44-
managedEnvironmentId: context.managedEnvironmentId || context.managedEnvironment?.id,
44+
managedEnvironmentId: context.managedEnvironment?.id,
4545
configuration: {
4646
ingress,
4747
secrets: context.secrets,
@@ -60,11 +60,11 @@ export class ContainerAppCreateStep extends AzureWizardExecuteStep<CreateContain
6060
}));
6161
}
6262

63-
public shouldExecute(context: CreateContainerAppContext): boolean {
63+
public shouldExecute(context: ContainerAppCreateContext): boolean {
6464
return !context.containerApp;
6565
}
6666

67-
public createSuccessOutput(context: CreateContainerAppContext): ExecuteActivityOutput {
67+
public createSuccessOutput(context: ContainerAppCreateContext): ExecuteActivityOutput {
6868
return {
6969
item: new GenericTreeItem(undefined, {
7070
contextValue: createUniversallyUniqueContextValue(['containerAppCreateStepSuccessItem', activitySuccessContext]),
@@ -75,7 +75,7 @@ export class ContainerAppCreateStep extends AzureWizardExecuteStep<CreateContain
7575
};
7676
}
7777

78-
public createFailOutput(context: CreateContainerAppContext): ExecuteActivityOutput {
78+
public createFailOutput(context: ContainerAppCreateContext): ExecuteActivityOutput {
7979
return {
8080
item: new GenericParentTreeItem(undefined, {
8181
contextValue: createUniversallyUniqueContextValue(['containerAppCreateStepFailItem', activityFailContext]),

src/commands/createContainerApp/ContainerAppNameStep.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
import { type ContainerAppsAPIClient } from "@azure/arm-appcontainers";
77
import { getResourceGroupFromId } from "@microsoft/vscode-azext-azureutils";
8-
import { AzureWizardPromptStep, nonNullProp, type ISubscriptionActionContext } from "@microsoft/vscode-azext-utils";
8+
import { AzureWizardPromptStep, nonNullValueAndProp, type ISubscriptionActionContext } from "@microsoft/vscode-azext-utils";
99
import { createContainerAppsAPIClient } from '../../utils/azureClients';
1010
import { localize } from "../../utils/localize";
11-
import { type CreateContainerAppContext } from './CreateContainerAppContext';
11+
import { type ContainerAppCreateContext } from './ContainerAppCreateContext';
1212

13-
export class ContainerAppNameStep extends AzureWizardPromptStep<CreateContainerAppContext> {
13+
export class ContainerAppNameStep extends AzureWizardPromptStep<ContainerAppCreateContext> {
1414
public hideStepCount: boolean = true;
1515

16-
public async prompt(context: CreateContainerAppContext): Promise<void> {
16+
public async prompt(context: ContainerAppCreateContext): Promise<void> {
1717
const prompt: string = localize('containerAppNamePrompt', 'Enter a container app name.');
1818
context.newContainerAppName = (await context.ui.showInputBox({
1919
prompt,
@@ -24,7 +24,7 @@ export class ContainerAppNameStep extends AzureWizardPromptStep<CreateContainerA
2424
context.valuesToMask.push(context.newContainerAppName);
2525
}
2626

27-
public shouldPrompt(context: CreateContainerAppContext): boolean {
27+
public shouldPrompt(context: ContainerAppCreateContext): boolean {
2828
return !context.containerApp && !context.newContainerAppName;
2929
}
3030

@@ -41,8 +41,8 @@ export class ContainerAppNameStep extends AzureWizardPromptStep<CreateContainerA
4141
return undefined;
4242
}
4343

44-
private async validateNameAvailable(context: CreateContainerAppContext, name: string): Promise<string | undefined> {
45-
const resourceGroupName: string = getResourceGroupFromId(nonNullProp(context, 'managedEnvironmentId'));
44+
private async validateNameAvailable(context: ContainerAppCreateContext, name: string): Promise<string | undefined> {
45+
const resourceGroupName: string = getResourceGroupFromId(nonNullValueAndProp(context.managedEnvironment, 'id'));
4646
if (!await ContainerAppNameStep.isNameAvailable(context, resourceGroupName, name)) {
4747
return localize('containerAppExists', 'The container app "{0}" already exists in resource group "{1}".', name, resourceGroupName);
4848
}

src/commands/createContainerApp/createContainerApp.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import { localize } from "../../utils/localize";
1616
import { pickEnvironment } from "../../utils/pickItem/pickEnvironment";
1717
import { ImageSourceListStep } from "../image/imageSource/ImageSourceListStep";
1818
import { IngressPromptStep } from "../ingress/IngressPromptStep";
19+
import { type ContainerAppCreateContext } from "./ContainerAppCreateContext";
1920
import { ContainerAppCreateStep } from "./ContainerAppCreateStep";
2021
import { ContainerAppNameStep } from "./ContainerAppNameStep";
21-
import { type CreateContainerAppContext } from "./CreateContainerAppContext";
2222
import { showContainerAppNotification } from "./showContainerAppNotification";
2323

2424
export async function createContainerApp(context: IActionContext, node?: ManagedEnvironmentItem): Promise<ContainerAppItem> {
@@ -29,25 +29,25 @@ export async function createContainerApp(context: IActionContext, node?: Managed
2929

3030
node ??= await pickEnvironment(context);
3131

32-
const wizardContext: CreateContainerAppContext = {
32+
const wizardContext: ContainerAppCreateContext = {
3333
...context,
3434
...createSubscriptionContext(node.subscription),
3535
...await createActivityContext(),
3636
subscription: node.subscription,
37-
managedEnvironmentId: node.managedEnvironment.id,
37+
managedEnvironment: node.managedEnvironment,
3838
alwaysPromptIngress: true
3939
};
4040

4141
const title: string = localize('createContainerApp', 'Create container app');
4242

43-
const promptSteps: AzureWizardPromptStep<CreateContainerAppContext>[] = [
43+
const promptSteps: AzureWizardPromptStep<ContainerAppCreateContext>[] = [
4444
new ContainerAppNameStep(),
4545
new ImageSourceListStep(),
4646
new IngressPromptStep(),
4747
];
4848

49-
const executeSteps: AzureWizardExecuteStep<CreateContainerAppContext>[] = [
50-
getVerifyProvidersStep<CreateContainerAppContext>(),
49+
const executeSteps: AzureWizardExecuteStep<ContainerAppCreateContext>[] = [
50+
getVerifyProvidersStep<ContainerAppCreateContext>(),
5151
new ContainerAppCreateStep(),
5252
];
5353

@@ -62,7 +62,7 @@ export async function createContainerApp(context: IActionContext, node?: Managed
6262

6363
await LocationListStep.setLocation(wizardContext, nonNullProp(node.resource, 'location'));
6464

65-
const wizard: AzureWizard<CreateContainerAppContext> = new AzureWizard(wizardContext, {
65+
const wizard: AzureWizard<ContainerAppCreateContext> = new AzureWizard(wizardContext, {
6666
title,
6767
promptSteps,
6868
executeSteps,

src/commands/createContainerApp/setQuickStartImage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { quickStartImageName } from "../../constants";
7-
import { type CreateContainerAppContext } from "./CreateContainerAppContext";
7+
import { type ContainerAppCreateContext } from "./ContainerAppCreateContext";
88

9-
export function setQuickStartImage(context: Partial<CreateContainerAppContext>): void {
9+
export function setQuickStartImage(context: Partial<ContainerAppCreateContext>): void {
1010
context.image = quickStartImageName;
1111
context.enableIngress = true;
1212
context.enableExternal = true;

src/commands/createManagedEnvironment/LogAnalyticsCreateStep.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import { type Progress } from "vscode";
99
import { createOperationalInsightsManagementClient } from "../../utils/azureClients";
1010
import { localize } from "../../utils/localize";
1111
import { nonNullProp } from "../../utils/nonNull";
12-
import { type IManagedEnvironmentContext } from "./IManagedEnvironmentContext";
12+
import { type ManagedEnvironmentCreateContext } from "./ManagedEnvironmentCreateContext";
1313

14-
export class LogAnalyticsCreateStep extends AzureWizardExecuteStep<IManagedEnvironmentContext> {
14+
export class LogAnalyticsCreateStep extends AzureWizardExecuteStep<ManagedEnvironmentCreateContext> {
1515
public priority: number = 220;
1616

17-
public async execute(context: IManagedEnvironmentContext, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
17+
public async execute(context: ManagedEnvironmentCreateContext, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
1818
const opClient = await createOperationalInsightsManagementClient(context);
1919
const resourceGroup = nonNullProp(context, 'resourceGroup');
2020
const workspaceName = context.newLogAnalyticsWorkspaceName || nonNullProp(context, 'newManagedEnvironmentName');
@@ -26,11 +26,11 @@ export class LogAnalyticsCreateStep extends AzureWizardExecuteStep<IManagedEnvir
2626
nonNullProp(resourceGroup, 'name'), workspaceName, { location: (await LocationListStep.getLocation(context)).name });
2727
}
2828

29-
public shouldExecute(context: IManagedEnvironmentContext): boolean {
29+
public shouldExecute(context: ManagedEnvironmentCreateContext): boolean {
3030
return !context.logAnalyticsWorkspace;
3131
}
3232

33-
public createSuccessOutput(context: IManagedEnvironmentContext): ExecuteActivityOutput {
33+
public createSuccessOutput(context: ManagedEnvironmentCreateContext): ExecuteActivityOutput {
3434
return {
3535
item: new GenericTreeItem(undefined, {
3636
contextValue: createUniversallyUniqueContextValue(['logAnalyticsCreateStepSuccessItem', activitySuccessContext]),
@@ -41,7 +41,7 @@ export class LogAnalyticsCreateStep extends AzureWizardExecuteStep<IManagedEnvir
4141
};
4242
}
4343

44-
public createFailOutput(context: IManagedEnvironmentContext): ExecuteActivityOutput {
44+
public createFailOutput(context: ManagedEnvironmentCreateContext): ExecuteActivityOutput {
4545
return {
4646
item: new GenericParentTreeItem(undefined, {
4747
contextValue: createUniversallyUniqueContextValue(['logAnalyticsCreateStepFailItem', activityFailContext]),

src/commands/createManagedEnvironment/LogAnalyticsListStep.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ import { AzureWizardPromptStep, type IAzureQuickPickItem } from '@microsoft/vsco
99
import { createOperationalInsightsManagementClient } from '../../utils/azureClients';
1010
import { localize } from '../../utils/localize';
1111
import { nonNullProp } from '../../utils/nonNull';
12-
import { type IManagedEnvironmentContext } from './IManagedEnvironmentContext';
12+
import { type ManagedEnvironmentCreateContext } from './ManagedEnvironmentCreateContext';
1313

14-
export class LogAnalyticsListStep extends AzureWizardPromptStep<IManagedEnvironmentContext> {
15-
public async prompt(context: IManagedEnvironmentContext): Promise<void> {
14+
export class LogAnalyticsListStep extends AzureWizardPromptStep<ManagedEnvironmentCreateContext> {
15+
public async prompt(context: ManagedEnvironmentCreateContext): Promise<void> {
1616
const placeHolder: string = localize('selectLogAnalytics', 'Select Log Analytics workspace. Your Log Analytics workspace will contain all your application logs.');
1717
context.logAnalyticsWorkspace = (await context.ui.showQuickPick(this.getQuickPicks(context), { placeHolder })).data;
1818
}
1919

20-
public shouldPrompt(context: IManagedEnvironmentContext): boolean {
20+
public shouldPrompt(context: ManagedEnvironmentCreateContext): boolean {
2121
return !context.logAnalyticsWorkspace;
2222
}
2323

24-
private async getQuickPicks(context: IManagedEnvironmentContext): Promise<IAzureQuickPickItem<Workspace | undefined>[]> {
24+
private async getQuickPicks(context: ManagedEnvironmentCreateContext): Promise<IAzureQuickPickItem<Workspace | undefined>[]> {
2525
const picks: IAzureQuickPickItem<Workspace | undefined>[] = [];
2626

2727
picks.push({

src/commands/createManagedEnvironment/IManagedEnvironmentContext.ts renamed to src/commands/createManagedEnvironment/ManagedEnvironmentCreateContext.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import { type IResourceGroupWizardContext } from '@microsoft/vscode-azext-azureu
99
import { type ExecuteActivityContext, type ISubscriptionActionContext } from '@microsoft/vscode-azext-utils';
1010
import { type AzureSubscription } from "@microsoft/vscode-azureresources-api";
1111

12-
export interface IManagedEnvironmentContext extends ISubscriptionActionContext, IResourceGroupWizardContext, ExecuteActivityContext {
12+
export interface ManagedEnvironmentCreateContext extends ISubscriptionActionContext, IResourceGroupWizardContext, ExecuteActivityContext {
1313
subscription: AzureSubscription;
1414

1515
newManagedEnvironmentName?: string;
1616
newLogAnalyticsWorkspaceName?: string; // This isn't normally populated by a name step, but we still allow this to be prepopulated
17-
logAnalyticsWorkspace?: Workspace;
1817

1918
// created when the wizard is done executing
19+
logAnalyticsWorkspace?: Workspace;
2020
managedEnvironment?: ManagedEnvironment;
2121
}

src/commands/createManagedEnvironment/ManagedEnvironmentCreateStep.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import { managedEnvironmentsAppProvider } from "../../constants";
1111
import { createContainerAppsAPIClient, createOperationalInsightsManagementClient } from '../../utils/azureClients';
1212
import { localize } from "../../utils/localize";
1313
import { nonNullProp, nonNullValueAndProp } from "../../utils/nonNull";
14-
import { type IManagedEnvironmentContext } from "./IManagedEnvironmentContext";
14+
import { type ManagedEnvironmentCreateContext } from "./ManagedEnvironmentCreateContext";
1515

16-
export class ManagedEnvironmentCreateStep extends AzureWizardExecuteStep<IManagedEnvironmentContext> {
16+
export class ManagedEnvironmentCreateStep extends AzureWizardExecuteStep<ManagedEnvironmentCreateContext> {
1717
public priority: number = 250;
1818

19-
public async execute(context: IManagedEnvironmentContext, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
19+
public async execute(context: ManagedEnvironmentCreateContext, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
2020
const client: ContainerAppsAPIClient = await createContainerAppsAPIClient(context);
2121
const opClient = await createOperationalInsightsManagementClient(context);
2222

@@ -59,11 +59,11 @@ export class ManagedEnvironmentCreateStep extends AzureWizardExecuteStep<IManage
5959
}
6060
}
6161

62-
public shouldExecute(context: IManagedEnvironmentContext): boolean {
62+
public shouldExecute(context: ManagedEnvironmentCreateContext): boolean {
6363
return !context.managedEnvironment;
6464
}
6565

66-
public createSuccessOutput(context: IManagedEnvironmentContext): ExecuteActivityOutput {
66+
public createSuccessOutput(context: ManagedEnvironmentCreateContext): ExecuteActivityOutput {
6767
return {
6868
item: new GenericTreeItem(undefined, {
6969
contextValue: createUniversallyUniqueContextValue(['managedEnvironmentCreateStepSuccessItem', activitySuccessContext]),
@@ -74,7 +74,7 @@ export class ManagedEnvironmentCreateStep extends AzureWizardExecuteStep<IManage
7474
};
7575
}
7676

77-
public createFailOutput(context: IManagedEnvironmentContext): ExecuteActivityOutput {
77+
public createFailOutput(context: ManagedEnvironmentCreateContext): ExecuteActivityOutput {
7878
return {
7979
item: new GenericParentTreeItem(undefined, {
8080
contextValue: createUniversallyUniqueContextValue(['managedEnvironmentCreateStepFailItem', activityFailContext]),

0 commit comments

Comments
 (0)