-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathgetDefaultContainerAppsResources.ts
More file actions
58 lines (48 loc) · 3.1 KB
/
getDefaultContainerAppsResources.ts
File metadata and controls
58 lines (48 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.md in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { ContainerApp, ContainerAppsAPIClient, ManagedEnvironment } from "@azure/arm-appcontainers";
import type { ResourceGroup } from "@azure/arm-resources";
import { ResourceGroupListStep, uiUtils } from "@microsoft/vscode-azext-azureutils";
import type { ISubscriptionActionContext } from "@microsoft/vscode-azext-utils";
import { ext } from "../../../extensionVariables";
import { ContainerAppItem, ContainerAppModel } from "../../../tree/ContainerAppItem";
import { createContainerAppsAPIClient } from "../../../utils/azureClients";
import { localize } from "../../../utils/localize";
import { DeployWorkspaceProjectSettings } from "../DeployWorkspaceProjectSettings";
interface DefaultContainerAppsResources {
resourceGroup?: ResourceGroup;
managedEnvironment?: ManagedEnvironment;
containerApp?: ContainerAppModel;
}
export async function getDefaultContainerAppsResources(context: ISubscriptionActionContext, settings: DeployWorkspaceProjectSettings | undefined): Promise<DefaultContainerAppsResources> {
const noMatchingResources = {
resourceGroup: undefined,
managedEnvironment: undefined,
containerApp: undefined
};
if (!settings || !settings.containerAppResourceGroupName || !settings.containerAppName) {
return noMatchingResources;
}
const resourceGroupName: string = settings.containerAppResourceGroupName;
const containerAppName: string = settings.containerAppName;
try {
const client: ContainerAppsAPIClient = await createContainerAppsAPIClient(context)
const containerApp: ContainerApp = await client.containerApps.get(resourceGroupName, containerAppName);
const containerAppModel: ContainerAppModel = ContainerAppItem.CreateContainerAppModel(containerApp);
const managedEnvironments: ManagedEnvironment[] = await uiUtils.listAllIterator(client.managedEnvironments.listBySubscription());
const managedEnvironment = managedEnvironments.find(env => env.id === containerAppModel.managedEnvironmentId);
const resourceGroups: ResourceGroup[] = await ResourceGroupListStep.getResourceGroups(context);
const resourceGroup = resourceGroups.find(rg => rg.name === containerAppModel.resourceGroup);
ext.outputChannel.appendLog(localize('foundResourceMatch', 'Used saved workspace settings and found existing container app resources.'));
return {
resourceGroup,
managedEnvironment,
containerApp: containerAppModel
};
} catch {
ext.outputChannel.appendLog(localize('noResourceMatch', 'Used saved workspace settings to search for container app "{0}" in resource group "{1}" but found no match.', settings.containerAppName, settings.containerAppResourceGroupName));
return noMatchingResources;
}
}