diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 5bef36401d32..0e339dcedb9b 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -4032,7 +4032,7 @@ packages: dependencies: semver: 7.3.8 shelljs: 0.8.5 - typescript: 5.1.0-dev.20230309 + typescript: 5.1.0-dev.20230313 dev: false /ecdsa-sig-formatter/1.0.11: @@ -8957,9 +8957,9 @@ packages: hasBin: true dev: false - /typescript/5.1.0-dev.20230309: - resolution: {integrity: sha512-pCqgzbHDsuACtq0v+pjNY6Zf7cdWZstY38Jq7FfD1HqAeEGnFKhrZgSRh7kS/QE5UOctGAqbp1ynTGdVI7s4Mw==} - engines: {node: '>=4.2.0'} + /typescript/5.1.0-dev.20230313: + resolution: {integrity: sha512-vveGdy/uNUyKJ/JbXsJTSP8Z8gfCRsiXdHBMbvJ2XzuzHsDQC3mR+ZPvIGrXoTWMn5XNbyJ8ufYuqGiCGTi6tg==} + engines: {node: '>=12.20'} hasBin: true dev: false @@ -12620,10 +12620,11 @@ packages: dev: false file:projects/arm-imagebuilder.tgz: - resolution: {integrity: sha512-HA/EzMGwbBufygz6j77zvqeCJlJareH03JtdNQPzaMOdM49hjTyWPP6lAt59VU8fVW6dBPvt3pUsaxzp5d/J1A==, tarball: file:projects/arm-imagebuilder.tgz} + resolution: {integrity: sha512-Pd1lMqzwwVlCy2rgZyqCWcjWx0sscHS4cRXbWSCzgpkySuj/maOYLxmQ3pHo0WWaeuvsoTQvZuwVidZDW9zmBw==, tarball: file:projects/arm-imagebuilder.tgz} name: '@rush-temp/arm-imagebuilder' version: 0.0.0 dependencies: + '@azure-tools/test-recorder': 2.0.0 '@azure/arm-compute': 17.3.1 '@azure/identity': 2.1.0 '@microsoft/api-extractor': 7.34.4_@types+node@14.18.37 @@ -12635,8 +12636,8 @@ packages: '@types/node': 14.18.37 chai: 4.3.7 cross-env: 7.0.3 - dotenv: 8.6.0 - mkdirp: 1.0.4 + dotenv: 16.0.3 + mkdirp: 2.1.5 mocha: 7.2.0 rimraf: 3.0.2 rollup: 2.79.1 @@ -12645,6 +12646,7 @@ packages: typescript: 4.8.4 uglify-js: 3.17.4 transitivePeerDependencies: + - encoding - supports-color dev: false @@ -17654,7 +17656,7 @@ packages: dev: false file:projects/keyvault-admin.tgz: - resolution: {integrity: sha512-s4NxTw0qqENCSJYvtlPyCXPgueoVmiy1iB5nUV6ZZIXDein+SiGbPDe9AqhQaMLIIPYuOIYqNqUZzSkF/UVsow==, tarball: file:projects/keyvault-admin.tgz} + resolution: {integrity: sha512-WSclv7y5aWDIF6263syupSa4w9fyPmNlcZjQeBB3XBVyxBDuxAJz/aX4UR2NRJcJ5ki96kD6vdaLoAIbzlNj1A==, tarball: file:projects/keyvault-admin.tgz} name: '@rush-temp/keyvault-admin' version: 0.0.0 dependencies: @@ -17684,7 +17686,7 @@ packages: dev: false file:projects/keyvault-certificates.tgz: - resolution: {integrity: sha512-bAOUuJYxu7UjhLiiTrxlGZh1kv+QqyLkBI1f10AdzZxOsd3bWAqdO/wnFr1WT7irLzYkrx3e1M2yNZsSlZG1yQ==, tarball: file:projects/keyvault-certificates.tgz} + resolution: {integrity: sha512-+TlMG/tyYlPFevmmP/XKl8hABuotZg+XSUSZnIhczwq8aXNvblynbltH8USbhX9UWIBTH4CqIYQUUVxXpM2psw==, tarball: file:projects/keyvault-certificates.tgz} name: '@rush-temp/keyvault-certificates' version: 0.0.0 dependencies: diff --git a/sdk/imagebuilder/arm-imagebuilder/CHANGELOG.md b/sdk/imagebuilder/arm-imagebuilder/CHANGELOG.md index eafeb10317d7..f9111d8aeba2 100644 --- a/sdk/imagebuilder/arm-imagebuilder/CHANGELOG.md +++ b/sdk/imagebuilder/arm-imagebuilder/CHANGELOG.md @@ -1,15 +1,54 @@ # Release History + +## 3.0.0 (2023-03-13) + +**Features** -## 2.1.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed + - Added operation group Triggers + - Added Interface DistributeVersioner + - Added Interface DistributeVersionerLatest + - Added Interface DistributeVersionerSource + - Added Interface ImageTemplateFileValidator + - Added Interface ImageTemplatePropertiesOptimize + - Added Interface ImageTemplatePropertiesOptimizeVmBoot + - Added Interface SourceImageTriggerProperties + - Added Interface TargetRegion + - Added Interface Trigger + - Added Interface TriggerCollection + - Added Interface TriggerProperties + - Added Interface TriggersCreateOrUpdateOptionalParams + - Added Interface TriggersDeleteHeaders + - Added Interface TriggersDeleteOptionalParams + - Added Interface TriggersGetOptionalParams + - Added Interface TriggersListByImageTemplateNextOptionalParams + - Added Interface TriggersListByImageTemplateOptionalParams + - Added Interface TriggerStatus + - Added Interface UserAssignedIdentity + - Added Interface VirtualMachineImageTemplatesDeleteHeaders + - Added Type Alias DistributeVersionerUnion + - Added Type Alias TriggerPropertiesUnion + - Added Type Alias TriggersCreateOrUpdateResponse + - Added Type Alias TriggersGetResponse + - Added Type Alias TriggersListByImageTemplateNextResponse + - Added Type Alias TriggersListByImageTemplateResponse + - Added Type Alias VMBootOptimizationState + - Interface ImageTemplate has a new optional parameter optimize + - Interface ImageTemplateSharedImageDistributor has a new optional parameter targetRegions + - Interface ImageTemplateSharedImageDistributor has a new optional parameter versioning + - Interface ImageTemplateSharedImageVersionSource has a new optional parameter exactVersion + - Interface ImageTemplateVhdDistributor has a new optional parameter uri + - Type of parameter type of interface ImageTemplateInVMValidator is changed from "Shell" | "PowerShell" to "Shell" | "PowerShell" | "File" + - Enum KnownSharedImageStorageAccountType has a new value PremiumLRS -### Other Changes +**Breaking Changes** + - Type of parameter userAssignedIdentities of interface ImageTemplateIdentity is changed from { + [propertyName: string]: ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties; + } to { + [propertyName: string]: UserAssignedIdentity; + } + + ## 2.1.0 (2023-01-11) **Features** diff --git a/sdk/imagebuilder/arm-imagebuilder/_meta.json b/sdk/imagebuilder/arm-imagebuilder/_meta.json index ad508fe0069f..e2d8a9422349 100644 --- a/sdk/imagebuilder/arm-imagebuilder/_meta.json +++ b/sdk/imagebuilder/arm-imagebuilder/_meta.json @@ -1,8 +1,8 @@ { - "commit": "078b90617e5e08137d0395963bd4119f4561a910", - "readme": "specification\\imagebuilder\\resource-manager\\readme.md", - "autorest_command": "autorest --version=3.9.3 --typescript --modelerfour.lenient-model-deduplication --azure-arm --head-as-boolean=true --license-header=MICROSOFT_MIT_NO_VERSION --generate-test --typescript-sdks-folder=F:\\azure-sdk-for-js ..\\azure-rest-api-specs\\specification\\imagebuilder\\resource-manager\\readme.md --use=@autorest/typescript@6.0.0-rc.6.20221226.1 --generate-sample=true", + "commit": "98e017a0cd1739babd3e6fde95a6b371711f74d6", + "readme": "specification/imagebuilder/resource-manager/readme.md", + "autorest_command": "autorest --version=3.9.3 --typescript --modelerfour.lenient-model-deduplication --azure-arm --head-as-boolean=true --license-header=MICROSOFT_MIT_NO_VERSION --generate-test --typescript-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-js ../azure-rest-api-specs/specification/imagebuilder/resource-manager/readme.md --use=@autorest/typescript@6.0.0-rc.9", "repository_url": "https://github.com/Azure/azure-rest-api-specs.git", - "release_tool": "@azure-tools/js-sdk-release-tools@2.5.4", - "use": "@autorest/typescript@6.0.0-rc.6.20221226.1" + "release_tool": "@azure-tools/js-sdk-release-tools@2.6.2", + "use": "@autorest/typescript@6.0.0-rc.9" } \ No newline at end of file diff --git a/sdk/imagebuilder/arm-imagebuilder/package.json b/sdk/imagebuilder/arm-imagebuilder/package.json index 601db00c7520..f146a7178fff 100644 --- a/sdk/imagebuilder/arm-imagebuilder/package.json +++ b/sdk/imagebuilder/arm-imagebuilder/package.json @@ -3,15 +3,15 @@ "sdk-type": "mgmt", "author": "Microsoft Corporation", "description": "A generated SDK for ImageBuilderClient.", - "version": "2.1.1", + "version": "3.0.0", "engines": { "node": ">=14.0.0" }, "dependencies": { - "@azure/core-lro": "^2.2.0", + "@azure/core-lro": "^2.5.0", "@azure/abort-controller": "^1.0.0", "@azure/core-paging": "^1.2.0", - "@azure/core-client": "^1.6.1", + "@azure/core-client": "^1.7.0", "@azure/core-auth": "^1.3.0", "@azure/core-rest-pipeline": "^1.8.0", "tslib": "^2.2.0" @@ -33,24 +33,22 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-multi-entry": "^6.0.0", "@rollup/plugin-node-resolve": "^13.1.3", - "mkdirp": "^1.0.4", + "mkdirp": "^2.1.2", "rollup": "^2.66.1", "rollup-plugin-sourcemaps": "^0.6.3", "typescript": "~4.8.0", "uglify-js": "^3.4.9", "rimraf": "^3.0.0", - "dotenv": "^8.2.0", + "dotenv": "^16.0.0", "@azure/identity": "^2.0.1", - "@azure-tools/test-recorder": "^3.0.0", + "@azure-tools/test-recorder": "^2.0.0", "@azure-tools/test-credential": "^1.0.0", "mocha": "^7.1.1", "@types/chai": "^4.2.8", "chai": "^4.2.0", "cross-env": "^7.0.2", - "@azure/dev-tool": "^1.0.0", "@types/node": "^14.0.0", - "@azure/arm-compute": "^17.0.0", - "@azure/arm-msi": "^2.0.0" + "@azure/dev-tool": "^1.0.0" }, "repository": { "type": "git", @@ -113,13 +111,5 @@ ] }, "autoPublish": true, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/imagebuilder/arm-imagebuilder", - "//sampleConfiguration": { - "productName": "", - "productSlugs": [ - "azure" - ], - "disableDocsMs": true, - "apiRefLink": "https://docs.microsoft.com/javascript/api/@azure/arm-imagebuilder?view=azure-node-preview" - } -} + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/imagebuilder/arm-imagebuilder" +} \ No newline at end of file diff --git a/sdk/imagebuilder/arm-imagebuilder/review/arm-imagebuilder.api.md b/sdk/imagebuilder/arm-imagebuilder/review/arm-imagebuilder.api.md index 9dd22ca90401..9f6b6bcef88c 100644 --- a/sdk/imagebuilder/arm-imagebuilder/review/arm-imagebuilder.api.md +++ b/sdk/imagebuilder/arm-imagebuilder/review/arm-imagebuilder.api.md @@ -6,9 +6,9 @@ import * as coreAuth from '@azure/core-auth'; import * as coreClient from '@azure/core-client'; +import { OperationState } from '@azure/core-lro'; import { PagedAsyncIterableIterator } from '@azure/core-paging'; -import { PollerLike } from '@azure/core-lro'; -import { PollOperationState } from '@azure/core-lro'; +import { SimplePollerLike } from '@azure/core-lro'; // @public export interface CloudError { @@ -23,14 +23,27 @@ export interface CloudErrorBody { target?: string; } -// @public (undocumented) -export interface ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties { - readonly clientId?: string; - readonly principalId?: string; +// @public +export type CreatedByType = string; + +// @public +export interface DistributeVersioner { + scheme: "Latest" | "Source"; } // @public -export type CreatedByType = string; +export interface DistributeVersionerLatest extends DistributeVersioner { + major?: number; + scheme: "Latest"; +} + +// @public +export interface DistributeVersionerSource extends DistributeVersioner { + scheme: "Source"; +} + +// @public (undocumented) +export type DistributeVersionerUnion = DistributeVersioner | DistributeVersionerLatest | DistributeVersionerSource; // @public export function getContinuationToken(page: unknown): string | undefined; @@ -47,6 +60,8 @@ export class ImageBuilderClient extends coreClient.ServiceClient { // (undocumented) subscriptionId: string; // (undocumented) + triggers: Triggers; + // (undocumented) virtualMachineImageTemplates: VirtualMachineImageTemplates; } @@ -65,6 +80,7 @@ export interface ImageTemplate extends TrackedResource { readonly exactStagingResourceGroup?: string; identity: ImageTemplateIdentity; readonly lastRunStatus?: ImageTemplateLastRunStatus; + optimize?: ImageTemplatePropertiesOptimize; readonly provisioningError?: ProvisioningError; readonly provisioningState?: ProvisioningState; source?: ImageTemplateSourceUnion; @@ -102,22 +118,30 @@ export interface ImageTemplateFileCustomizer extends ImageTemplateCustomizer { type: "File"; } +// @public +export interface ImageTemplateFileValidator extends ImageTemplateInVMValidator { + destination?: string; + sha256Checksum?: string; + sourceUri?: string; + type: "File"; +} + // @public export interface ImageTemplateIdentity { type?: ResourceIdentityType; userAssignedIdentities?: { - [propertyName: string]: ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties; + [propertyName: string]: UserAssignedIdentity; }; } // @public export interface ImageTemplateInVMValidator { name?: string; - type: "Shell" | "PowerShell"; + type: "Shell" | "PowerShell" | "File"; } // @public (undocumented) -export type ImageTemplateInVMValidatorUnion = ImageTemplateInVMValidator | ImageTemplateShellValidator | ImageTemplatePowerShellValidator; +export type ImageTemplateInVMValidatorUnion = ImageTemplateInVMValidator | ImageTemplateShellValidator | ImageTemplatePowerShellValidator | ImageTemplateFileValidator; // @public export interface ImageTemplateLastRunStatus { @@ -180,6 +204,16 @@ export interface ImageTemplatePowerShellValidator extends ImageTemplateInVMValid validExitCodes?: number[]; } +// @public +export interface ImageTemplatePropertiesOptimize { + vmBoot?: ImageTemplatePropertiesOptimizeVmBoot; +} + +// @public +export interface ImageTemplatePropertiesOptimizeVmBoot { + state?: VMBootOptimizationState; +} + // @public export interface ImageTemplatePropertiesValidate { continueDistributeOnFailure?: boolean; @@ -199,13 +233,16 @@ export interface ImageTemplateRestartCustomizer extends ImageTemplateCustomizer export interface ImageTemplateSharedImageDistributor extends ImageTemplateDistributor { excludeFromLatest?: boolean; galleryImageId: string; - replicationRegions: string[]; + replicationRegions?: string[]; storageAccountType?: SharedImageStorageAccountType; + targetRegions?: TargetRegion[]; type: "SharedImage"; + versioning?: DistributeVersionerUnion; } // @public export interface ImageTemplateSharedImageVersionSource extends ImageTemplateSource { + readonly exactVersion?: string; imageVersionId: string; type: "SharedImageVersion"; } @@ -245,6 +282,7 @@ export interface ImageTemplateUpdateParameters { // @public export interface ImageTemplateVhdDistributor extends ImageTemplateDistributor { type: "VHD"; + uri?: string; } // @public @@ -292,6 +330,7 @@ export enum KnownProvisioningErrorCode { // @public export enum KnownSharedImageStorageAccountType { + PremiumLRS = "Premium_LRS", StandardLRS = "Standard_LRS", StandardZRS = "Standard_ZRS" } @@ -355,7 +394,7 @@ export interface ProvisioningError { export type ProvisioningErrorCode = string; // @public -export type ProvisioningState = "Creating" | "Updating" | "Succeeded" | "Failed" | "Deleting"; +export type ProvisioningState = "Creating" | "Updating" | "Succeeded" | "Failed" | "Deleting" | "Canceled"; // @public export interface ProxyResource extends Resource { @@ -389,11 +428,16 @@ export interface RunOutputCollection { export type RunState = "Running" | "Canceling" | "Succeeded" | "PartiallySucceeded" | "Failed" | "Canceled"; // @public -export type RunSubState = "Queued" | "Building" | "Customizing" | "Validating" | "Distributing"; +export type RunSubState = "Queued" | "Building" | "Customizing" | "Optimizing" | "Validating" | "Distributing"; // @public export type SharedImageStorageAccountType = string; +// @public +export interface SourceImageTriggerProperties extends TriggerProperties { + kind: "SourceImage"; +} + // @public export interface SystemData { createdAt?: Date; @@ -404,6 +448,13 @@ export interface SystemData { lastModifiedByType?: CreatedByType; } +// @public +export interface TargetRegion { + name: string; + replicaCount?: number; + storageAccountType?: SharedImageStorageAccountType; +} + // @public export interface TrackedResource extends Resource { location: string; @@ -412,17 +463,104 @@ export interface TrackedResource extends Resource { }; } +// @public +export interface Trigger extends ProxyResource { + kind?: string; + readonly provisioningState?: ProvisioningState; + readonly status?: TriggerStatus; +} + +// @public +export interface TriggerCollection { + nextLink?: string; + value: Trigger[]; +} + +// @public +export interface TriggerProperties { + kind: "SourceImage"; + readonly provisioningState?: ProvisioningState; + readonly status?: TriggerStatus; +} + +// @public (undocumented) +export type TriggerPropertiesUnion = TriggerProperties | SourceImageTriggerProperties; + +// @public +export interface Triggers { + beginCreateOrUpdate(resourceGroupName: string, imageTemplateName: string, triggerName: string, parameters: Trigger, options?: TriggersCreateOrUpdateOptionalParams): Promise, TriggersCreateOrUpdateResponse>>; + beginCreateOrUpdateAndWait(resourceGroupName: string, imageTemplateName: string, triggerName: string, parameters: Trigger, options?: TriggersCreateOrUpdateOptionalParams): Promise; + beginDelete(resourceGroupName: string, imageTemplateName: string, triggerName: string, options?: TriggersDeleteOptionalParams): Promise, void>>; + beginDeleteAndWait(resourceGroupName: string, imageTemplateName: string, triggerName: string, options?: TriggersDeleteOptionalParams): Promise; + get(resourceGroupName: string, imageTemplateName: string, triggerName: string, options?: TriggersGetOptionalParams): Promise; + listByImageTemplate(resourceGroupName: string, imageTemplateName: string, options?: TriggersListByImageTemplateOptionalParams): PagedAsyncIterableIterator; +} + +// @public +export interface TriggersCreateOrUpdateOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export type TriggersCreateOrUpdateResponse = Trigger; + +// @public +export interface TriggersDeleteHeaders { + location?: string; +} + +// @public +export interface TriggersDeleteOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export interface TriggersGetOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type TriggersGetResponse = Trigger; + +// @public +export interface TriggersListByImageTemplateNextOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type TriggersListByImageTemplateNextResponse = TriggerCollection; + +// @public +export interface TriggersListByImageTemplateOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type TriggersListByImageTemplateResponse = TriggerCollection; + +// @public +export interface TriggerStatus { + readonly code?: string; + readonly message?: string; + readonly time?: Date; +} + +// @public +export interface UserAssignedIdentity { + readonly clientId?: string; + readonly principalId?: string; +} + // @public export interface VirtualMachineImageTemplates { - beginCancel(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesCancelOptionalParams): Promise, void>>; + beginCancel(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesCancelOptionalParams): Promise, void>>; beginCancelAndWait(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesCancelOptionalParams): Promise; - beginCreateOrUpdate(resourceGroupName: string, imageTemplateName: string, parameters: ImageTemplate, options?: VirtualMachineImageTemplatesCreateOrUpdateOptionalParams): Promise, VirtualMachineImageTemplatesCreateOrUpdateResponse>>; + beginCreateOrUpdate(resourceGroupName: string, imageTemplateName: string, parameters: ImageTemplate, options?: VirtualMachineImageTemplatesCreateOrUpdateOptionalParams): Promise, VirtualMachineImageTemplatesCreateOrUpdateResponse>>; beginCreateOrUpdateAndWait(resourceGroupName: string, imageTemplateName: string, parameters: ImageTemplate, options?: VirtualMachineImageTemplatesCreateOrUpdateOptionalParams): Promise; - beginDelete(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesDeleteOptionalParams): Promise, void>>; + beginDelete(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesDeleteOptionalParams): Promise, void>>; beginDeleteAndWait(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesDeleteOptionalParams): Promise; - beginRun(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesRunOptionalParams): Promise, void>>; + beginRun(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesRunOptionalParams): Promise, void>>; beginRunAndWait(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesRunOptionalParams): Promise; - beginUpdate(resourceGroupName: string, imageTemplateName: string, parameters: ImageTemplateUpdateParameters, options?: VirtualMachineImageTemplatesUpdateOptionalParams): Promise, VirtualMachineImageTemplatesUpdateResponse>>; + beginUpdate(resourceGroupName: string, imageTemplateName: string, parameters: ImageTemplateUpdateParameters, options?: VirtualMachineImageTemplatesUpdateOptionalParams): Promise, VirtualMachineImageTemplatesUpdateResponse>>; beginUpdateAndWait(resourceGroupName: string, imageTemplateName: string, parameters: ImageTemplateUpdateParameters, options?: VirtualMachineImageTemplatesUpdateOptionalParams): Promise; get(resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesGetOptionalParams): Promise; getRunOutput(resourceGroupName: string, imageTemplateName: string, runOutputName: string, options?: VirtualMachineImageTemplatesGetRunOutputOptionalParams): Promise; @@ -446,6 +584,11 @@ export interface VirtualMachineImageTemplatesCreateOrUpdateOptionalParams extend // @public export type VirtualMachineImageTemplatesCreateOrUpdateResponse = ImageTemplate; +// @public +export interface VirtualMachineImageTemplatesDeleteHeaders { + location?: string; +} + // @public export interface VirtualMachineImageTemplatesDeleteOptionalParams extends coreClient.OperationOptions { resumeFrom?: string; @@ -529,6 +672,9 @@ export interface VirtualNetworkConfig { subnetId?: string; } +// @public +export type VMBootOptimizationState = "Enabled" | "Disabled"; + // (No @packageDocumentation comment for this package) ``` diff --git a/sdk/imagebuilder/arm-imagebuilder/src/imageBuilderClient.ts b/sdk/imagebuilder/arm-imagebuilder/src/imageBuilderClient.ts index 3aaf5f435409..cf795e636a7c 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/imageBuilderClient.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/imageBuilderClient.ts @@ -14,9 +14,14 @@ import { SendRequest } from "@azure/core-rest-pipeline"; import * as coreAuth from "@azure/core-auth"; -import { VirtualMachineImageTemplatesImpl, OperationsImpl } from "./operations"; +import { + VirtualMachineImageTemplatesImpl, + TriggersImpl, + OperationsImpl +} from "./operations"; import { VirtualMachineImageTemplates, + Triggers, Operations } from "./operationsInterfaces"; import { ImageBuilderClientOptionalParams } from "./models"; @@ -54,7 +59,7 @@ export class ImageBuilderClient extends coreClient.ServiceClient { credential: credentials }; - const packageDetails = `azsdk-js-arm-imagebuilder/2.1.1`; + const packageDetails = `azsdk-js-arm-imagebuilder/3.0.0`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` @@ -107,10 +112,11 @@ export class ImageBuilderClient extends coreClient.ServiceClient { // Assigning values to Constant parameters this.$host = options.$host || "https://management.azure.com"; - this.apiVersion = options.apiVersion || "2022-02-14"; + this.apiVersion = options.apiVersion || "2022-07-01"; this.virtualMachineImageTemplates = new VirtualMachineImageTemplatesImpl( this ); + this.triggers = new TriggersImpl(this); this.operations = new OperationsImpl(this); this.addCustomApiVersionPolicy(options.apiVersion); } @@ -144,5 +150,6 @@ export class ImageBuilderClient extends coreClient.ServiceClient { } virtualMachineImageTemplates: VirtualMachineImageTemplates; + triggers: Triggers; operations: Operations; } diff --git a/sdk/imagebuilder/arm-imagebuilder/src/lroImpl.ts b/sdk/imagebuilder/arm-imagebuilder/src/lroImpl.ts index 518d5f053b4e..dd803cd5e28c 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/lroImpl.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/lroImpl.ts @@ -6,29 +6,37 @@ * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import { AbortSignalLike } from "@azure/abort-controller"; import { LongRunningOperation, LroResponse } from "@azure/core-lro"; -export class LroImpl implements LongRunningOperation { - constructor( - private sendOperationFn: (args: any, spec: any) => Promise>, - private args: Record, - private spec: { - readonly requestBody?: unknown; - readonly path?: string; - readonly httpMethod: string; - } & Record, - public requestPath: string = spec.path!, - public requestMethod: string = spec.httpMethod - ) {} - public async sendInitialRequest(): Promise> { - return this.sendOperationFn(this.args, this.spec); - } - public async sendPollRequest(path: string): Promise> { - const { requestBody, ...restSpec } = this.spec; - return this.sendOperationFn(this.args, { - ...restSpec, - path, - httpMethod: "GET" - }); - } +export function createLroSpec(inputs: { + sendOperationFn: (args: any, spec: any) => Promise>; + args: Record; + spec: { + readonly requestBody?: unknown; + readonly path?: string; + readonly httpMethod: string; + } & Record; +}): LongRunningOperation { + const { args, spec, sendOperationFn } = inputs; + return { + requestMethod: spec.httpMethod, + requestPath: spec.path!, + sendInitialRequest: () => sendOperationFn(args, spec), + sendPollRequest: ( + path: string, + options?: { abortSignal?: AbortSignalLike } + ) => { + const { requestBody, ...restSpec } = spec; + return sendOperationFn(args, { + ...restSpec, + httpMethod: "GET", + path, + abortSignal: options?.abortSignal + }); + } + }; } diff --git a/sdk/imagebuilder/arm-imagebuilder/src/models/index.ts b/sdk/imagebuilder/arm-imagebuilder/src/models/index.ts index 1b6ae1ffd9e8..88e9e86f5993 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/models/index.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/models/index.ts @@ -23,12 +23,20 @@ export type ImageTemplateCustomizerUnion = export type ImageTemplateInVMValidatorUnion = | ImageTemplateInVMValidator | ImageTemplateShellValidator - | ImageTemplatePowerShellValidator; + | ImageTemplatePowerShellValidator + | ImageTemplateFileValidator; export type ImageTemplateDistributorUnion = | ImageTemplateDistributor | ImageTemplateManagedImageDistributor | ImageTemplateSharedImageDistributor | ImageTemplateVhdDistributor; +export type TriggerPropertiesUnion = + | TriggerProperties + | SourceImageTriggerProperties; +export type DistributeVersionerUnion = + | DistributeVersioner + | DistributeVersionerLatest + | DistributeVersionerSource; /** The result of List image templates operation */ export interface ImageTemplateListResult { @@ -52,6 +60,18 @@ export interface ImageTemplateCustomizer { name?: string; } +/** Specifies optimization to be performed on image. */ +export interface ImageTemplatePropertiesOptimize { + /** Optimization is applied on the image for a faster VM boot. */ + vmBoot?: ImageTemplatePropertiesOptimizeVmBoot; +} + +/** Optimization is applied on the image for a faster VM boot. */ +export interface ImageTemplatePropertiesOptimizeVmBoot { + /** Enabling this field will improve VM boot time by optimizing the final customized image output. */ + state?: VMBootOptimizationState; +} + /** Configuration options and list of validations to be performed on the resulting image. */ export interface ImageTemplatePropertiesValidate { /** If validation fails and this field is set to false, output image(s) will not be distributed. This is the default behavior. If validation fails and this field is set to true, output image(s) will still be distributed. Please use this option with caution as it may result in bad images being distributed for use. In either case (true or false), the end to end image run will be reported as having failed in case of a validation failure. [Note: This field has no effect if validation succeeds.] */ @@ -65,7 +85,7 @@ export interface ImageTemplatePropertiesValidate { /** Describes a unit of in-VM validation of image */ export interface ImageTemplateInVMValidator { /** Polymorphic discriminator, which specifies the different types this object can be */ - type: "Shell" | "PowerShell"; + type: "Shell" | "PowerShell" | "File"; /** Friendly Name to provide context on what this validation step does */ name?: string; } @@ -126,20 +146,19 @@ export interface VirtualNetworkConfig { export interface ImageTemplateIdentity { /** The type of identity used for the image template. The type 'None' will remove any identities from the image template. */ type?: ResourceIdentityType; - /** The list of user identities associated with the image template. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. */ - userAssignedIdentities?: { - [propertyName: string]: ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties; - }; + /** The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. The dictionary values can be empty objects ({}) in requests. */ + userAssignedIdentities?: { [propertyName: string]: UserAssignedIdentity }; } -export interface ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties { +/** User assigned identity properties */ +export interface UserAssignedIdentity { /** - * The principal id of user assigned identity. + * The principal ID of the assigned identity. * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly principalId?: string; /** - * The client id of user assigned identity. + * The client ID of the assigned identity. * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly clientId?: string; @@ -219,6 +238,49 @@ export interface RunOutputCollection { nextLink?: string; } +/** The result of List triggers operation */ +export interface TriggerCollection { + /** An array of triggers */ + value: Trigger[]; + /** The continuation token. */ + nextLink?: string; +} + +/** Describes the properties of a trigger */ +export interface TriggerProperties { + /** Polymorphic discriminator, which specifies the different types this object can be */ + kind: "SourceImage"; + /** + * Trigger status + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly status?: TriggerStatus; + /** + * Provisioning state of the resource + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly provisioningState?: ProvisioningState; +} + +/** Describes the status of a trigger */ +export interface TriggerStatus { + /** + * The status code. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly code?: string; + /** + * The detailed status message, including for alerts and error messages. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly message?: string; + /** + * The time of the status. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly time?: Date; +} + /** Result of the request to list REST API operations. It contains a list of operations and a URL nextLink to get the next set of results. */ export interface OperationListResult { /** The list of operations supported by the resource provider. */ @@ -263,6 +325,22 @@ export interface PlatformImagePurchasePlan { planPublisher: string; } +/** Describes the target region information. */ +export interface TargetRegion { + /** The name of the region. */ + name: string; + /** The number of replicas of the Image Version to be created in this region. Omit to use the default (1). */ + replicaCount?: number; + /** Specifies the storage account type to be used to store the image in this region. Omit to use the default (Standard_LRS). */ + storageAccountType?: SharedImageStorageAccountType; +} + +/** Describes how to generate new x.y.z version number for distribution. */ +export interface DistributeVersioner { + /** Polymorphic discriminator, which specifies the different types this object can be */ + scheme: "Latest" | "Source"; +} + /** Describes an image source from [Azure Gallery Images](https://docs.microsoft.com/en-us/rest/api/compute/virtualmachineimages). */ export interface ImageTemplatePlatformImageSource extends ImageTemplateSource { /** Polymorphic discriminator, which specifies the different types this object can be */ @@ -292,13 +370,18 @@ export interface ImageTemplateManagedImageSource extends ImageTemplateSource { imageId: string; } -/** Describes an image source that is an image version in a shared image gallery. */ +/** Describes an image source that is an image version in an Azure Compute Gallery or a Direct Shared Gallery. */ export interface ImageTemplateSharedImageVersionSource extends ImageTemplateSource { /** Polymorphic discriminator, which specifies the different types this object can be */ type: "SharedImageVersion"; - /** ARM resource id of the image version in the shared image gallery */ + /** ARM resource id of the image version. When image version name is 'latest', the version is evaluated when the image build takes place. */ imageVersionId: string; + /** + * Exact ARM resource id of the image version. This readonly field differs from the image version Id in 'imageVersionId' only if the version name specified in 'imageVersionId' field is 'latest'. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly exactVersion?: string; } /** Runs a shell script during the customization phase (Linux). Corresponds to Packer shell provisioner. Exactly one of 'scriptUri' or 'inline' can be specified. */ @@ -402,6 +485,18 @@ export interface ImageTemplatePowerShellValidator validExitCodes?: number[]; } +/** Uploads files required for validation to VMs (Linux, Windows). Corresponds to Packer file provisioner */ +export interface ImageTemplateFileValidator extends ImageTemplateInVMValidator { + /** Polymorphic discriminator, which specifies the different types this object can be */ + type: "File"; + /** The URI of the file to be uploaded to the VM for validation. It can be a github link, Azure Storage URI (authorized or SAS), etc */ + sourceUri?: string; + /** SHA256 checksum of the file provided in the sourceUri field above */ + sha256Checksum?: string; + /** The absolute path to a file (with nested directory structures already created) where the file (from sourceUri) will be uploaded to in the VM */ + destination?: string; +} + /** Distribute as a Managed Disk Image. */ export interface ImageTemplateManagedImageDistributor extends ImageTemplateDistributor { @@ -413,25 +508,31 @@ export interface ImageTemplateManagedImageDistributor location: string; } -/** Distribute via Shared Image Gallery. */ +/** Distribute via Azure Compute Gallery. */ export interface ImageTemplateSharedImageDistributor extends ImageTemplateDistributor { /** Polymorphic discriminator, which specifies the different types this object can be */ type: "SharedImage"; - /** Resource Id of the Shared Image Gallery image */ + /** Resource Id of the Azure Compute Gallery image */ galleryImageId: string; - /** A list of regions that the image will be replicated to */ - replicationRegions: string[]; + /** [Deprecated] A list of regions that the image will be replicated to. This list can be specified only if targetRegions is not specified. This field is deprecated - use targetRegions instead. */ + replicationRegions?: string[]; /** Flag that indicates whether created image version should be excluded from latest. Omit to use the default (false). */ excludeFromLatest?: boolean; - /** Storage account type to be used to store the shared image. Omit to use the default (Standard_LRS). */ + /** [Deprecated] Storage account type to be used to store the shared image. Omit to use the default (Standard_LRS). This field can be specified only if replicationRegions is specified. This field is deprecated - use targetRegions instead. */ storageAccountType?: SharedImageStorageAccountType; + /** The target regions where the distributed Image Version is going to be replicated to. This object supersedes replicationRegions and can be specified only if replicationRegions is not specified. */ + targetRegions?: TargetRegion[]; + /** Describes how to generate new x.y.z version number for distribution. */ + versioning?: DistributeVersionerUnion; } /** Distribute via VHD in a storage account. */ export interface ImageTemplateVhdDistributor extends ImageTemplateDistributor { /** Polymorphic discriminator, which specifies the different types this object can be */ type: "VHD"; + /** Optional Azure Storage URI for the distributed VHD blob. Omit to use the default (empty string) in which case VHD would be published to the storage account in the staging resource group. */ + uri?: string; } /** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */ @@ -445,6 +546,26 @@ export interface TrackedResource extends Resource { /** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */ export interface ProxyResource extends Resource {} +/** Properties of SourceImage kind of trigger */ +export interface SourceImageTriggerProperties extends TriggerProperties { + /** Polymorphic discriminator, which specifies the different types this object can be */ + kind: "SourceImage"; +} + +/** Generates version number that will be latest based on existing version numbers. */ +export interface DistributeVersionerLatest extends DistributeVersioner { + /** Polymorphic discriminator, which specifies the different types this object can be */ + scheme: "Latest"; + /** Major version for the generated version number. Determine what is "latest" based on versions with this value as the major version. -1 is equivalent to leaving it unset. */ + major?: number; +} + +/** Generates version number based on version number of source image */ +export interface DistributeVersionerSource extends DistributeVersioner { + /** Polymorphic discriminator, which specifies the different types this object can be */ + scheme: "Source"; +} + /** Image template is an ARM resource managed by Microsoft.VirtualMachineImages provider */ export interface ImageTemplate extends TrackedResource { /** The identity of the image template, if configured. */ @@ -453,6 +574,8 @@ export interface ImageTemplate extends TrackedResource { source?: ImageTemplateSourceUnion; /** Specifies the properties used to describe the customization steps of the image, like Image source etc */ customize?: ImageTemplateCustomizerUnion[]; + /** Specifies optimization to be performed on image. */ + optimize?: ImageTemplatePropertiesOptimize; /** Configuration options and list of validations to be performed on the resulting image. */ validate?: ImageTemplatePropertiesValidate; /** The distribution targets where the image output needs to go to. */ @@ -472,7 +595,7 @@ export interface ImageTemplate extends TrackedResource { * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly lastRunStatus?: ImageTemplateLastRunStatus; - /** Maximum duration to wait while building the image template (includes all customizations, validations, and distributions). Omit or specify 0 to use the default (4 hours). */ + /** Maximum duration to wait while building the image template (includes all customizations, optimization, validations, and distributions). Omit or specify 0 to use the default (4 hours). */ buildTimeoutInMinutes?: number; /** Describes how virtual machine is set up to build images */ vmProfile?: ImageTemplateVmProfile; @@ -498,6 +621,34 @@ export interface RunOutput extends ProxyResource { readonly provisioningState?: ProvisioningState; } +/** Represents a trigger that can invoke an image template build. */ +export interface Trigger extends ProxyResource { + /** The kind of trigger. */ + kind?: string; + /** + * Trigger status + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly status?: TriggerStatus; + /** + * Provisioning state of the resource + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly provisioningState?: ProvisioningState; +} + +/** Defines headers for VirtualMachineImageTemplates_delete operation. */ +export interface VirtualMachineImageTemplatesDeleteHeaders { + /** The URI to poll for completion status. */ + location?: string; +} + +/** Defines headers for Triggers_delete operation. */ +export interface TriggersDeleteHeaders { + /** The URI to poll for completion status. */ + location?: string; +} + /** Known values of {@link ProvisioningErrorCode} that the service accepts. */ export enum KnownProvisioningErrorCode { /** BadSourceType */ @@ -584,7 +735,9 @@ export enum KnownSharedImageStorageAccountType { /** StandardLRS */ StandardLRS = "Standard_LRS", /** StandardZRS */ - StandardZRS = "Standard_ZRS" + StandardZRS = "Standard_ZRS", + /** PremiumLRS */ + PremiumLRS = "Premium_LRS" } /** @@ -593,16 +746,20 @@ export enum KnownSharedImageStorageAccountType { * this enum contains the known values that the service supports. * ### Known values supported by the service * **Standard_LRS** \ - * **Standard_ZRS** + * **Standard_ZRS** \ + * **Premium_LRS** */ export type SharedImageStorageAccountType = string; +/** Defines values for VMBootOptimizationState. */ +export type VMBootOptimizationState = "Enabled" | "Disabled"; /** Defines values for ProvisioningState. */ export type ProvisioningState = | "Creating" | "Updating" | "Succeeded" | "Failed" - | "Deleting"; + | "Deleting" + | "Canceled"; /** Defines values for RunState. */ export type RunState = | "Running" @@ -616,6 +773,7 @@ export type RunSubState = | "Queued" | "Building" | "Customizing" + | "Optimizing" | "Validating" | "Distributing"; /** Defines values for ResourceIdentityType. */ @@ -728,6 +886,48 @@ export interface VirtualMachineImageTemplatesListRunOutputsNextOptionalParams /** Contains response data for the listRunOutputsNext operation. */ export type VirtualMachineImageTemplatesListRunOutputsNextResponse = RunOutputCollection; +/** Optional parameters. */ +export interface TriggersListByImageTemplateOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the listByImageTemplate operation. */ +export type TriggersListByImageTemplateResponse = TriggerCollection; + +/** Optional parameters. */ +export interface TriggersGetOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the get operation. */ +export type TriggersGetResponse = Trigger; + +/** Optional parameters. */ +export interface TriggersCreateOrUpdateOptionalParams + extends coreClient.OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */ + resumeFrom?: string; +} + +/** Contains response data for the createOrUpdate operation. */ +export type TriggersCreateOrUpdateResponse = Trigger; + +/** Optional parameters. */ +export interface TriggersDeleteOptionalParams + extends coreClient.OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */ + resumeFrom?: string; +} + +/** Optional parameters. */ +export interface TriggersListByImageTemplateNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the listByImageTemplateNext operation. */ +export type TriggersListByImageTemplateNextResponse = TriggerCollection; + /** Optional parameters. */ export interface OperationsListOptionalParams extends coreClient.OperationOptions {} diff --git a/sdk/imagebuilder/arm-imagebuilder/src/models/mappers.ts b/sdk/imagebuilder/arm-imagebuilder/src/models/mappers.ts index e474168894d1..29c01afc5129 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/models/mappers.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/models/mappers.ts @@ -83,6 +83,38 @@ export const ImageTemplateCustomizer: coreClient.CompositeMapper = { } }; +export const ImageTemplatePropertiesOptimize: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "ImageTemplatePropertiesOptimize", + modelProperties: { + vmBoot: { + serializedName: "vmBoot", + type: { + name: "Composite", + className: "ImageTemplatePropertiesOptimizeVmBoot" + } + } + } + } +}; + +export const ImageTemplatePropertiesOptimizeVmBoot: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "ImageTemplatePropertiesOptimizeVmBoot", + modelProperties: { + state: { + serializedName: "state", + type: { + name: "Enum", + allowedValues: ["Enabled", "Disabled"] + } + } + } + } +}; + export const ImageTemplatePropertiesValidate: coreClient.CompositeMapper = { type: { name: "Composite", @@ -243,6 +275,7 @@ export const ImageTemplateLastRunStatus: coreClient.CompositeMapper = { "Queued", "Building", "Customizing", + "Optimizing", "Validating", "Distributing" ] @@ -341,11 +374,7 @@ export const ImageTemplateIdentity: coreClient.CompositeMapper = { type: { name: "Dictionary", value: { - type: { - name: "Composite", - className: - "ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties" - } + type: { name: "Composite", className: "UserAssignedIdentity" } } } } @@ -353,11 +382,10 @@ export const ImageTemplateIdentity: coreClient.CompositeMapper = { } }; -export const ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties: coreClient.CompositeMapper = { +export const UserAssignedIdentity: coreClient.CompositeMapper = { type: { name: "Composite", - className: - "ComponentsVrq145SchemasImagetemplateidentityPropertiesUserassignedidentitiesAdditionalproperties", + className: "UserAssignedIdentity", modelProperties: { principalId: { serializedName: "principalId", @@ -564,6 +592,107 @@ export const RunOutputCollection: coreClient.CompositeMapper = { } }; +export const TriggerCollection: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "TriggerCollection", + modelProperties: { + value: { + serializedName: "value", + required: true, + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "Trigger" + } + } + } + }, + nextLink: { + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + +export const TriggerProperties: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "TriggerProperties", + uberParent: "TriggerProperties", + polymorphicDiscriminator: { + serializedName: "kind", + clientName: "kind" + }, + modelProperties: { + kind: { + serializedName: "kind", + required: true, + type: { + name: "String" + } + }, + status: { + serializedName: "status", + type: { + name: "Composite", + className: "TriggerStatus" + } + }, + provisioningState: { + serializedName: "provisioningState", + readOnly: true, + type: { + name: "Enum", + allowedValues: [ + "Creating", + "Updating", + "Succeeded", + "Failed", + "Deleting", + "Canceled" + ] + } + } + } + } +}; + +export const TriggerStatus: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "TriggerStatus", + modelProperties: { + code: { + serializedName: "code", + readOnly: true, + type: { + name: "String" + } + }, + message: { + serializedName: "message", + readOnly: true, + type: { + name: "String" + } + }, + time: { + serializedName: "time", + readOnly: true, + type: { + name: "DateTime" + } + } + } + } +}; + export const OperationListResult: coreClient.CompositeMapper = { type: { name: "Composite", @@ -695,6 +824,59 @@ export const PlatformImagePurchasePlan: coreClient.CompositeMapper = { } }; +export const TargetRegion: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "TargetRegion", + modelProperties: { + name: { + serializedName: "name", + required: true, + type: { + name: "String" + } + }, + replicaCount: { + defaultValue: 1, + constraints: { + InclusiveMinimum: 1 + }, + serializedName: "replicaCount", + type: { + name: "Number" + } + }, + storageAccountType: { + serializedName: "storageAccountType", + type: { + name: "String" + } + } + } + } +}; + +export const DistributeVersioner: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "DistributeVersioner", + uberParent: "DistributeVersioner", + polymorphicDiscriminator: { + serializedName: "scheme", + clientName: "scheme" + }, + modelProperties: { + scheme: { + serializedName: "scheme", + required: true, + type: { + name: "String" + } + } + } + } +}; + export const ImageTemplatePlatformImageSource: coreClient.CompositeMapper = { serializedName: "PlatformImage", type: { @@ -781,6 +963,13 @@ export const ImageTemplateSharedImageVersionSource: coreClient.CompositeMapper = type: { name: "String" } + }, + exactVersion: { + serializedName: "exactVersion", + readOnly: true, + type: { + name: "String" + } } } } @@ -884,6 +1073,7 @@ export const ImageTemplateWindowsUpdateCustomizer: coreClient.CompositeMapper = } }, updateLimit: { + defaultValue: 0, constraints: { InclusiveMinimum: 0 }, @@ -1093,6 +1283,39 @@ export const ImageTemplatePowerShellValidator: coreClient.CompositeMapper = { } }; +export const ImageTemplateFileValidator: coreClient.CompositeMapper = { + serializedName: "File", + type: { + name: "Composite", + className: "ImageTemplateFileValidator", + uberParent: "ImageTemplateInVMValidator", + polymorphicDiscriminator: + ImageTemplateInVMValidator.type.polymorphicDiscriminator, + modelProperties: { + ...ImageTemplateInVMValidator.type.modelProperties, + sourceUri: { + serializedName: "sourceUri", + type: { + name: "String" + } + }, + sha256Checksum: { + defaultValue: "", + serializedName: "sha256Checksum", + type: { + name: "String" + } + }, + destination: { + serializedName: "destination", + type: { + name: "String" + } + } + } + } +}; + export const ImageTemplateManagedImageDistributor: coreClient.CompositeMapper = { serializedName: "ManagedImage", type: { @@ -1140,7 +1363,6 @@ export const ImageTemplateSharedImageDistributor: coreClient.CompositeMapper = { }, replicationRegions: { serializedName: "replicationRegions", - required: true, type: { name: "Sequence", element: { @@ -1162,6 +1384,25 @@ export const ImageTemplateSharedImageDistributor: coreClient.CompositeMapper = { type: { name: "String" } + }, + targetRegions: { + serializedName: "targetRegions", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "TargetRegion" + } + } + } + }, + versioning: { + serializedName: "versioning", + type: { + name: "Composite", + className: "DistributeVersioner" + } } } } @@ -1176,7 +1417,13 @@ export const ImageTemplateVhdDistributor: coreClient.CompositeMapper = { polymorphicDiscriminator: ImageTemplateDistributor.type.polymorphicDiscriminator, modelProperties: { - ...ImageTemplateDistributor.type.modelProperties + ...ImageTemplateDistributor.type.modelProperties, + uri: { + serializedName: "uri", + type: { + name: "String" + } + } } } }; @@ -1215,6 +1462,55 @@ export const ProxyResource: coreClient.CompositeMapper = { } }; +export const SourceImageTriggerProperties: coreClient.CompositeMapper = { + serializedName: "SourceImage", + type: { + name: "Composite", + className: "SourceImageTriggerProperties", + uberParent: "TriggerProperties", + polymorphicDiscriminator: TriggerProperties.type.polymorphicDiscriminator, + modelProperties: { + ...TriggerProperties.type.modelProperties + } + } +}; + +export const DistributeVersionerLatest: coreClient.CompositeMapper = { + serializedName: "Latest", + type: { + name: "Composite", + className: "DistributeVersionerLatest", + uberParent: "DistributeVersioner", + polymorphicDiscriminator: DistributeVersioner.type.polymorphicDiscriminator, + modelProperties: { + ...DistributeVersioner.type.modelProperties, + major: { + defaultValue: -1, + constraints: { + InclusiveMinimum: -1 + }, + serializedName: "major", + type: { + name: "Number" + } + } + } + } +}; + +export const DistributeVersionerSource: coreClient.CompositeMapper = { + serializedName: "Source", + type: { + name: "Composite", + className: "DistributeVersionerSource", + uberParent: "DistributeVersioner", + polymorphicDiscriminator: DistributeVersioner.type.polymorphicDiscriminator, + modelProperties: { + ...DistributeVersioner.type.modelProperties + } + } +}; + export const ImageTemplate: coreClient.CompositeMapper = { type: { name: "Composite", @@ -1247,6 +1543,13 @@ export const ImageTemplate: coreClient.CompositeMapper = { } } }, + optimize: { + serializedName: "properties.optimize", + type: { + name: "Composite", + className: "ImageTemplatePropertiesOptimize" + } + }, validate: { serializedName: "properties.validate", type: { @@ -1276,7 +1579,8 @@ export const ImageTemplate: coreClient.CompositeMapper = { "Updating", "Succeeded", "Failed", - "Deleting" + "Deleting", + "Canceled" ] } }, @@ -1357,7 +1661,8 @@ export const RunOutput: coreClient.CompositeMapper = { "Updating", "Succeeded", "Failed", - "Deleting" + "Deleting", + "Canceled" ] } } @@ -1365,11 +1670,81 @@ export const RunOutput: coreClient.CompositeMapper = { } }; +export const Trigger: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "Trigger", + modelProperties: { + ...ProxyResource.type.modelProperties, + kind: { + serializedName: "properties.kind", + type: { + name: "String" + } + }, + status: { + serializedName: "properties.status", + type: { + name: "Composite", + className: "TriggerStatus" + } + }, + provisioningState: { + serializedName: "properties.provisioningState", + readOnly: true, + type: { + name: "Enum", + allowedValues: [ + "Creating", + "Updating", + "Succeeded", + "Failed", + "Deleting", + "Canceled" + ] + } + } + } + } +}; + +export const VirtualMachineImageTemplatesDeleteHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "VirtualMachineImageTemplatesDeleteHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + } + } + } +}; + +export const TriggersDeleteHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "TriggersDeleteHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + } + } + } +}; + export let discriminators = { ImageTemplateSource: ImageTemplateSource, ImageTemplateCustomizer: ImageTemplateCustomizer, ImageTemplateInVMValidator: ImageTemplateInVMValidator, ImageTemplateDistributor: ImageTemplateDistributor, + TriggerProperties: TriggerProperties, + DistributeVersioner: DistributeVersioner, "ImageTemplateSource.PlatformImage": ImageTemplatePlatformImageSource, "ImageTemplateSource.ManagedImage": ImageTemplateManagedImageSource, "ImageTemplateSource.SharedImageVersion": ImageTemplateSharedImageVersionSource, @@ -1380,7 +1755,11 @@ export let discriminators = { "ImageTemplateCustomizer.File": ImageTemplateFileCustomizer, "ImageTemplateInVMValidator.Shell": ImageTemplateShellValidator, "ImageTemplateInVMValidator.PowerShell": ImageTemplatePowerShellValidator, + "ImageTemplateInVMValidator.File": ImageTemplateFileValidator, "ImageTemplateDistributor.ManagedImage": ImageTemplateManagedImageDistributor, "ImageTemplateDistributor.SharedImage": ImageTemplateSharedImageDistributor, - "ImageTemplateDistributor.VHD": ImageTemplateVhdDistributor + "ImageTemplateDistributor.VHD": ImageTemplateVhdDistributor, + "TriggerProperties.SourceImage": SourceImageTriggerProperties, + "DistributeVersioner.Latest": DistributeVersionerLatest, + "DistributeVersioner.Source": DistributeVersionerSource }; diff --git a/sdk/imagebuilder/arm-imagebuilder/src/models/parameters.ts b/sdk/imagebuilder/arm-imagebuilder/src/models/parameters.ts index 1eb237985c50..9ed886a3733c 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/models/parameters.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/models/parameters.ts @@ -13,7 +13,8 @@ import { } from "@azure/core-client"; import { ImageTemplate as ImageTemplateMapper, - ImageTemplateUpdateParameters as ImageTemplateUpdateParametersMapper + ImageTemplateUpdateParameters as ImageTemplateUpdateParametersMapper, + Trigger as TriggerMapper } from "../models/mappers"; export const accept: OperationParameter = { @@ -54,7 +55,7 @@ export const subscriptionId: OperationURLParameter = { export const apiVersion: OperationQueryParameter = { parameterPath: "apiVersion", mapper: { - defaultValue: "2022-02-14", + defaultValue: "2022-07-01", isConstant: true, serializedName: "api-version", type: { @@ -135,3 +136,22 @@ export const nextLink: OperationURLParameter = { }, skipEncoding: true }; + +export const triggerName: OperationURLParameter = { + parameterPath: "triggerName", + mapper: { + constraints: { + Pattern: new RegExp("^[A-Za-z0-9-_.]{1,64}$") + }, + serializedName: "triggerName", + required: true, + type: { + name: "String" + } + } +}; + +export const parameters2: OperationParameter = { + parameterPath: "parameters", + mapper: TriggerMapper +}; diff --git a/sdk/imagebuilder/arm-imagebuilder/src/operations/index.ts b/sdk/imagebuilder/arm-imagebuilder/src/operations/index.ts index b5c1987cf3fc..1a9449ac9de3 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/operations/index.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/operations/index.ts @@ -7,4 +7,5 @@ */ export * from "./virtualMachineImageTemplates"; +export * from "./triggers"; export * from "./operations"; diff --git a/sdk/imagebuilder/arm-imagebuilder/src/operations/triggers.ts b/sdk/imagebuilder/arm-imagebuilder/src/operations/triggers.ts new file mode 100644 index 000000000000..72c806630d9a --- /dev/null +++ b/sdk/imagebuilder/arm-imagebuilder/src/operations/triggers.ts @@ -0,0 +1,508 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { PagedAsyncIterableIterator, PageSettings } from "@azure/core-paging"; +import { setContinuationToken } from "../pagingHelper"; +import { Triggers } from "../operationsInterfaces"; +import * as coreClient from "@azure/core-client"; +import * as Mappers from "../models/mappers"; +import * as Parameters from "../models/parameters"; +import { ImageBuilderClient } from "../imageBuilderClient"; +import { + SimplePollerLike, + OperationState, + createHttpPoller +} from "@azure/core-lro"; +import { createLroSpec } from "../lroImpl"; +import { + Trigger, + TriggersListByImageTemplateNextOptionalParams, + TriggersListByImageTemplateOptionalParams, + TriggersListByImageTemplateResponse, + TriggersGetOptionalParams, + TriggersGetResponse, + TriggersCreateOrUpdateOptionalParams, + TriggersCreateOrUpdateResponse, + TriggersDeleteOptionalParams, + TriggersListByImageTemplateNextResponse +} from "../models"; + +/// +/** Class containing Triggers operations. */ +export class TriggersImpl implements Triggers { + private readonly client: ImageBuilderClient; + + /** + * Initialize a new instance of the class Triggers class. + * @param client Reference to the service client + */ + constructor(client: ImageBuilderClient) { + this.client = client; + } + + /** + * List all triggers for the specified Image Template resource + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param options The options parameters. + */ + public listByImageTemplate( + resourceGroupName: string, + imageTemplateName: string, + options?: TriggersListByImageTemplateOptionalParams + ): PagedAsyncIterableIterator { + const iter = this.listByImageTemplatePagingAll( + resourceGroupName, + imageTemplateName, + options + ); + return { + next() { + return iter.next(); + }, + [Symbol.asyncIterator]() { + return this; + }, + byPage: (settings?: PageSettings) => { + if (settings?.maxPageSize) { + throw new Error("maxPageSize is not supported by this operation."); + } + return this.listByImageTemplatePagingPage( + resourceGroupName, + imageTemplateName, + options, + settings + ); + } + }; + } + + private async *listByImageTemplatePagingPage( + resourceGroupName: string, + imageTemplateName: string, + options?: TriggersListByImageTemplateOptionalParams, + settings?: PageSettings + ): AsyncIterableIterator { + let result: TriggersListByImageTemplateResponse; + let continuationToken = settings?.continuationToken; + if (!continuationToken) { + result = await this._listByImageTemplate( + resourceGroupName, + imageTemplateName, + options + ); + let page = result.value || []; + continuationToken = result.nextLink; + setContinuationToken(page, continuationToken); + yield page; + } + while (continuationToken) { + result = await this._listByImageTemplateNext( + resourceGroupName, + imageTemplateName, + continuationToken, + options + ); + continuationToken = result.nextLink; + let page = result.value || []; + setContinuationToken(page, continuationToken); + yield page; + } + } + + private async *listByImageTemplatePagingAll( + resourceGroupName: string, + imageTemplateName: string, + options?: TriggersListByImageTemplateOptionalParams + ): AsyncIterableIterator { + for await (const page of this.listByImageTemplatePagingPage( + resourceGroupName, + imageTemplateName, + options + )) { + yield* page; + } + } + + /** + * List all triggers for the specified Image Template resource + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param options The options parameters. + */ + private _listByImageTemplate( + resourceGroupName: string, + imageTemplateName: string, + options?: TriggersListByImageTemplateOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, imageTemplateName, options }, + listByImageTemplateOperationSpec + ); + } + + /** + * Get the specified trigger for the specified image template resource + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param options The options parameters. + */ + get( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + options?: TriggersGetOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, imageTemplateName, triggerName, options }, + getOperationSpec + ); + } + + /** + * Create or update a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param parameters Parameters supplied to the CreateTrigger operation + * @param options The options parameters. + */ + async beginCreateOrUpdate( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + parameters: Trigger, + options?: TriggersCreateOrUpdateOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + TriggersCreateOrUpdateResponse + > + > { + const directSendOperation = async ( + args: coreClient.OperationArguments, + spec: coreClient.OperationSpec + ): Promise => { + return this.client.sendOperationRequest(args, spec); + }; + const sendOperationFn = async ( + args: coreClient.OperationArguments, + spec: coreClient.OperationSpec + ) => { + let currentRawResponse: + | coreClient.FullOperationResponse + | undefined = undefined; + const providedCallback = args.options?.onResponse; + const callback: coreClient.RawResponseCallback = ( + rawResponse: coreClient.FullOperationResponse, + flatResponse: unknown + ) => { + currentRawResponse = rawResponse; + providedCallback?.(rawResponse, flatResponse); + }; + const updatedArgs = { + ...args, + options: { + ...args.options, + onResponse: callback + } + }; + const flatResponse = await directSendOperation(updatedArgs, spec); + return { + flatResponse, + rawResponse: { + statusCode: currentRawResponse!.status, + body: currentRawResponse!.parsedBody, + headers: currentRawResponse!.headers.toJSON() + } + }; + }; + + const lro = createLroSpec({ + sendOperationFn, + args: { + resourceGroupName, + imageTemplateName, + triggerName, + parameters, + options + }, + spec: createOrUpdateOperationSpec + }); + const poller = await createHttpPoller< + TriggersCreateOrUpdateResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "azure-async-operation" + }); + await poller.poll(); + return poller; + } + + /** + * Create or update a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param parameters Parameters supplied to the CreateTrigger operation + * @param options The options parameters. + */ + async beginCreateOrUpdateAndWait( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + parameters: Trigger, + options?: TriggersCreateOrUpdateOptionalParams + ): Promise { + const poller = await this.beginCreateOrUpdate( + resourceGroupName, + imageTemplateName, + triggerName, + parameters, + options + ); + return poller.pollUntilDone(); + } + + /** + * Delete a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param options The options parameters. + */ + async beginDelete( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + options?: TriggersDeleteOptionalParams + ): Promise, void>> { + const directSendOperation = async ( + args: coreClient.OperationArguments, + spec: coreClient.OperationSpec + ): Promise => { + return this.client.sendOperationRequest(args, spec); + }; + const sendOperationFn = async ( + args: coreClient.OperationArguments, + spec: coreClient.OperationSpec + ) => { + let currentRawResponse: + | coreClient.FullOperationResponse + | undefined = undefined; + const providedCallback = args.options?.onResponse; + const callback: coreClient.RawResponseCallback = ( + rawResponse: coreClient.FullOperationResponse, + flatResponse: unknown + ) => { + currentRawResponse = rawResponse; + providedCallback?.(rawResponse, flatResponse); + }; + const updatedArgs = { + ...args, + options: { + ...args.options, + onResponse: callback + } + }; + const flatResponse = await directSendOperation(updatedArgs, spec); + return { + flatResponse, + rawResponse: { + statusCode: currentRawResponse!.status, + body: currentRawResponse!.parsedBody, + headers: currentRawResponse!.headers.toJSON() + } + }; + }; + + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, imageTemplateName, triggerName, options }, + spec: deleteOperationSpec + }); + const poller = await createHttpPoller>(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" + }); + await poller.poll(); + return poller; + } + + /** + * Delete a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param options The options parameters. + */ + async beginDeleteAndWait( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + options?: TriggersDeleteOptionalParams + ): Promise { + const poller = await this.beginDelete( + resourceGroupName, + imageTemplateName, + triggerName, + options + ); + return poller.pollUntilDone(); + } + + /** + * ListByImageTemplateNext + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param nextLink The nextLink from the previous successful call to the ListByImageTemplate method. + * @param options The options parameters. + */ + private _listByImageTemplateNext( + resourceGroupName: string, + imageTemplateName: string, + nextLink: string, + options?: TriggersListByImageTemplateNextOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, imageTemplateName, nextLink, options }, + listByImageTemplateNextOperationSpec + ); + } +} +// Operation Specifications +const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); + +const listByImageTemplateOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VirtualMachineImages/imageTemplates/{imageTemplateName}/triggers", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.TriggerCollection + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.imageTemplateName + ], + headerParameters: [Parameters.accept], + serializer +}; +const getOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VirtualMachineImages/imageTemplates/{imageTemplateName}/triggers/{triggerName}", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.Trigger + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.imageTemplateName, + Parameters.triggerName + ], + headerParameters: [Parameters.accept], + serializer +}; +const createOrUpdateOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VirtualMachineImages/imageTemplates/{imageTemplateName}/triggers/{triggerName}", + httpMethod: "PUT", + responses: { + 200: { + bodyMapper: Mappers.Trigger + }, + 201: { + bodyMapper: Mappers.Trigger + }, + 202: { + bodyMapper: Mappers.Trigger + }, + 204: { + bodyMapper: Mappers.Trigger + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + requestBody: Parameters.parameters2, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.imageTemplateName, + Parameters.triggerName + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; +const deleteOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.VirtualMachineImages/imageTemplates/{imageTemplateName}/triggers/{triggerName}", + httpMethod: "DELETE", + responses: { + 200: {}, + 201: {}, + 202: {}, + 204: {}, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.imageTemplateName, + Parameters.triggerName + ], + headerParameters: [Parameters.accept], + serializer +}; +const listByImageTemplateNextOperationSpec: coreClient.OperationSpec = { + path: "{nextLink}", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.TriggerCollection + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.imageTemplateName, + Parameters.nextLink + ], + headerParameters: [Parameters.accept], + serializer +}; diff --git a/sdk/imagebuilder/arm-imagebuilder/src/operations/virtualMachineImageTemplates.ts b/sdk/imagebuilder/arm-imagebuilder/src/operations/virtualMachineImageTemplates.ts index eb3a9055f51b..fd5fdba731c8 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/operations/virtualMachineImageTemplates.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/operations/virtualMachineImageTemplates.ts @@ -13,8 +13,12 @@ import * as coreClient from "@azure/core-client"; import * as Mappers from "../models/mappers"; import * as Parameters from "../models/parameters"; import { ImageBuilderClient } from "../imageBuilderClient"; -import { PollerLike, PollOperationState, LroEngine } from "@azure/core-lro"; -import { LroImpl } from "../lroImpl"; +import { + SimplePollerLike, + OperationState, + createHttpPoller +} from "@azure/core-lro"; +import { createLroSpec } from "../lroImpl"; import { ImageTemplate, VirtualMachineImageTemplatesListNextOptionalParams, @@ -303,8 +307,8 @@ export class VirtualMachineImageTemplatesImpl parameters: ImageTemplate, options?: VirtualMachineImageTemplatesCreateOrUpdateOptionalParams ): Promise< - PollerLike< - PollOperationState, + SimplePollerLike< + OperationState, VirtualMachineImageTemplatesCreateOrUpdateResponse > > { @@ -314,7 +318,7 @@ export class VirtualMachineImageTemplatesImpl ): Promise => { return this.client.sendOperationRequest(args, spec); }; - const sendOperation = async ( + const sendOperationFn = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ) => { @@ -347,15 +351,18 @@ export class VirtualMachineImageTemplatesImpl }; }; - const lro = new LroImpl( - sendOperation, - { resourceGroupName, imageTemplateName, parameters, options }, - createOrUpdateOperationSpec - ); - const poller = new LroEngine(lro, { - resumeFrom: options?.resumeFrom, + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, imageTemplateName, parameters, options }, + spec: createOrUpdateOperationSpec + }); + const poller = await createHttpPoller< + VirtualMachineImageTemplatesCreateOrUpdateResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs, - lroResourceLocationConfig: "azure-async-operation" + resourceLocationConfig: "azure-async-operation" }); await poller.poll(); return poller; @@ -396,8 +403,8 @@ export class VirtualMachineImageTemplatesImpl parameters: ImageTemplateUpdateParameters, options?: VirtualMachineImageTemplatesUpdateOptionalParams ): Promise< - PollerLike< - PollOperationState, + SimplePollerLike< + OperationState, VirtualMachineImageTemplatesUpdateResponse > > { @@ -407,7 +414,7 @@ export class VirtualMachineImageTemplatesImpl ): Promise => { return this.client.sendOperationRequest(args, spec); }; - const sendOperation = async ( + const sendOperationFn = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ) => { @@ -440,15 +447,18 @@ export class VirtualMachineImageTemplatesImpl }; }; - const lro = new LroImpl( - sendOperation, - { resourceGroupName, imageTemplateName, parameters, options }, - updateOperationSpec - ); - const poller = new LroEngine(lro, { - resumeFrom: options?.resumeFrom, + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, imageTemplateName, parameters, options }, + spec: updateOperationSpec + }); + const poller = await createHttpPoller< + VirtualMachineImageTemplatesUpdateResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs, - lroResourceLocationConfig: "azure-async-operation" + resourceLocationConfig: "azure-async-operation" }); await poller.poll(); return poller; @@ -503,14 +513,14 @@ export class VirtualMachineImageTemplatesImpl resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesDeleteOptionalParams - ): Promise, void>> { + ): Promise, void>> { const directSendOperation = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ): Promise => { return this.client.sendOperationRequest(args, spec); }; - const sendOperation = async ( + const sendOperationFn = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ) => { @@ -543,15 +553,15 @@ export class VirtualMachineImageTemplatesImpl }; }; - const lro = new LroImpl( - sendOperation, - { resourceGroupName, imageTemplateName, options }, - deleteOperationSpec - ); - const poller = new LroEngine(lro, { - resumeFrom: options?.resumeFrom, + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, imageTemplateName, options }, + spec: deleteOperationSpec + }); + const poller = await createHttpPoller>(lro, { + restoreFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs, - lroResourceLocationConfig: "azure-async-operation" + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -586,14 +596,14 @@ export class VirtualMachineImageTemplatesImpl resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesRunOptionalParams - ): Promise, void>> { + ): Promise, void>> { const directSendOperation = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ): Promise => { return this.client.sendOperationRequest(args, spec); }; - const sendOperation = async ( + const sendOperationFn = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ) => { @@ -626,15 +636,15 @@ export class VirtualMachineImageTemplatesImpl }; }; - const lro = new LroImpl( - sendOperation, - { resourceGroupName, imageTemplateName, options }, - runOperationSpec - ); - const poller = new LroEngine(lro, { - resumeFrom: options?.resumeFrom, + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, imageTemplateName, options }, + spec: runOperationSpec + }); + const poller = await createHttpPoller>(lro, { + restoreFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs, - lroResourceLocationConfig: "azure-async-operation" + resourceLocationConfig: "azure-async-operation" }); await poller.poll(); return poller; @@ -669,14 +679,14 @@ export class VirtualMachineImageTemplatesImpl resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesCancelOptionalParams - ): Promise, void>> { + ): Promise, void>> { const directSendOperation = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ): Promise => { return this.client.sendOperationRequest(args, spec); }; - const sendOperation = async ( + const sendOperationFn = async ( args: coreClient.OperationArguments, spec: coreClient.OperationSpec ) => { @@ -709,15 +719,15 @@ export class VirtualMachineImageTemplatesImpl }; }; - const lro = new LroImpl( - sendOperation, - { resourceGroupName, imageTemplateName, options }, - cancelOperationSpec - ); - const poller = new LroEngine(lro, { - resumeFrom: options?.resumeFrom, + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, imageTemplateName, options }, + spec: cancelOperationSpec + }); + const poller = await createHttpPoller>(lro, { + restoreFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs, - lroResourceLocationConfig: "azure-async-operation" + resourceLocationConfig: "azure-async-operation" }); await poller.poll(); return poller; diff --git a/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/index.ts b/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/index.ts index b5c1987cf3fc..1a9449ac9de3 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/index.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/index.ts @@ -7,4 +7,5 @@ */ export * from "./virtualMachineImageTemplates"; +export * from "./triggers"; export * from "./operations"; diff --git a/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/triggers.ts b/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/triggers.ts new file mode 100644 index 000000000000..a6d57d48c3f0 --- /dev/null +++ b/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/triggers.ts @@ -0,0 +1,109 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { PagedAsyncIterableIterator } from "@azure/core-paging"; +import { SimplePollerLike, OperationState } from "@azure/core-lro"; +import { + Trigger, + TriggersListByImageTemplateOptionalParams, + TriggersGetOptionalParams, + TriggersGetResponse, + TriggersCreateOrUpdateOptionalParams, + TriggersCreateOrUpdateResponse, + TriggersDeleteOptionalParams +} from "../models"; + +/// +/** Interface representing a Triggers. */ +export interface Triggers { + /** + * List all triggers for the specified Image Template resource + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param options The options parameters. + */ + listByImageTemplate( + resourceGroupName: string, + imageTemplateName: string, + options?: TriggersListByImageTemplateOptionalParams + ): PagedAsyncIterableIterator; + /** + * Get the specified trigger for the specified image template resource + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param options The options parameters. + */ + get( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + options?: TriggersGetOptionalParams + ): Promise; + /** + * Create or update a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param parameters Parameters supplied to the CreateTrigger operation + * @param options The options parameters. + */ + beginCreateOrUpdate( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + parameters: Trigger, + options?: TriggersCreateOrUpdateOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + TriggersCreateOrUpdateResponse + > + >; + /** + * Create or update a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param parameters Parameters supplied to the CreateTrigger operation + * @param options The options parameters. + */ + beginCreateOrUpdateAndWait( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + parameters: Trigger, + options?: TriggersCreateOrUpdateOptionalParams + ): Promise; + /** + * Delete a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param options The options parameters. + */ + beginDelete( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + options?: TriggersDeleteOptionalParams + ): Promise, void>>; + /** + * Delete a trigger for the specified virtual machine image template + * @param resourceGroupName The name of the resource group. + * @param imageTemplateName The name of the image Template + * @param triggerName The name of the trigger + * @param options The options parameters. + */ + beginDeleteAndWait( + resourceGroupName: string, + imageTemplateName: string, + triggerName: string, + options?: TriggersDeleteOptionalParams + ): Promise; +} diff --git a/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/virtualMachineImageTemplates.ts b/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/virtualMachineImageTemplates.ts index 4b85a39168cc..a568d7e4a1e4 100644 --- a/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/virtualMachineImageTemplates.ts +++ b/sdk/imagebuilder/arm-imagebuilder/src/operationsInterfaces/virtualMachineImageTemplates.ts @@ -7,7 +7,7 @@ */ import { PagedAsyncIterableIterator } from "@azure/core-paging"; -import { PollerLike, PollOperationState } from "@azure/core-lro"; +import { SimplePollerLike, OperationState } from "@azure/core-lro"; import { ImageTemplate, VirtualMachineImageTemplatesListOptionalParams, @@ -71,8 +71,8 @@ export interface VirtualMachineImageTemplates { parameters: ImageTemplate, options?: VirtualMachineImageTemplatesCreateOrUpdateOptionalParams ): Promise< - PollerLike< - PollOperationState, + SimplePollerLike< + OperationState, VirtualMachineImageTemplatesCreateOrUpdateResponse > >; @@ -102,8 +102,8 @@ export interface VirtualMachineImageTemplates { parameters: ImageTemplateUpdateParameters, options?: VirtualMachineImageTemplatesUpdateOptionalParams ): Promise< - PollerLike< - PollOperationState, + SimplePollerLike< + OperationState, VirtualMachineImageTemplatesUpdateResponse > >; @@ -141,7 +141,7 @@ export interface VirtualMachineImageTemplates { resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesDeleteOptionalParams - ): Promise, void>>; + ): Promise, void>>; /** * Delete a virtual machine image template * @param resourceGroupName The name of the resource group. @@ -163,7 +163,7 @@ export interface VirtualMachineImageTemplates { resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesRunOptionalParams - ): Promise, void>>; + ): Promise, void>>; /** * Create artifacts from a existing image template * @param resourceGroupName The name of the resource group. @@ -185,7 +185,7 @@ export interface VirtualMachineImageTemplates { resourceGroupName: string, imageTemplateName: string, options?: VirtualMachineImageTemplatesCancelOptionalParams - ): Promise, void>>; + ): Promise, void>>; /** * Cancel the long running image build based on the image template * @param resourceGroupName The name of the resource group. diff --git a/sdk/imagebuilder/arm-imagebuilder/test/sampleTest.ts b/sdk/imagebuilder/arm-imagebuilder/test/sampleTest.ts new file mode 100644 index 000000000000..25aeb3ebcc36 --- /dev/null +++ b/sdk/imagebuilder/arm-imagebuilder/test/sampleTest.ts @@ -0,0 +1,43 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { + Recorder, + RecorderStartOptions, + env +} from "@azure-tools/test-recorder"; +import { assert } from "chai"; +import { Context } from "mocha"; + +const replaceableVariables: Record = { + AZURE_CLIENT_ID: "azure_client_id", + AZURE_CLIENT_SECRET: "azure_client_secret", + AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888", + SUBSCRIPTION_ID: "azure_subscription_id" +}; + +const recorderOptions: RecorderStartOptions = { + envSetupForPlayback: replaceableVariables +}; + +describe("My test", () => { + let recorder: Recorder; + + beforeEach(async function(this: Context) { + recorder = new Recorder(this.currentTest); + await recorder.start(recorderOptions); + }); + + afterEach(async function() { + await recorder.stop(); + }); + + it("sample test", async function() { + console.log("Hi, I'm a test!"); + }); +}); diff --git a/sdk/imagebuilder/arm-imagebuilder/tsconfig.json b/sdk/imagebuilder/arm-imagebuilder/tsconfig.json index 685d3a99e92a..3e6ae96443f3 100644 --- a/sdk/imagebuilder/arm-imagebuilder/tsconfig.json +++ b/sdk/imagebuilder/arm-imagebuilder/tsconfig.json @@ -15,17 +15,11 @@ ], "declaration": true, "outDir": "./dist-esm", - "importHelpers": true, - "paths": { - "@azure/arm-imagebuilder": [ - "./src/index" - ] - } + "importHelpers": true }, "include": [ "./src/**/*.ts", - "./test/**/*.ts", - "samples-dev/**/*.ts" + "./test/**/*.ts" ], "exclude": [ "node_modules"