-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathchangeRevisionActiveState.ts
More file actions
40 lines (33 loc) · 2.43 KB
/
changeRevisionActiveState.ts
File metadata and controls
40 lines (33 loc) · 2.43 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
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { ContainerAppsAPIClient } from "@azure/arm-appcontainers";
import { IActionContext, nonNullProp } from "@microsoft/vscode-azext-utils";
import { ext } from "../../extensionVariables";
import { ContainerAppItem } from "../../tree/ContainerAppItem";
import { RevisionItem } from "../../tree/RevisionItem";
import { createContainerAppsClient } from "../../utils/azureClients";
import { localize } from "../../utils/localize";
import { pickContainerApp } from "../../utils/pickContainerApp";
export async function executeRevisionOperation(context: IActionContext, node: ContainerAppItem | RevisionItem | undefined, operation: RevisionOperation): Promise<void> {
const item = node ?? await pickContainerApp(context);
await ext.state.runWithTemporaryDescription(item.id, revisionOperationDescriptions[operation], async () => {
const appClient: ContainerAppsAPIClient = await createContainerAppsClient(context, item.subscription);
const revisionName: string = item instanceof RevisionItem ? nonNullProp(item.revision, 'name') : nonNullProp(item.containerApp, 'latestRevisionName');
if (operation === 'restartRevision') {
const revisionData = await appClient.containerAppsRevisions.getRevision(item.containerApp.resourceGroup, item.containerApp.name, revisionName);
if (!revisionData.active) {
await appClient.containerAppsRevisions['activateRevision'](item.containerApp.resourceGroup, item.containerApp.name, revisionName);
}
}
await appClient.containerAppsRevisions[operation](item.containerApp.resourceGroup, item.containerApp.name, revisionName);
ext.state.notifyChildrenChanged(item.containerApp.id);
});
}
const revisionOperationDescriptions = {
activateRevision: localize('activating', 'Activating...'),
deactivateRevision: localize('deactivating', 'Deactivating...'),
restartRevision: localize('restarting', 'Restarting...'),
} satisfies Partial<Record<keyof ContainerAppsAPIClient['containerAppsRevisions'], string>>;
export type RevisionOperation = keyof typeof revisionOperationDescriptions;