From 9751ecfd9dcdabfdafb8ea5d9058e0d2da3048b2 Mon Sep 17 00:00:00 2001 From: SDKAuto Date: Thu, 2 Nov 2023 19:02:59 +0000 Subject: [PATCH] CodeGen from PR 25967 in Azure/azure-rest-api-specs [Hub Generated] Review request for Microsoft.DataProtection to add version preview/2023-08-01-preview (#25967) * Adds base for updating Microsoft.DataProtection from version preview/2023-06-01-preview to version 2023-08-01-preview * Updates readme * Updates API version in new specs and examples * Re-Validate API Swagger Changes * JobCancel & Job InProgress changes * vault tier changes aks (#25972) * Add is isPartialRP boolean to AzureBackupDiscreteRecoveryPoint and examples (#25974) * Add is ispartialrp to AzureBackupDiscreteRecoveryPoint and examples * Fix prettier issues in examples * Including ValidateForModifyBackupRequest Defn. * resolved comments (#26064) * Revert IsPartialRP changes (#26070) * Using Restricted Pattern for Vault Name (#26169) * Handling Validation Errors (#26186) * removing 200 status code * LintDiff fix - using common types error response (#26187) * whitespace handling * Editing where clause * Removing Where Condition --------- Co-authored-by: Dishant Munjal Co-authored-by: chandrasekarendran <59728024+chandrasekarendran@users.noreply.github.com> Co-authored-by: soumyapattnaik <33341338+soumyapattnaik@users.noreply.github.com> Co-authored-by: nickpacificomsft <144935783+nickpacificomsft@users.noreply.github.com> Co-authored-by: asmitt <62243673+asmitt@users.noreply.github.com> --- common/config/rush/pnpm-lock.yaml | 12 +- .../arm-dataprotection/CHANGELOG.md | 90 ++- .../arm-dataprotection/README.md | 2 +- .../arm-dataprotection/_meta.json | 8 +- .../arm-dataprotection/package.json | 26 +- .../review/arm-dataprotection.api.md | 333 ++++++++- .../src/dataProtectionClient.ts | 22 +- .../arm-dataprotection/src/models/index.ts | 479 +++++++++++-- .../arm-dataprotection/src/models/mappers.ts | 650 +++++++++++++++++- .../src/models/parameters.ts | 82 ++- .../src/operations/backupInstances.ts | 424 +++++++++++- .../backupInstancesExtensionRouting.ts | 161 +++++ .../src/operations/crossRegionRestoreJob.ts | 76 ++ .../src/operations/crossRegionRestoreJobs.ts | 217 ++++++ .../src/operations/dppResourceGuardProxy.ts | 4 +- .../src/operations/index.ts | 4 + .../arm-dataprotection/src/operations/jobs.ts | 183 +++++ .../src/operations/resourceGuards.ts | 4 +- .../src/operations/restorableTimeRanges.ts | 2 +- .../src/operations/secondaryRPs.ts | 225 ++++++ .../operationsInterfaces/backupInstances.ts | 102 +++ .../backupInstancesExtensionRouting.ts | 27 + .../crossRegionRestoreJob.ts | 29 + .../crossRegionRestoreJobs.ts | 31 + .../src/operationsInterfaces/index.ts | 4 + .../src/operationsInterfaces/jobs.ts | 54 +- .../src/operationsInterfaces/secondaryRPs.ts | 33 + .../arm-dataprotection/test/sampleTest.ts | 43 ++ .../arm-dataprotection/tsconfig.json | 10 +- 29 files changed, 3200 insertions(+), 137 deletions(-) create mode 100644 sdk/dataprotection/arm-dataprotection/src/operations/backupInstancesExtensionRouting.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJob.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJobs.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operations/secondaryRPs.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstancesExtensionRouting.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts create mode 100644 sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts create mode 100644 sdk/dataprotection/arm-dataprotection/test/sampleTest.ts diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 3fcf5b897137..3d240e9429a1 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -4495,7 +4495,7 @@ packages: dependencies: semver: 7.5.4 shelljs: 0.8.5 - typescript: 5.3.0-dev.20231031 + typescript: 5.3.0-dev.20231102 dev: false /eastasianwidth@0.2.0: @@ -9272,8 +9272,8 @@ packages: hasBin: true dev: false - /typescript@5.3.0-dev.20231031: - resolution: {integrity: sha512-+w6szmOFr7GSWj/eNFgHdYqubMux9B5ao5LFoGdn712gbDYMpLwqLNkPLpJHD9chl/2wc/W96iSfALkZs7sVXQ==} + /typescript@5.3.0-dev.20231102: + resolution: {integrity: sha512-M1maLdHyAvE+y4w27IBplkqekR5Lzf2B7XualvF3lXJUC2165swvSmpThFdfHcXxP/+/SYmLI9z2CVvN7pEK+g==} engines: {node: '>=14.17'} hasBin: true dev: false @@ -12113,20 +12113,22 @@ packages: dev: false file:projects/arm-dataprotection.tgz: - resolution: {integrity: sha512-fbX3LFgjnpFsuNWE875EHY/b3hwwL7EzqT/CGl/ijIFhhtr5kCRpgrovJGaceVXjLrE8H2g90M3ZPJ30FHk/Mw==, tarball: file:projects/arm-dataprotection.tgz} + resolution: {integrity: sha512-edAE2wjDB1dv5DiwnM0jZrVFfJjrlOvSHU3FbfdvYoQkyHjcdllZekz5lcxBlSZPS9lxPH/3bdAn3f+Auimxvw==, tarball: file:projects/arm-dataprotection.tgz} name: '@rush-temp/arm-dataprotection' version: 0.0.0 dependencies: '@azure/identity': 3.3.2 '@microsoft/api-extractor': 7.38.0(@types/node@18.18.7) '@types/chai': 4.3.9 + '@types/mocha': 10.0.3 '@types/node': 18.18.7 chai: 4.3.10 cross-env: 7.0.3 dotenv: 16.3.1 + esm: 3.2.25 mkdirp: 2.1.6 mocha: 10.2.0 - rimraf: 3.0.2 + rimraf: 5.0.5 ts-node: 10.9.1(@types/node@18.18.7)(typescript@5.2.2) tslib: 2.6.2 typescript: 5.2.2 diff --git a/sdk/dataprotection/arm-dataprotection/CHANGELOG.md b/sdk/dataprotection/arm-dataprotection/CHANGELOG.md index 9b9de0b5b311..9819dfc250cd 100644 --- a/sdk/dataprotection/arm-dataprotection/CHANGELOG.md +++ b/sdk/dataprotection/arm-dataprotection/CHANGELOG.md @@ -1,15 +1,87 @@ # Release History + +## 2.0.0-beta.1 (2023-11-02) + +**Features** -## 1.2.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed + - Added operation group BackupInstancesExtensionRouting + - Added operation group CrossRegionRestoreJob + - Added operation group CrossRegionRestoreJobs + - Added operation group SecondaryRPs + - Added operation BackupInstances.beginTriggerCrossRegionRestore + - Added operation BackupInstances.beginTriggerCrossRegionRestoreAndWait + - Added operation BackupInstances.beginValidateCrossRegionRestore + - Added operation BackupInstances.beginValidateCrossRegionRestoreAndWait + - Added operation BackupInstances.beginValidateForModifyBackup + - Added operation BackupInstances.beginValidateForModifyBackupAndWait + - Added operation Jobs.beginTriggerCancel + - Added operation Jobs.beginTriggerCancelAndWait + - Added operation Jobs.generateProgressUrl + - Added Interface AzureBackupJobProgressUrl + - Added Interface BackupInstancesExtensionRoutingListNextOptionalParams + - Added Interface BackupInstancesExtensionRoutingListOptionalParams + - Added Interface BackupInstancesTriggerCrossRegionRestoreHeaders + - Added Interface BackupInstancesTriggerCrossRegionRestoreOptionalParams + - Added Interface BackupInstancesValidateCrossRegionRestoreHeaders + - Added Interface BackupInstancesValidateCrossRegionRestoreOptionalParams + - Added Interface BackupInstancesValidateForModifyBackupHeaders + - Added Interface BackupInstancesValidateForModifyBackupOptionalParams + - Added Interface CmkKekIdentity + - Added Interface CmkKeyVaultProperties + - Added Interface CrossRegionRestoreDetails + - Added Interface CrossRegionRestoreJobGetOptionalParams + - Added Interface CrossRegionRestoreJobRequest + - Added Interface CrossRegionRestoreJobsListNextOptionalParams + - Added Interface CrossRegionRestoreJobsListOptionalParams + - Added Interface CrossRegionRestoreJobsRequest + - Added Interface CrossRegionRestoreRequestObject + - Added Interface DefaultResourceProperties + - Added Interface EncryptionSettings + - Added Interface ErrorDetail + - Added Interface ErrorResponse + - Added Interface FetchSecondaryRPsRequestParameters + - Added Interface JobsGenerateProgressUrlOptionalParams + - Added Interface JobsTriggerCancelHeaders + - Added Interface JobsTriggerCancelOptionalParams + - Added Interface KubernetesClusterVaultTierRestoreCriteria + - Added Interface SecondaryRPsFetchNextOptionalParams + - Added Interface SecondaryRPsFetchOptionalParams + - Added Interface UserFacingWarningDetail + - Added Interface ValidateCrossRegionRestoreRequestObject + - Added Interface ValidateForModifyBackupRequest + - Added Type Alias BackupInstancesExtensionRoutingListNextResponse + - Added Type Alias BackupInstancesExtensionRoutingListResponse + - Added Type Alias BackupInstancesTriggerCrossRegionRestoreResponse + - Added Type Alias BackupInstancesValidateCrossRegionRestoreResponse + - Added Type Alias BackupInstancesValidateForModifyBackupResponse + - Added Type Alias BaseResourcePropertiesUnion + - Added Type Alias CrossRegionRestoreJobGetResponse + - Added Type Alias CrossRegionRestoreJobsListNextResponse + - Added Type Alias CrossRegionRestoreJobsListResponse + - Added Type Alias EncryptionState + - Added Type Alias IdentityType + - Added Type Alias InfrastructureEncryptionState + - Added Type Alias JobsGenerateProgressUrlResponse + - Added Type Alias JobsTriggerCancelResponse + - Added Type Alias ResourcePropertiesObjectType + - Added Type Alias SecondaryRPsFetchNextResponse + - Added Type Alias SecondaryRPsFetchResponse + - Interface AzureBackupJob has a new optional parameter sourceDataStoreType + - Interface JobExtendedInfo has a new optional parameter warningDetails + - Interface SecuritySettings has a new optional parameter encryptionSettings + - Type of parameter objectType of interface ItemLevelRestoreCriteria is changed from "ItemPathBasedRestoreCriteria" | "RangeBasedItemLevelRestoreCriteria" | "KubernetesStorageClassRestoreCriteria" | "KubernetesPVRestoreCriteria" | "KubernetesClusterRestoreCriteria" to "ItemPathBasedRestoreCriteria" | "RangeBasedItemLevelRestoreCriteria" | "KubernetesStorageClassRestoreCriteria" | "KubernetesPVRestoreCriteria" | "KubernetesClusterRestoreCriteria" | "KubernetesClusterVaultTierRestoreCriteria" + - Added Enum KnownEncryptionState + - Added Enum KnownIdentityType + - Added Enum KnownInfrastructureEncryptionState + - Added Enum KnownResourcePropertiesObjectType -### Other Changes +**Breaking Changes** + - Type of parameter objectType of interface BaseResourceProperties is changed from "BaseResourceProperties" to "DefaultResourceProperties" + - Type of parameter resourceProperties of interface Datasource is changed from BaseResourceProperties to BaseResourcePropertiesUnion + - Type of parameter resourceProperties of interface DatasourceSet is changed from BaseResourceProperties to BaseResourcePropertiesUnion + + ## 1.2.0 (2023-07-10) **Features** @@ -62,4 +134,4 @@ ## 1.0.0 (2023-03-08) -The package of @azure/arm-dataprotection is using our next generation design principles. To learn more, please refer to our documentation [Quick Start](https://aka.ms/azsdk/js/mgmt/quickstart ). +The package of @azure/arm-dataprotection is using our next generation design principles. To learn more, please refer to our documentation [Quick Start](https://aka.ms/js-track2-quickstart). diff --git a/sdk/dataprotection/arm-dataprotection/README.md b/sdk/dataprotection/arm-dataprotection/README.md index b96d59c2cadd..b8dfaf89280d 100644 --- a/sdk/dataprotection/arm-dataprotection/README.md +++ b/sdk/dataprotection/arm-dataprotection/README.md @@ -6,7 +6,7 @@ Open API 2.0 Specs for Azure Data Protection service [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/dataprotection/arm-dataprotection) | [Package (NPM)](https://www.npmjs.com/package/@azure/arm-dataprotection) | -[API reference documentation](https://docs.microsoft.com/javascript/api/@azure/arm-dataprotection) | +[API reference documentation](https://docs.microsoft.com/javascript/api/@azure/arm-dataprotection?view=azure-node-preview) | [Samples](https://github.com/Azure-Samples/azure-samples-js-management) ## Getting started diff --git a/sdk/dataprotection/arm-dataprotection/_meta.json b/sdk/dataprotection/arm-dataprotection/_meta.json index ecfdd4e96408..3ff3153ef156 100644 --- a/sdk/dataprotection/arm-dataprotection/_meta.json +++ b/sdk/dataprotection/arm-dataprotection/_meta.json @@ -1,8 +1,8 @@ { - "commit": "0f39a2d56070d2bc4251494525cb8af88583a938", + "commit": "9b96120c4ee5c8a0882748b0355a23d374d300a6", "readme": "specification/dataprotection/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=D:\\Git\\azure-sdk-for-js ..\\azure-rest-api-specs\\specification\\dataprotection\\resource-manager\\readme.md --use=@autorest/typescript@6.0.5 --generate-sample=true", + "autorest_command": "autorest --version=3.9.7 --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/dataprotection/resource-manager/readme.md --use=@autorest/typescript@^6.0.12", "repository_url": "https://github.com/Azure/azure-rest-api-specs.git", - "release_tool": "@azure-tools/js-sdk-release-tools@2.7.0", - "use": "@autorest/typescript@6.0.5" + "release_tool": "@azure-tools/js-sdk-release-tools@2.7.4", + "use": "@autorest/typescript@^6.0.12" } \ No newline at end of file diff --git a/sdk/dataprotection/arm-dataprotection/package.json b/sdk/dataprotection/arm-dataprotection/package.json index a4ccf62695c3..48f83b2899b9 100644 --- a/sdk/dataprotection/arm-dataprotection/package.json +++ b/sdk/dataprotection/arm-dataprotection/package.json @@ -3,17 +3,17 @@ "sdk-type": "mgmt", "author": "Microsoft Corporation", "description": "A generated SDK for DataProtectionClient.", - "version": "1.2.1", + "version": "2.0.0-beta.1", "engines": { "node": ">=18.0.0" }, "dependencies": { - "@azure/core-lro": "^2.5.3", + "@azure/core-lro": "^2.5.4", "@azure/abort-controller": "^1.0.0", "@azure/core-paging": "^1.2.0", "@azure/core-client": "^1.7.0", "@azure/core-auth": "^1.3.0", - "@azure/core-rest-pipeline": "^1.8.0", + "@azure/core-rest-pipeline": "^1.12.0", "tslib": "^2.2.0" }, "keywords": [ @@ -32,17 +32,19 @@ "mkdirp": "^2.1.2", "typescript": "~5.2.0", "uglify-js": "^3.4.9", - "rimraf": "^3.0.0", + "rimraf": "^5.0.0", "dotenv": "^16.0.0", + "@azure/dev-tool": "^1.0.0", "@azure/identity": "^3.3.0", "@azure-tools/test-recorder": "^3.0.0", "@azure-tools/test-credential": "^1.0.0", "mocha": "^10.0.0", + "@types/mocha": "^10.0.0", + "esm": "^3.2.18", "@types/chai": "^4.2.8", "chai": "^4.2.0", "cross-env": "^7.0.2", "@types/node": "^18.0.0", - "@azure/dev-tool": "^1.0.0", "ts-node": "^10.0.0" }, "repository": { @@ -77,7 +79,7 @@ "extract-api": "api-extractor run --local", "lint": "echo skipped", "audit": "echo skipped", - "clean": "rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log", + "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", "build:node": "echo skipped", "build:browser": "echo skipped", "build:test": "echo skipped", @@ -105,13 +107,5 @@ ] }, "autoPublish": true, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/dataprotection/arm-dataprotection", - "//sampleConfiguration": { - "productName": "", - "productSlugs": [ - "azure" - ], - "disableDocsMs": true, - "apiRefLink": "https://docs.microsoft.com/javascript/api/@azure/arm-dataprotection?view=azure-node-preview" - } -} + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/dataprotection/arm-dataprotection" +} \ No newline at end of file diff --git a/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md b/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md index c903e9dfdbed..5009583f5cc3 100644 --- a/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md +++ b/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md @@ -130,6 +130,7 @@ export interface AzureBackupJob { readonly restoreType?: string; // (undocumented) sourceDataStoreName?: string; + readonly sourceDataStoreType?: string; sourceResourceGroup: string; sourceSubscriptionID: string; startTime: Date; @@ -139,6 +140,11 @@ export interface AzureBackupJob { vaultName: string; } +// @public +export interface AzureBackupJobProgressUrl { + progressUrl?: string; +} + // @public export interface AzureBackupJobResource extends DppResource { properties?: AzureBackupJob; @@ -305,12 +311,22 @@ export interface BackupInstances { beginSuspendBackupsAndWait(resourceGroupName: string, vaultName: string, backupInstanceName: string, options?: BackupInstancesSuspendBackupsOptionalParams): Promise; beginSyncBackupInstance(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: SyncBackupInstanceRequest, options?: BackupInstancesSyncBackupInstanceOptionalParams): Promise, void>>; beginSyncBackupInstanceAndWait(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: SyncBackupInstanceRequest, options?: BackupInstancesSyncBackupInstanceOptionalParams): Promise; + // (undocumented) + beginTriggerCrossRegionRestore(resourceGroupName: string, location: string, parameters: CrossRegionRestoreRequestObject, options?: BackupInstancesTriggerCrossRegionRestoreOptionalParams): Promise, BackupInstancesTriggerCrossRegionRestoreResponse>>; + // (undocumented) + beginTriggerCrossRegionRestoreAndWait(resourceGroupName: string, location: string, parameters: CrossRegionRestoreRequestObject, options?: BackupInstancesTriggerCrossRegionRestoreOptionalParams): Promise; beginTriggerRehydrate(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: AzureBackupRehydrationRequest, options?: BackupInstancesTriggerRehydrateOptionalParams): Promise, BackupInstancesTriggerRehydrateResponse>>; beginTriggerRehydrateAndWait(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: AzureBackupRehydrationRequest, options?: BackupInstancesTriggerRehydrateOptionalParams): Promise; beginTriggerRestore(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: AzureBackupRestoreRequestUnion, options?: BackupInstancesTriggerRestoreOptionalParams): Promise, BackupInstancesTriggerRestoreResponse>>; beginTriggerRestoreAndWait(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: AzureBackupRestoreRequestUnion, options?: BackupInstancesTriggerRestoreOptionalParams): Promise; + // (undocumented) + beginValidateCrossRegionRestore(resourceGroupName: string, location: string, parameters: ValidateCrossRegionRestoreRequestObject, options?: BackupInstancesValidateCrossRegionRestoreOptionalParams): Promise, BackupInstancesValidateCrossRegionRestoreResponse>>; + // (undocumented) + beginValidateCrossRegionRestoreAndWait(resourceGroupName: string, location: string, parameters: ValidateCrossRegionRestoreRequestObject, options?: BackupInstancesValidateCrossRegionRestoreOptionalParams): Promise; beginValidateForBackup(resourceGroupName: string, vaultName: string, parameters: ValidateForBackupRequest, options?: BackupInstancesValidateForBackupOptionalParams): Promise, BackupInstancesValidateForBackupResponse>>; beginValidateForBackupAndWait(resourceGroupName: string, vaultName: string, parameters: ValidateForBackupRequest, options?: BackupInstancesValidateForBackupOptionalParams): Promise; + beginValidateForModifyBackup(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: ValidateForModifyBackupRequest, options?: BackupInstancesValidateForModifyBackupOptionalParams): Promise, BackupInstancesValidateForModifyBackupResponse>>; + beginValidateForModifyBackupAndWait(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: ValidateForModifyBackupRequest, options?: BackupInstancesValidateForModifyBackupOptionalParams): Promise; beginValidateForRestore(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: ValidateRestoreRequestObject, options?: BackupInstancesValidateForRestoreOptionalParams): Promise, BackupInstancesValidateForRestoreResponse>>; beginValidateForRestoreAndWait(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: ValidateRestoreRequestObject, options?: BackupInstancesValidateForRestoreOptionalParams): Promise; get(resourceGroupName: string, vaultName: string, backupInstanceName: string, options?: BackupInstancesGetOptionalParams): Promise; @@ -362,6 +378,25 @@ export interface BackupInstancesDeleteOptionalParams extends coreClient.Operatio updateIntervalInMs?: number; } +// @public +export interface BackupInstancesExtensionRouting { + list(resourceId: string, options?: BackupInstancesExtensionRoutingListOptionalParams): PagedAsyncIterableIterator; +} + +// @public +export interface BackupInstancesExtensionRoutingListNextOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type BackupInstancesExtensionRoutingListNextResponse = BackupInstanceResourceList; + +// @public +export interface BackupInstancesExtensionRoutingListOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type BackupInstancesExtensionRoutingListResponse = BackupInstanceResourceList; + // @public export interface BackupInstancesGetBackupInstanceOperationResultOptionalParams extends coreClient.OperationOptions { } @@ -455,6 +490,22 @@ export interface BackupInstancesSyncBackupInstanceOptionalParams extends coreCli updateIntervalInMs?: number; } +// @public +export interface BackupInstancesTriggerCrossRegionRestoreHeaders { + azureAsyncOperation?: string; + location?: string; + retryAfter?: number; +} + +// @public +export interface BackupInstancesTriggerCrossRegionRestoreOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export type BackupInstancesTriggerCrossRegionRestoreResponse = OperationJobExtendedInfo; + // @public export interface BackupInstancesTriggerRehydrateHeaders { azureAsyncOperation?: string; @@ -487,6 +538,22 @@ export interface BackupInstancesTriggerRestoreOptionalParams extends coreClient. // @public export type BackupInstancesTriggerRestoreResponse = OperationJobExtendedInfo; +// @public +export interface BackupInstancesValidateCrossRegionRestoreHeaders { + azureAsyncOperation?: string; + location?: string; + retryAfter?: number; +} + +// @public +export interface BackupInstancesValidateCrossRegionRestoreOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export type BackupInstancesValidateCrossRegionRestoreResponse = OperationJobExtendedInfo; + // @public export interface BackupInstancesValidateForBackupHeaders { azureAsyncOperation?: string; @@ -503,6 +570,22 @@ export interface BackupInstancesValidateForBackupOptionalParams extends coreClie // @public export type BackupInstancesValidateForBackupResponse = OperationJobExtendedInfo; +// @public +export interface BackupInstancesValidateForModifyBackupHeaders { + azureAsyncOperation?: string; + location?: string; + retryAfter?: number; +} + +// @public +export interface BackupInstancesValidateForModifyBackupOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export type BackupInstancesValidateForModifyBackupResponse = BackupInstancesValidateForModifyBackupHeaders; + // @public export interface BackupInstancesValidateForRestoreHeaders { azureAsyncOperation?: string; @@ -733,9 +816,12 @@ export type BasePolicyRuleUnion = BasePolicyRule | AzureBackupRule | AzureRetent // @public export interface BaseResourceProperties { - objectType: "BaseResourceProperties"; + objectType: "DefaultResourceProperties"; } +// @public (undocumented) +export type BaseResourcePropertiesUnion = BaseResourceProperties | DefaultResourceProperties; + // @public export interface BlobBackupDatasourceParameters extends BackupDatasourceParameters { containersList: string[]; @@ -800,6 +886,17 @@ export interface CloudError { error?: ErrorModel; } +// @public +export interface CmkKekIdentity { + identityId?: string; + identityType?: IdentityType; +} + +// @public +export interface CmkKeyVaultProperties { + keyUri?: string; +} + // @public export interface CopyOnExpiryOption extends CopyOption { objectType: "CopyOnExpiryOption"; @@ -816,6 +913,71 @@ export type CopyOptionUnion = CopyOption | CopyOnExpiryOption | CustomCopyOption // @public export type CreatedByType = string; +// @public +export interface CrossRegionRestoreDetails { + // (undocumented) + sourceBackupInstanceId: string; + // (undocumented) + sourceRegion: string; +} + +// @public +export interface CrossRegionRestoreJob { + // (undocumented) + get(resourceGroupName: string, location: string, parameters: CrossRegionRestoreJobRequest, options?: CrossRegionRestoreJobGetOptionalParams): Promise; +} + +// @public +export interface CrossRegionRestoreJobGetOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type CrossRegionRestoreJobGetResponse = AzureBackupJobResource; + +// @public (undocumented) +export interface CrossRegionRestoreJobRequest { + // (undocumented) + jobId: string; + // (undocumented) + sourceBackupVaultId: string; + // (undocumented) + sourceRegion: string; +} + +// @public +export interface CrossRegionRestoreJobs { + // (undocumented) + list(resourceGroupName: string, location: string, parameters: CrossRegionRestoreJobsRequest, options?: CrossRegionRestoreJobsListOptionalParams): PagedAsyncIterableIterator; +} + +// @public +export interface CrossRegionRestoreJobsListNextOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type CrossRegionRestoreJobsListNextResponse = AzureBackupJobResourceList; + +// @public +export interface CrossRegionRestoreJobsListOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type CrossRegionRestoreJobsListResponse = AzureBackupJobResourceList; + +// @public (undocumented) +export interface CrossRegionRestoreJobsRequest { + // (undocumented) + sourceBackupVaultId: string; + // (undocumented) + sourceRegion: string; +} + +// @public +export interface CrossRegionRestoreRequestObject { + crossRegionRestoreDetails: CrossRegionRestoreDetails; + restoreRequestObject: AzureBackupRestoreRequestUnion; +} + // @public (undocumented) export interface CrossRegionRestoreSettings { state?: CrossRegionRestoreState; @@ -864,12 +1026,18 @@ export class DataProtectionClient extends coreClient.ServiceClient { // (undocumented) backupInstances: BackupInstances; // (undocumented) + backupInstancesExtensionRouting: BackupInstancesExtensionRouting; + // (undocumented) backupPolicies: BackupPolicies; // (undocumented) backupVaultOperationResults: BackupVaultOperationResults; // (undocumented) backupVaults: BackupVaults; // (undocumented) + crossRegionRestoreJob: CrossRegionRestoreJob; + // (undocumented) + crossRegionRestoreJobs: CrossRegionRestoreJobs; + // (undocumented) dataProtection: DataProtection; // (undocumented) dataProtectionOperations: DataProtectionOperations; @@ -898,6 +1066,8 @@ export class DataProtectionClient extends coreClient.ServiceClient { // (undocumented) restorableTimeRanges: RestorableTimeRanges; // (undocumented) + secondaryRPs: SecondaryRPs; + // (undocumented) subscriptionId?: string; } @@ -934,7 +1104,7 @@ export interface Datasource { resourceID: string; resourceLocation?: string; resourceName?: string; - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; resourceType?: string; resourceUri?: string; } @@ -946,7 +1116,7 @@ export interface DatasourceSet { resourceID: string; resourceLocation?: string; resourceName?: string; - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; resourceType?: string; resourceUri?: string; } @@ -978,6 +1148,11 @@ export interface Day { // @public export type DayOfWeek = string; +// @public +export interface DefaultResourceProperties extends BaseResourceProperties { + objectType: "DefaultResourceProperties"; +} + // @public export interface DeletedBackupInstance extends BackupInstance { readonly deletionInfo?: DeletionInfo; @@ -1185,12 +1360,32 @@ export interface DppWorkerRequest { uri?: string; } +// @public +export interface EncryptionSettings { + infrastructureEncryption?: InfrastructureEncryptionState; + kekIdentity?: CmkKekIdentity; + keyVaultProperties?: CmkKeyVaultProperties; + state?: EncryptionState; +} + +// @public +export type EncryptionState = string; + // @public export interface ErrorAdditionalInfo { readonly info?: Record; readonly type?: string; } +// @public +export interface ErrorDetail { + readonly additionalInfo?: ErrorAdditionalInfo[]; + readonly code?: string; + readonly details?: ErrorDetail[]; + readonly message?: string; + readonly target?: string; +} + // @public export interface ErrorModel { readonly additionalInfo?: ErrorAdditionalInfo[]; @@ -1200,6 +1395,11 @@ export interface ErrorModel { readonly target?: string; } +// @public +export interface ErrorResponse { + error?: ErrorDetail; +} + // @public export type ExistingResourcePolicy = string; @@ -1287,6 +1487,12 @@ export interface FeatureValidationResponseBase { // @public (undocumented) export type FeatureValidationResponseBaseUnion = FeatureValidationResponseBase | FeatureValidationResponse; +// @public +export interface FetchSecondaryRPsRequestParameters { + sourceBackupInstanceId?: string; + sourceRegion?: string; +} + // @public export function getContinuationToken(page: unknown): string | undefined; @@ -1296,6 +1502,9 @@ export interface IdentityDetails { useSystemAssignedIdentity?: boolean; } +// @public +export type IdentityType = string; + // @public export interface ImmediateCopyOption extends CopyOption { objectType: "ImmediateCopyOption"; @@ -1309,6 +1518,9 @@ export interface ImmutabilitySettings { // @public export type ImmutabilityState = string; +// @public +export type InfrastructureEncryptionState = string; + // @public export interface InnerError { additionalInfo?: { @@ -1320,11 +1532,11 @@ export interface InnerError { // @public export interface ItemLevelRestoreCriteria { - objectType: "ItemPathBasedRestoreCriteria" | "RangeBasedItemLevelRestoreCriteria" | "KubernetesStorageClassRestoreCriteria" | "KubernetesPVRestoreCriteria" | "KubernetesClusterRestoreCriteria"; + objectType: "ItemPathBasedRestoreCriteria" | "RangeBasedItemLevelRestoreCriteria" | "KubernetesStorageClassRestoreCriteria" | "KubernetesPVRestoreCriteria" | "KubernetesClusterRestoreCriteria" | "KubernetesClusterVaultTierRestoreCriteria"; } // @public (undocumented) -export type ItemLevelRestoreCriteriaUnion = ItemLevelRestoreCriteria | ItemPathBasedRestoreCriteria | RangeBasedItemLevelRestoreCriteria | KubernetesStorageClassRestoreCriteria | KubernetesPVRestoreCriteria | KubernetesClusterRestoreCriteria; +export type ItemLevelRestoreCriteriaUnion = ItemLevelRestoreCriteria | ItemPathBasedRestoreCriteria | RangeBasedItemLevelRestoreCriteria | KubernetesStorageClassRestoreCriteria | KubernetesPVRestoreCriteria | KubernetesClusterRestoreCriteria | KubernetesClusterVaultTierRestoreCriteria; // @public export interface ItemLevelRestoreTargetInfo extends RestoreTargetInfoBase { @@ -1354,14 +1566,25 @@ export interface JobExtendedInfo { readonly sourceRecoverPoint?: RestoreJobRecoveryPointDetails; readonly subTasks?: JobSubTask[]; readonly targetRecoverPoint?: RestoreJobRecoveryPointDetails; + readonly warningDetails?: UserFacingWarningDetail[]; } // @public export interface Jobs { + beginTriggerCancel(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsTriggerCancelOptionalParams): Promise, JobsTriggerCancelResponse>>; + beginTriggerCancelAndWait(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsTriggerCancelOptionalParams): Promise; + generateProgressUrl(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsGenerateProgressUrlOptionalParams): Promise; get(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsGetOptionalParams): Promise; list(resourceGroupName: string, vaultName: string, options?: JobsListOptionalParams): PagedAsyncIterableIterator; } +// @public +export interface JobsGenerateProgressUrlOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type JobsGenerateProgressUrlResponse = AzureBackupJobProgressUrl; + // @public export interface JobsGetOptionalParams extends coreClient.OperationOptions { } @@ -1383,6 +1606,21 @@ export interface JobsListOptionalParams extends coreClient.OperationOptions { // @public export type JobsListResponse = AzureBackupJobResourceList; +// @public +export interface JobsTriggerCancelHeaders { + location?: string; + retryAfter?: number; +} + +// @public +export interface JobsTriggerCancelOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export type JobsTriggerCancelResponse = JobsTriggerCancelHeaders; + // @public export interface JobSubTask { additionalDetails?: { @@ -1464,6 +1702,13 @@ export enum KnownDayOfWeek { Wednesday = "Wednesday" } +// @public +export enum KnownEncryptionState { + Disabled = "Disabled", + Enabled = "Enabled", + Inconsistent = "Inconsistent" +} + // @public export enum KnownExistingResourcePolicy { Patch = "Patch", @@ -1486,6 +1731,12 @@ export enum KnownFeatureType { Invalid = "Invalid" } +// @public +export enum KnownIdentityType { + SystemAssigned = "SystemAssigned", + UserAssigned = "UserAssigned" +} + // @public export enum KnownImmutabilityState { Disabled = "Disabled", @@ -1493,6 +1744,12 @@ export enum KnownImmutabilityState { Unlocked = "Unlocked" } +// @public +export enum KnownInfrastructureEncryptionState { + Disabled = "Disabled", + Enabled = "Enabled" +} + // @public export enum KnownMonth { April = "April", @@ -1559,6 +1816,11 @@ export enum KnownResourceMoveState { Unknown = "Unknown" } +// @public +export enum KnownResourcePropertiesObjectType { + DefaultResourceProperties = "DefaultResourceProperties" +} + // @public export enum KnownRestoreSourceDataStoreType { ArchiveStore = "ArchiveStore", @@ -1678,6 +1940,25 @@ export interface KubernetesClusterRestoreCriteria extends ItemLevelRestoreCriter restoreHookReferences?: NamespacedNameResource[]; } +// @public +export interface KubernetesClusterVaultTierRestoreCriteria extends ItemLevelRestoreCriteria { + conflictPolicy?: ExistingResourcePolicy; + excludedNamespaces?: string[]; + excludedResourceTypes?: string[]; + includeClusterScopeResources: boolean; + includedNamespaces?: string[]; + includedResourceTypes?: string[]; + labelSelectors?: string[]; + namespaceMappings?: { + [propertyName: string]: string; + }; + objectType: "KubernetesClusterVaultTierRestoreCriteria"; + persistentVolumeRestoreMode?: PersistentVolumeRestoreMode; + restoreHookReferences?: NamespacedNameResource[]; + stagingResourceGroupId?: string; + stagingStorageAccountId?: string; +} + // @public export interface KubernetesPVRestoreCriteria extends ItemLevelRestoreCriteria { name?: string; @@ -2185,6 +2466,9 @@ export interface ResourceMoveDetails { // @public export type ResourceMoveState = string; +// @public +export type ResourcePropertiesObjectType = string; + // @public (undocumented) export interface RestorableTimeRange { endTime: string; @@ -2269,6 +2553,27 @@ export interface ScheduleBasedTriggerContext extends TriggerContext { taggingCriteria: TaggingCriteria[]; } +// @public +export interface SecondaryRPs { + listFetch(resourceGroupName: string, location: string, parameters: FetchSecondaryRPsRequestParameters, options?: SecondaryRPsFetchOptionalParams): PagedAsyncIterableIterator; +} + +// @public +export interface SecondaryRPsFetchNextOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type SecondaryRPsFetchNextResponse = AzureBackupRecoveryPointResourceList; + +// @public +export interface SecondaryRPsFetchOptionalParams extends coreClient.OperationOptions { + filter?: string; + skipToken?: string; +} + +// @public +export type SecondaryRPsFetchResponse = AzureBackupRecoveryPointResourceList; + // @public export interface SecretStoreBasedAuthCredentials extends AuthCredentials { objectType: "SecretStoreBasedAuthCredentials"; @@ -2290,6 +2595,7 @@ export type SecureScoreLevel = string; // @public export interface SecuritySettings { + encryptionSettings?: EncryptionSettings; immutabilitySettings?: ImmutabilitySettings; softDeleteSettings?: SoftDeleteSettings; } @@ -2424,11 +2730,28 @@ export interface UserFacingError { target?: string; } +// @public +export interface UserFacingWarningDetail { + resourceName?: string; + warning: UserFacingError; +} + +// @public +export interface ValidateCrossRegionRestoreRequestObject { + crossRegionRestoreDetails: CrossRegionRestoreDetails; + restoreRequestObject: AzureBackupRestoreRequestUnion; +} + // @public export interface ValidateForBackupRequest { backupInstance: BackupInstance; } +// @public +export interface ValidateForModifyBackupRequest { + backupInstance: BackupInstance; +} + // @public export interface ValidateRestoreRequestObject { restoreRequestObject: AzureBackupRestoreRequestUnion; diff --git a/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts b/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts index ce0888aa2f64..185a684c833f 100644 --- a/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts +++ b/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts @@ -26,6 +26,10 @@ import { BackupPoliciesImpl, BackupInstancesImpl, RecoveryPointsImpl, + SecondaryRPsImpl, + CrossRegionRestoreJobImpl, + CrossRegionRestoreJobsImpl, + BackupInstancesExtensionRoutingImpl, JobsImpl, RestorableTimeRangesImpl, ExportJobsImpl, @@ -46,6 +50,10 @@ import { BackupPolicies, BackupInstances, RecoveryPoints, + SecondaryRPs, + CrossRegionRestoreJob, + CrossRegionRestoreJobs, + BackupInstancesExtensionRouting, Jobs, RestorableTimeRanges, ExportJobs, @@ -102,7 +110,7 @@ export class DataProtectionClient extends coreClient.ServiceClient { credential: credentials }; - const packageDetails = `azsdk-js-arm-dataprotection/1.2.1`; + const packageDetails = `azsdk-js-arm-dataprotection/2.0.0-beta.1`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` @@ -155,7 +163,7 @@ export class DataProtectionClient extends coreClient.ServiceClient { // Assigning values to Constant parameters this.$host = options.$host || "https://management.azure.com"; - this.apiVersion = options.apiVersion || "2023-05-01"; + this.apiVersion = options.apiVersion || "2023-08-01-preview"; this.backupVaults = new BackupVaultsImpl(this); this.operationResult = new OperationResultImpl(this); this.operationStatus = new OperationStatusImpl(this); @@ -173,6 +181,12 @@ export class DataProtectionClient extends coreClient.ServiceClient { this.backupPolicies = new BackupPoliciesImpl(this); this.backupInstances = new BackupInstancesImpl(this); this.recoveryPoints = new RecoveryPointsImpl(this); + this.secondaryRPs = new SecondaryRPsImpl(this); + this.crossRegionRestoreJob = new CrossRegionRestoreJobImpl(this); + this.crossRegionRestoreJobs = new CrossRegionRestoreJobsImpl(this); + this.backupInstancesExtensionRouting = new BackupInstancesExtensionRoutingImpl( + this + ); this.jobs = new JobsImpl(this); this.restorableTimeRanges = new RestorableTimeRangesImpl(this); this.exportJobs = new ExportJobsImpl(this); @@ -222,6 +236,10 @@ export class DataProtectionClient extends coreClient.ServiceClient { backupPolicies: BackupPolicies; backupInstances: BackupInstances; recoveryPoints: RecoveryPoints; + secondaryRPs: SecondaryRPs; + crossRegionRestoreJob: CrossRegionRestoreJob; + crossRegionRestoreJobs: CrossRegionRestoreJobs; + backupInstancesExtensionRouting: BackupInstancesExtensionRouting; jobs: Jobs; restorableTimeRanges: RestorableTimeRanges; exportJobs: ExportJobs; diff --git a/sdk/dataprotection/arm-dataprotection/src/models/index.ts b/sdk/dataprotection/arm-dataprotection/src/models/index.ts index 9a79488b2a2e..fb87b8e685e7 100644 --- a/sdk/dataprotection/arm-dataprotection/src/models/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/models/index.ts @@ -18,6 +18,9 @@ export type FeatureValidationResponseBaseUnion = | FeatureValidationResponseBase | FeatureValidationResponse; export type BaseBackupPolicyUnion = BaseBackupPolicy | BackupPolicy; +export type BaseResourcePropertiesUnion = + | BaseResourceProperties + | DefaultResourceProperties; export type DataStoreParametersUnion = | DataStoreParameters | AzureOperationalStoreParameters; @@ -62,7 +65,8 @@ export type ItemLevelRestoreCriteriaUnion = | RangeBasedItemLevelRestoreCriteria | KubernetesStorageClassRestoreCriteria | KubernetesPVRestoreCriteria - | KubernetesClusterRestoreCriteria; + | KubernetesClusterRestoreCriteria + | KubernetesClusterVaultTierRestoreCriteria; export type AzureBackupRecoveryPointBasedRestoreRequestUnion = | AzureBackupRecoveryPointBasedRestoreRequest | AzureBackupRestoreWithRehydrationRequest; @@ -135,6 +139,8 @@ export interface SecuritySettings { softDeleteSettings?: SoftDeleteSettings; /** Immutability Settings at vault level */ immutabilitySettings?: ImmutabilitySettings; + /** Customer Managed Key details of the resource. */ + encryptionSettings?: EncryptionSettings; } /** Soft delete related settings */ @@ -151,6 +157,32 @@ export interface ImmutabilitySettings { state?: ImmutabilityState; } +/** Customer Managed Key details of the resource. */ +export interface EncryptionSettings { + /** Encryption state of the Backup Vault. */ + state?: EncryptionState; + /** The properties of the Key Vault which hosts CMK */ + keyVaultProperties?: CmkKeyVaultProperties; + /** The details of the managed identity used for CMK */ + kekIdentity?: CmkKekIdentity; + /** Enabling/Disabling the Double Encryption state */ + infrastructureEncryption?: InfrastructureEncryptionState; +} + +/** The properties of the Key Vault which hosts CMK */ +export interface CmkKeyVaultProperties { + /** The key uri of the Customer Managed Key */ + keyUri?: string; +} + +/** The details of the managed identity used for CMK */ +export interface CmkKekIdentity { + /** The identity type. 'SystemAssigned' and 'UserAssigned' are mutually exclusive. 'SystemAssigned' will use implicitly created managed identity. */ + identityType?: IdentityType; + /** The managed identity to be used which has access permissions to the Key Vault. Provide a value here in case identity types: 'UserAssigned' only. */ + identityId?: string; +} + /** Storage setting */ export interface StorageSetting { /** Gets or sets the type of the datastore. */ @@ -532,13 +564,13 @@ export interface Datasource { /** Uri of the resource. */ resourceUri?: string; /** Properties specific to data source */ - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; } /** Properties which are specific to datasource/datasourceSets */ export interface BaseResourceProperties { /** Polymorphic discriminator, which specifies the different types this object can be */ - objectType: "BaseResourceProperties"; + objectType: "DefaultResourceProperties"; } /** DatasourceSet details of datasource to be backed up */ @@ -558,7 +590,7 @@ export interface DatasourceSet { /** Uri of the resource. */ resourceUri?: string; /** Properties specific to data source set */ - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; } /** Policy Info in backupInstance */ @@ -695,20 +727,71 @@ export interface ValidateForBackupRequest { backupInstance: BackupInstance; } +/** Validate for modify backup request */ +export interface ValidateForModifyBackupRequest { + /** Backup Instance */ + backupInstance: BackupInstance; +} + +/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). */ +export interface ErrorResponse { + /** The error object. */ + error?: ErrorDetail; +} + +/** The error detail. */ +export interface ErrorDetail { + /** + * The error code. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly code?: string; + /** + * The error message. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly message?: string; + /** + * The error target. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly target?: string; + /** + * The error details. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly details?: ErrorDetail[]; + /** + * The error additional info. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly additionalInfo?: ErrorAdditionalInfo[]; +} + /** Azure backup recoveryPoint */ export interface AzureBackupRecoveryPoint { /** Polymorphic discriminator, which specifies the different types this object can be */ objectType: "AzureBackupDiscreteRecoveryPoint"; } -/** Azure Backup Rehydrate Request */ -export interface AzureBackupRehydrationRequest { - /** Id of the recovery point to be recovered */ - recoveryPointId: string; - /** Priority to be used for rehydration. Values High or Standard */ - rehydrationPriority?: RehydrationPriority; - /** Retention duration in ISO 8601 format i.e P10D . */ - rehydrationRetentionDuration: string; +/** + * Information about BI whose secondary RecoveryPoints are requested + * Source region and + * BI ARM path + */ +export interface FetchSecondaryRPsRequestParameters { + /** Source region in which BackupInstance is located */ + sourceRegion?: string; + /** ARM Path of BackupInstance */ + sourceBackupInstanceId?: string; +} + +/** Cross Region Restore Request Object */ +export interface CrossRegionRestoreRequestObject { + /** Gets or sets the restore request object. */ + restoreRequestObject: AzureBackupRestoreRequestUnion; + /** Cross region restore details. */ + crossRegionRestoreDetails: CrossRegionRestoreDetails; } /** Azure backup restore request */ @@ -744,16 +827,24 @@ export interface RestoreTargetInfoBase { restoreLocation?: string; } -/** Sync BackupInstance Request */ -export interface SyncBackupInstanceRequest { - /** Field indicating sync type e.g. to sync only in case of failure or in all cases */ - syncType?: SyncType; +/** Cross Region Restore details */ +export interface CrossRegionRestoreDetails { + sourceRegion: string; + sourceBackupInstanceId: string; } -/** Validate restore request object */ -export interface ValidateRestoreRequestObject { +/** Cross Region Restore Request Object */ +export interface ValidateCrossRegionRestoreRequestObject { /** Gets or sets the restore request object. */ restoreRequestObject: AzureBackupRestoreRequestUnion; + /** Cross region restore details. */ + crossRegionRestoreDetails: CrossRegionRestoreDetails; +} + +export interface CrossRegionRestoreJobRequest { + sourceRegion: string; + sourceBackupVaultId: string; + jobId: string; } /** AzureBackup Job Class */ @@ -827,6 +918,11 @@ export interface AzureBackupJob { * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly restoreType?: string; + /** + * The type of the source data store. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly sourceDataStoreType?: string; /** Resource Group Name of the Datasource */ sourceResourceGroup: string; /** SubscriptionId corresponding to the DataSource */ @@ -880,6 +976,11 @@ export interface JobExtendedInfo { * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly targetRecoverPoint?: RestoreJobRecoveryPointDetails; + /** + * A List, detailing the warnings related to the job + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly warningDetails?: UserFacingWarningDetail[]; } export interface RestoreJobRecoveryPointDetails { @@ -904,6 +1005,41 @@ export interface JobSubTask { taskStatus: string; } +/** Warning object used by layers that have access to localized content, and propagate that to user */ +export interface UserFacingWarningDetail { + /** Name of resource for which warning is raised. */ + resourceName?: string; + /** Error details for the warning. */ + warning: UserFacingError; +} + +export interface CrossRegionRestoreJobsRequest { + sourceRegion: string; + sourceBackupVaultId: string; +} + +/** Azure Backup Rehydrate Request */ +export interface AzureBackupRehydrationRequest { + /** Id of the recovery point to be recovered */ + recoveryPointId: string; + /** Priority to be used for rehydration. Values High or Standard */ + rehydrationPriority?: RehydrationPriority; + /** Retention duration in ISO 8601 format i.e P10D . */ + rehydrationRetentionDuration: string; +} + +/** Sync BackupInstance Request */ +export interface SyncBackupInstanceRequest { + /** Field indicating sync type e.g. to sync only in case of failure or in all cases */ + syncType?: SyncType; +} + +/** Validate restore request object */ +export interface ValidateRestoreRequestObject { + /** Gets or sets the restore request object. */ + restoreRequestObject: AzureBackupRestoreRequestUnion; +} + /** List Restore Ranges Request */ export interface AzureBackupFindRestorableTimeRangesRequest { /** Gets or sets the type of the source data store. */ @@ -929,6 +1065,12 @@ export interface RestorableTimeRange { objectType?: string; } +/** Job Progress URL class. */ +export interface AzureBackupJobProgressUrl { + /** Read SAS URI for a blob from which current job progress can be read. */ + progressUrl?: string; +} + /** The result for export jobs containing blob details. */ export interface ExportJobsResult { /** @@ -1244,7 +1386,8 @@ export interface ItemLevelRestoreCriteria { | "RangeBasedItemLevelRestoreCriteria" | "KubernetesStorageClassRestoreCriteria" | "KubernetesPVRestoreCriteria" - | "KubernetesClusterRestoreCriteria"; + | "KubernetesClusterRestoreCriteria" + | "KubernetesClusterVaultTierRestoreCriteria"; } /** Class encapsulating target details, used where the destination is not a datasource */ @@ -1426,6 +1569,12 @@ export interface DeletedBackupInstance extends BackupInstance { readonly deletionInfo?: DeletionInfo; } +/** Default source properties */ +export interface DefaultResourceProperties extends BaseResourceProperties { + /** Polymorphic discriminator, which specifies the different types this object can be */ + objectType: "DefaultResourceProperties"; +} + /** Parameters for Operational-Tier DataStore */ export interface AzureOperationalStoreParameters extends DataStoreParameters { /** Polymorphic discriminator, which specifies the different types this object can be */ @@ -1728,6 +1877,37 @@ export interface KubernetesClusterRestoreCriteria restoreHookReferences?: NamespacedNameResource[]; } +/** kubernetes Cluster Backup target info for restore operation from vault */ +export interface KubernetesClusterVaultTierRestoreCriteria + extends ItemLevelRestoreCriteria { + /** Polymorphic discriminator, which specifies the different types this object can be */ + objectType: "KubernetesClusterVaultTierRestoreCriteria"; + /** Gets or sets the include cluster resources property. This property if enabled will include cluster scope resources during restore from vault. */ + includeClusterScopeResources: boolean; + /** Gets or sets the include namespaces property. This property sets the namespaces to be included during restore from vault. */ + includedNamespaces?: string[]; + /** Gets or sets the exclude namespaces property. This property sets the namespaces to be excluded during restore from vault. */ + excludedNamespaces?: string[]; + /** Gets or sets the include resource types property. This property sets the resource types to be included during restore from vault. */ + includedResourceTypes?: string[]; + /** Gets or sets the exclude resource types property. This property sets the resource types to be excluded during restore from vault. */ + excludedResourceTypes?: string[]; + /** Gets or sets the LabelSelectors property. This property sets the resource with such label selectors to be included during restore from vault. */ + labelSelectors?: string[]; + /** Gets or sets the PV (Persistent Volume) Restore Mode property. This property sets whether volumes needs to be restored from vault. */ + persistentVolumeRestoreMode?: PersistentVolumeRestoreMode; + /** Gets or sets the Conflict Policy property. This property sets policy during conflict of resources during restore from vault. */ + conflictPolicy?: ExistingResourcePolicy; + /** Gets or sets the Namespace Mappings property. This property sets if namespace needs to be change during restore from vault. */ + namespaceMappings?: { [propertyName: string]: string }; + /** Gets or sets the restore hook references. This property sets the hook reference to be executed during restore from vault. */ + restoreHookReferences?: NamespacedNameResource[]; + /** Gets or sets the staging RG Id for creating staging disks and snapshots during restore from vault. */ + stagingResourceGroupId?: string; + /** Gets or sets the staging Storage Account Id for creating backup extension object store data during restore from vault. */ + stagingStorageAccountId?: string; +} + /** Backup Vault Resource */ export interface BackupVaultResource extends DppTrackedResource { /** BackupVaultResource properties */ @@ -1803,6 +1983,36 @@ export interface BackupInstancesValidateForBackupHeaders { retryAfter?: number; } +/** Defines headers for BackupInstances_validateForModifyBackup operation. */ +export interface BackupInstancesValidateForModifyBackupHeaders { + /** The URL of the resource used to check the status of the asynchronous operation. */ + location?: string; + /** The URL of the resource used to check the status of the asynchronous operation. */ + azureAsyncOperation?: string; + /** Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. */ + retryAfter?: number; +} + +/** Defines headers for BackupInstances_triggerCrossRegionRestore operation. */ +export interface BackupInstancesTriggerCrossRegionRestoreHeaders { + /** The URL of the resource used to check the status of the asynchronous operation. */ + location?: string; + /** The URL of the resource used to check the status of the asynchronous operation. */ + azureAsyncOperation?: string; + /** Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. */ + retryAfter?: number; +} + +/** Defines headers for BackupInstances_validateCrossRegionRestore operation. */ +export interface BackupInstancesValidateCrossRegionRestoreHeaders { + /** The URL of the resource used to check the status of the asynchronous operation. */ + location?: string; + /** The URL of the resource used to check the status of the asynchronous operation. */ + azureAsyncOperation?: string; + /** Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. */ + retryAfter?: number; +} + /** Defines headers for BackupInstances_triggerRehydrate operation. */ export interface BackupInstancesTriggerRehydrateHeaders { /** The URL of the resource used to check the status of the asynchronous operation. */ @@ -1883,6 +2093,14 @@ export interface BackupInstancesValidateForRestoreHeaders { retryAfter?: number; } +/** Defines headers for Jobs_triggerCancel operation. */ +export interface JobsTriggerCancelHeaders { + /** The URL of the resource used to check the status of the asynchronous operation. */ + location?: string; + /** Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. */ + retryAfter?: number; +} + /** Defines headers for ExportJobs_trigger operation. */ export interface ExportJobsTriggerHeaders { /** The URL of the resource used to check the status of the asynchronous operation. */ @@ -2020,6 +2238,63 @@ export enum KnownImmutabilityState { */ export type ImmutabilityState = string; +/** Known values of {@link EncryptionState} that the service accepts. */ +export enum KnownEncryptionState { + /** CMK encryption is enabled on the Backup Vault */ + Enabled = "Enabled", + /** CMK encryption is disabled on the Backup Vault. User can not set this state once Encryption State is 'Enabled'. */ + Disabled = "Disabled", + /** CMK encryption is in inconsistent state on the Backup Vault. This state indicates that user needs to retry the encryption settings operation immediately to correct the state. */ + Inconsistent = "Inconsistent" +} + +/** + * Defines values for EncryptionState. \ + * {@link KnownEncryptionState} can be used interchangeably with EncryptionState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Enabled**: CMK encryption is enabled on the Backup Vault \ + * **Disabled**: CMK encryption is disabled on the Backup Vault. User can not set this state once Encryption State is 'Enabled'. \ + * **Inconsistent**: CMK encryption is in inconsistent state on the Backup Vault. This state indicates that user needs to retry the encryption settings operation immediately to correct the state. + */ +export type EncryptionState = string; + +/** Known values of {@link IdentityType} that the service accepts. */ +export enum KnownIdentityType { + /** SystemAssigned */ + SystemAssigned = "SystemAssigned", + /** UserAssigned */ + UserAssigned = "UserAssigned" +} + +/** + * Defines values for IdentityType. \ + * {@link KnownIdentityType} can be used interchangeably with IdentityType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **SystemAssigned** \ + * **UserAssigned** + */ +export type IdentityType = string; + +/** Known values of {@link InfrastructureEncryptionState} that the service accepts. */ +export enum KnownInfrastructureEncryptionState { + /** Enabled */ + Enabled = "Enabled", + /** Disabled */ + Disabled = "Disabled" +} + +/** + * Defines values for InfrastructureEncryptionState. \ + * {@link KnownInfrastructureEncryptionState} can be used interchangeably with InfrastructureEncryptionState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Enabled** \ + * **Disabled** + */ +export type InfrastructureEncryptionState = string; + /** Known values of {@link StorageSettingStoreTypes} that the service accepts. */ export enum KnownStorageSettingStoreTypes { /** ArchiveStore */ @@ -2152,6 +2427,21 @@ export enum KnownCreatedByType { */ export type CreatedByType = string; +/** Known values of {@link ResourcePropertiesObjectType} that the service accepts. */ +export enum KnownResourcePropertiesObjectType { + /** DefaultResourceProperties */ + DefaultResourceProperties = "DefaultResourceProperties" +} + +/** + * Defines values for ResourcePropertiesObjectType. \ + * {@link KnownResourcePropertiesObjectType} can be used interchangeably with ResourcePropertiesObjectType, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **DefaultResourceProperties** + */ +export type ResourcePropertiesObjectType = string; + /** Known values of {@link DataStoreTypes} that the service accepts. */ export enum KnownDataStoreTypes { /** OperationalStore */ @@ -2269,27 +2559,6 @@ export enum KnownValidationType { */ export type ValidationType = string; -/** Known values of {@link RehydrationPriority} that the service accepts. */ -export enum KnownRehydrationPriority { - /** Invalid */ - Invalid = "Invalid", - /** High */ - High = "High", - /** Standard */ - Standard = "Standard" -} - -/** - * Defines values for RehydrationPriority. \ - * {@link KnownRehydrationPriority} can be used interchangeably with RehydrationPriority, - * this enum contains the known values that the service supports. - * ### Known values supported by the service - * **Invalid** \ - * **High** \ - * **Standard** - */ -export type RehydrationPriority = string; - /** Known values of {@link RecoveryOption} that the service accepts. */ export enum KnownRecoveryOption { /** FailIfExists */ @@ -2329,6 +2598,27 @@ export enum KnownSourceDataStoreType { */ export type SourceDataStoreType = string; +/** Known values of {@link RehydrationPriority} that the service accepts. */ +export enum KnownRehydrationPriority { + /** Invalid */ + Invalid = "Invalid", + /** High */ + High = "High", + /** Standard */ + Standard = "Standard" +} + +/** + * Defines values for RehydrationPriority. \ + * {@link KnownRehydrationPriority} can be used interchangeably with RehydrationPriority, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Invalid** \ + * **High** \ + * **Standard** + */ +export type RehydrationPriority = string; + /** Known values of {@link SyncType} that the service accepts. */ export enum KnownSyncType { /** Default */ @@ -2875,6 +3165,18 @@ export interface BackupInstancesValidateForBackupOptionalParams /** Contains response data for the validateForBackup operation. */ export type BackupInstancesValidateForBackupResponse = OperationJobExtendedInfo; +/** Optional parameters. */ +export interface BackupInstancesValidateForModifyBackupOptionalParams + 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 validateForModifyBackup operation. */ +export type BackupInstancesValidateForModifyBackupResponse = BackupInstancesValidateForModifyBackupHeaders; + /** Optional parameters. */ export interface BackupInstancesGetBackupInstanceOperationResultOptionalParams extends coreClient.OperationOptions {} @@ -2882,6 +3184,30 @@ export interface BackupInstancesGetBackupInstanceOperationResultOptionalParams /** Contains response data for the getBackupInstanceOperationResult operation. */ export type BackupInstancesGetBackupInstanceOperationResultResponse = BackupInstanceResource; +/** Optional parameters. */ +export interface BackupInstancesTriggerCrossRegionRestoreOptionalParams + 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 triggerCrossRegionRestore operation. */ +export type BackupInstancesTriggerCrossRegionRestoreResponse = OperationJobExtendedInfo; + +/** Optional parameters. */ +export interface BackupInstancesValidateCrossRegionRestoreOptionalParams + 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 validateCrossRegionRestore operation. */ +export type BackupInstancesValidateCrossRegionRestoreResponse = OperationJobExtendedInfo; + /** Optional parameters. */ export interface BackupInstancesTriggerRehydrateOptionalParams extends coreClient.OperationOptions { @@ -2996,6 +3322,60 @@ export interface RecoveryPointsListNextOptionalParams /** Contains response data for the listNext operation. */ export type RecoveryPointsListNextResponse = AzureBackupRecoveryPointResourceList; +/** Optional parameters. */ +export interface SecondaryRPsFetchOptionalParams + extends coreClient.OperationOptions { + /** OData filter options. */ + filter?: string; + /** skipToken Filter. */ + skipToken?: string; +} + +/** Contains response data for the fetch operation. */ +export type SecondaryRPsFetchResponse = AzureBackupRecoveryPointResourceList; + +/** Optional parameters. */ +export interface SecondaryRPsFetchNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the fetchNext operation. */ +export type SecondaryRPsFetchNextResponse = AzureBackupRecoveryPointResourceList; + +/** Optional parameters. */ +export interface CrossRegionRestoreJobGetOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the get operation. */ +export type CrossRegionRestoreJobGetResponse = AzureBackupJobResource; + +/** Optional parameters. */ +export interface CrossRegionRestoreJobsListOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the list operation. */ +export type CrossRegionRestoreJobsListResponse = AzureBackupJobResourceList; + +/** Optional parameters. */ +export interface CrossRegionRestoreJobsListNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the listNext operation. */ +export type CrossRegionRestoreJobsListNextResponse = AzureBackupJobResourceList; + +/** Optional parameters. */ +export interface BackupInstancesExtensionRoutingListOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the list operation. */ +export type BackupInstancesExtensionRoutingListResponse = BackupInstanceResourceList; + +/** Optional parameters. */ +export interface BackupInstancesExtensionRoutingListNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the listNext operation. */ +export type BackupInstancesExtensionRoutingListNextResponse = BackupInstanceResourceList; + /** Optional parameters. */ export interface JobsListOptionalParams extends coreClient.OperationOptions {} @@ -3008,6 +3388,25 @@ export interface JobsGetOptionalParams extends coreClient.OperationOptions {} /** Contains response data for the get operation. */ export type JobsGetResponse = AzureBackupJobResource; +/** Optional parameters. */ +export interface JobsTriggerCancelOptionalParams + 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 triggerCancel operation. */ +export type JobsTriggerCancelResponse = JobsTriggerCancelHeaders; + +/** Optional parameters. */ +export interface JobsGenerateProgressUrlOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the generateProgressUrl operation. */ +export type JobsGenerateProgressUrlResponse = AzureBackupJobProgressUrl; + /** Optional parameters. */ export interface JobsListNextOptionalParams extends coreClient.OperationOptions {} diff --git a/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts b/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts index 81a32fbef7e3..266d04325300 100644 --- a/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts +++ b/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts @@ -174,6 +174,13 @@ export const SecuritySettings: coreClient.CompositeMapper = { name: "Composite", className: "ImmutabilitySettings" } + }, + encryptionSettings: { + serializedName: "encryptionSettings", + type: { + name: "Composite", + className: "EncryptionSettings" + } } } } @@ -215,6 +222,77 @@ export const ImmutabilitySettings: coreClient.CompositeMapper = { } }; +export const EncryptionSettings: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "EncryptionSettings", + modelProperties: { + state: { + serializedName: "state", + type: { + name: "String" + } + }, + keyVaultProperties: { + serializedName: "keyVaultProperties", + type: { + name: "Composite", + className: "CmkKeyVaultProperties" + } + }, + kekIdentity: { + serializedName: "kekIdentity", + type: { + name: "Composite", + className: "CmkKekIdentity" + } + }, + infrastructureEncryption: { + serializedName: "infrastructureEncryption", + type: { + name: "String" + } + } + } + } +}; + +export const CmkKeyVaultProperties: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "CmkKeyVaultProperties", + modelProperties: { + keyUri: { + serializedName: "keyUri", + type: { + name: "String" + } + } + } + } +}; + +export const CmkKekIdentity: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "CmkKekIdentity", + modelProperties: { + identityType: { + serializedName: "identityType", + type: { + name: "String" + } + }, + identityId: { + serializedName: "identityId", + type: { + name: "String" + } + } + } + } +}; + export const StorageSetting: coreClient.CompositeMapper = { type: { name: "Composite", @@ -1172,7 +1250,6 @@ export const Datasource: coreClient.CompositeMapper = { }; export const BaseResourceProperties: coreClient.CompositeMapper = { - serializedName: "BaseResourceProperties", type: { name: "Composite", className: "BaseResourceProperties", @@ -1647,6 +1724,94 @@ export const ValidateForBackupRequest: coreClient.CompositeMapper = { } }; +export const ValidateForModifyBackupRequest: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "ValidateForModifyBackupRequest", + modelProperties: { + backupInstance: { + serializedName: "backupInstance", + type: { + name: "Composite", + className: "BackupInstance" + } + } + } + } +}; + +export const ErrorResponse: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "ErrorResponse", + modelProperties: { + error: { + serializedName: "error", + type: { + name: "Composite", + className: "ErrorDetail" + } + } + } + } +}; + +export const ErrorDetail: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "ErrorDetail", + modelProperties: { + code: { + serializedName: "code", + readOnly: true, + type: { + name: "String" + } + }, + message: { + serializedName: "message", + readOnly: true, + type: { + name: "String" + } + }, + target: { + serializedName: "target", + readOnly: true, + type: { + name: "String" + } + }, + details: { + serializedName: "details", + readOnly: true, + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ErrorDetail" + } + } + } + }, + additionalInfo: { + serializedName: "additionalInfo", + readOnly: true, + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ErrorAdditionalInfo" + } + } + } + } + } + } +}; + export const AzureBackupRecoveryPoint: coreClient.CompositeMapper = { type: { name: "Composite", @@ -1668,29 +1833,44 @@ export const AzureBackupRecoveryPoint: coreClient.CompositeMapper = { } }; -export const AzureBackupRehydrationRequest: coreClient.CompositeMapper = { +export const FetchSecondaryRPsRequestParameters: coreClient.CompositeMapper = { type: { name: "Composite", - className: "AzureBackupRehydrationRequest", + className: "FetchSecondaryRPsRequestParameters", modelProperties: { - recoveryPointId: { - serializedName: "recoveryPointId", - required: true, + sourceRegion: { + serializedName: "sourceRegion", type: { name: "String" } }, - rehydrationPriority: { - serializedName: "rehydrationPriority", + sourceBackupInstanceId: { + serializedName: "sourceBackupInstanceId", type: { name: "String" } + } + } + } +}; + +export const CrossRegionRestoreRequestObject: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "CrossRegionRestoreRequestObject", + modelProperties: { + restoreRequestObject: { + serializedName: "restoreRequestObject", + type: { + name: "Composite", + className: "AzureBackupRestoreRequest" + } }, - rehydrationRetentionDuration: { - serializedName: "rehydrationRetentionDuration", - required: true, + crossRegionRestoreDetails: { + serializedName: "crossRegionRestoreDetails", type: { - name: "String" + name: "Composite", + className: "CrossRegionRestoreDetails" } } } @@ -1779,13 +1959,21 @@ export const RestoreTargetInfoBase: coreClient.CompositeMapper = { } }; -export const SyncBackupInstanceRequest: coreClient.CompositeMapper = { +export const CrossRegionRestoreDetails: coreClient.CompositeMapper = { type: { name: "Composite", - className: "SyncBackupInstanceRequest", + className: "CrossRegionRestoreDetails", modelProperties: { - syncType: { - serializedName: "syncType", + sourceRegion: { + serializedName: "sourceRegion", + required: true, + type: { + name: "String" + } + }, + sourceBackupInstanceId: { + serializedName: "sourceBackupInstanceId", + required: true, type: { name: "String" } @@ -1794,10 +1982,10 @@ export const SyncBackupInstanceRequest: coreClient.CompositeMapper = { } }; -export const ValidateRestoreRequestObject: coreClient.CompositeMapper = { +export const ValidateCrossRegionRestoreRequestObject: coreClient.CompositeMapper = { type: { name: "Composite", - className: "ValidateRestoreRequestObject", + className: "ValidateCrossRegionRestoreRequestObject", modelProperties: { restoreRequestObject: { serializedName: "restoreRequestObject", @@ -1805,6 +1993,43 @@ export const ValidateRestoreRequestObject: coreClient.CompositeMapper = { name: "Composite", className: "AzureBackupRestoreRequest" } + }, + crossRegionRestoreDetails: { + serializedName: "crossRegionRestoreDetails", + type: { + name: "Composite", + className: "CrossRegionRestoreDetails" + } + } + } + } +}; + +export const CrossRegionRestoreJobRequest: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "CrossRegionRestoreJobRequest", + modelProperties: { + sourceRegion: { + serializedName: "sourceRegion", + required: true, + type: { + name: "String" + } + }, + sourceBackupVaultId: { + serializedName: "sourceBackupVaultId", + required: true, + type: { + name: "String" + } + }, + jobId: { + serializedName: "jobId", + required: true, + type: { + name: "String" + } } } } @@ -1966,6 +2191,13 @@ export const AzureBackupJob: coreClient.CompositeMapper = { name: "String" } }, + sourceDataStoreType: { + serializedName: "sourceDataStoreType", + readOnly: true, + type: { + name: "String" + } + }, sourceResourceGroup: { serializedName: "sourceResourceGroup", required: true, @@ -2101,6 +2333,19 @@ export const JobExtendedInfo: coreClient.CompositeMapper = { name: "Composite", className: "RestoreJobRecoveryPointDetails" } + }, + warningDetails: { + serializedName: "warningDetails", + readOnly: true, + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "UserFacingWarningDetail" + } + } + } } } } @@ -2159,12 +2404,117 @@ export const JobSubTask: coreClient.CompositeMapper = { type: { name: "String" } - }, - taskStatus: { - serializedName: "taskStatus", - required: true, + }, + taskStatus: { + serializedName: "taskStatus", + required: true, + type: { + name: "String" + } + } + } + } +}; + +export const UserFacingWarningDetail: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "UserFacingWarningDetail", + modelProperties: { + resourceName: { + serializedName: "resourceName", + type: { + name: "String" + } + }, + warning: { + serializedName: "warning", + type: { + name: "Composite", + className: "UserFacingError" + } + } + } + } +}; + +export const CrossRegionRestoreJobsRequest: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "CrossRegionRestoreJobsRequest", + modelProperties: { + sourceRegion: { + serializedName: "sourceRegion", + required: true, + type: { + name: "String" + } + }, + sourceBackupVaultId: { + serializedName: "sourceBackupVaultId", + required: true, + type: { + name: "String" + } + } + } + } +}; + +export const AzureBackupRehydrationRequest: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "AzureBackupRehydrationRequest", + modelProperties: { + recoveryPointId: { + serializedName: "recoveryPointId", + required: true, + type: { + name: "String" + } + }, + rehydrationPriority: { + serializedName: "rehydrationPriority", + type: { + name: "String" + } + }, + rehydrationRetentionDuration: { + serializedName: "rehydrationRetentionDuration", + required: true, + type: { + name: "String" + } + } + } + } +}; + +export const SyncBackupInstanceRequest: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "SyncBackupInstanceRequest", + modelProperties: { + syncType: { + serializedName: "syncType", + type: { + name: "String" + } + } + } + } +}; + +export const ValidateRestoreRequestObject: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "ValidateRestoreRequestObject", + modelProperties: { + restoreRequestObject: { + serializedName: "restoreRequestObject", type: { - name: "String" + name: "Composite", + className: "AzureBackupRestoreRequest" } } } @@ -2255,6 +2605,21 @@ export const RestorableTimeRange: coreClient.CompositeMapper = { } }; +export const AzureBackupJobProgressUrl: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "AzureBackupJobProgressUrl", + modelProperties: { + progressUrl: { + serializedName: "progressUrl", + type: { + name: "String" + } + } + } + } +}; + export const ExportJobsResult: coreClient.CompositeMapper = { type: { name: "Composite", @@ -3671,6 +4036,20 @@ export const DeletedBackupInstance: coreClient.CompositeMapper = { } }; +export const DefaultResourceProperties: coreClient.CompositeMapper = { + serializedName: "DefaultResourceProperties", + type: { + name: "Composite", + className: "DefaultResourceProperties", + uberParent: "BaseResourceProperties", + polymorphicDiscriminator: + BaseResourceProperties.type.polymorphicDiscriminator, + modelProperties: { + ...BaseResourceProperties.type.modelProperties + } + } +}; + export const AzureOperationalStoreParameters: coreClient.CompositeMapper = { serializedName: "AzureOperationalStoreParameters", type: { @@ -4618,6 +4997,125 @@ export const KubernetesClusterRestoreCriteria: coreClient.CompositeMapper = { } }; +export const KubernetesClusterVaultTierRestoreCriteria: coreClient.CompositeMapper = { + serializedName: "KubernetesClusterVaultTierRestoreCriteria", + type: { + name: "Composite", + className: "KubernetesClusterVaultTierRestoreCriteria", + uberParent: "ItemLevelRestoreCriteria", + polymorphicDiscriminator: + ItemLevelRestoreCriteria.type.polymorphicDiscriminator, + modelProperties: { + ...ItemLevelRestoreCriteria.type.modelProperties, + includeClusterScopeResources: { + serializedName: "includeClusterScopeResources", + required: true, + type: { + name: "Boolean" + } + }, + includedNamespaces: { + serializedName: "includedNamespaces", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + excludedNamespaces: { + serializedName: "excludedNamespaces", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + includedResourceTypes: { + serializedName: "includedResourceTypes", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + excludedResourceTypes: { + serializedName: "excludedResourceTypes", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + labelSelectors: { + serializedName: "labelSelectors", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + persistentVolumeRestoreMode: { + serializedName: "persistentVolumeRestoreMode", + type: { + name: "String" + } + }, + conflictPolicy: { + serializedName: "conflictPolicy", + type: { + name: "String" + } + }, + namespaceMappings: { + serializedName: "namespaceMappings", + type: { + name: "Dictionary", + value: { type: { name: "String" } } + } + }, + restoreHookReferences: { + serializedName: "restoreHookReferences", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "NamespacedNameResource" + } + } + } + }, + stagingResourceGroupId: { + serializedName: "stagingResourceGroupId", + type: { + name: "String" + } + }, + stagingStorageAccountId: { + serializedName: "stagingStorageAccountId", + type: { + name: "String" + } + } + } + } +}; + export const BackupVaultResource: coreClient.CompositeMapper = { type: { name: "Composite", @@ -4819,6 +5317,87 @@ export const BackupInstancesValidateForBackupHeaders: coreClient.CompositeMapper } }; +export const BackupInstancesValidateForModifyBackupHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "BackupInstancesValidateForModifyBackupHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + }, + azureAsyncOperation: { + serializedName: "azure-asyncoperation", + type: { + name: "String" + } + }, + retryAfter: { + serializedName: "retry-after", + type: { + name: "Number" + } + } + } + } +}; + +export const BackupInstancesTriggerCrossRegionRestoreHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "BackupInstancesTriggerCrossRegionRestoreHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + }, + azureAsyncOperation: { + serializedName: "azure-asyncoperation", + type: { + name: "String" + } + }, + retryAfter: { + serializedName: "retry-after", + type: { + name: "Number" + } + } + } + } +}; + +export const BackupInstancesValidateCrossRegionRestoreHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "BackupInstancesValidateCrossRegionRestoreHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + }, + azureAsyncOperation: { + serializedName: "azure-asyncoperation", + type: { + name: "String" + } + }, + retryAfter: { + serializedName: "retry-after", + type: { + name: "Number" + } + } + } + } +}; + export const BackupInstancesTriggerRehydrateHeaders: coreClient.CompositeMapper = { type: { name: "Composite", @@ -5035,6 +5614,27 @@ export const BackupInstancesValidateForRestoreHeaders: coreClient.CompositeMappe } }; +export const JobsTriggerCancelHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "JobsTriggerCancelHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + }, + retryAfter: { + serializedName: "retry-after", + type: { + name: "Number" + } + } + } + } +}; + export const ExportJobsTriggerHeaders: coreClient.CompositeMapper = { type: { name: "Composite", @@ -5061,7 +5661,7 @@ export let discriminators = { FeatureValidationRequestBase: FeatureValidationRequestBase, FeatureValidationResponseBase: FeatureValidationResponseBase, BaseBackupPolicy: BaseBackupPolicy, - "BaseResourceProperties.BaseResourceProperties": BaseResourceProperties, + BaseResourceProperties: BaseResourceProperties, DataStoreParameters: DataStoreParameters, BackupDatasourceParameters: BackupDatasourceParameters, AuthCredentials: AuthCredentials, @@ -5079,6 +5679,7 @@ export let discriminators = { "FeatureValidationRequestBase.FeatureValidationRequest": FeatureValidationRequest, "FeatureValidationResponseBase.FeatureValidationResponse": FeatureValidationResponse, "BaseBackupPolicy.BackupPolicy": BackupPolicy, + "BaseResourceProperties.DefaultResourceProperties": DefaultResourceProperties, "DataStoreParameters.AzureOperationalStoreParameters": AzureOperationalStoreParameters, "BackupDatasourceParameters.KubernetesClusterBackupDatasourceParameters": KubernetesClusterBackupDatasourceParameters, "BackupDatasourceParameters.BlobBackupDatasourceParameters": BlobBackupDatasourceParameters, @@ -5104,5 +5705,6 @@ export let discriminators = { "ItemLevelRestoreCriteria.KubernetesStorageClassRestoreCriteria": KubernetesStorageClassRestoreCriteria, "ItemLevelRestoreCriteria.KubernetesPVRestoreCriteria": KubernetesPVRestoreCriteria, "ItemLevelRestoreCriteria.KubernetesClusterRestoreCriteria": KubernetesClusterRestoreCriteria, + "ItemLevelRestoreCriteria.KubernetesClusterVaultTierRestoreCriteria": KubernetesClusterVaultTierRestoreCriteria, "AzureBackupRecoveryPointBasedRestoreRequest.AzureBackupRestoreWithRehydrationRequest": AzureBackupRestoreWithRehydrationRequest }; diff --git a/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts b/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts index bd7a849ddf8f..4310fd9ad435 100644 --- a/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts +++ b/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts @@ -20,10 +20,16 @@ import { BackupInstanceResource as BackupInstanceResourceMapper, TriggerBackupRequest as TriggerBackupRequestMapper, ValidateForBackupRequest as ValidateForBackupRequestMapper, + ValidateForModifyBackupRequest as ValidateForModifyBackupRequestMapper, + CrossRegionRestoreRequestObject as CrossRegionRestoreRequestObjectMapper, + ValidateCrossRegionRestoreRequestObject as ValidateCrossRegionRestoreRequestObjectMapper, AzureBackupRehydrationRequest as AzureBackupRehydrationRequestMapper, AzureBackupRestoreRequest as AzureBackupRestoreRequestMapper, SyncBackupInstanceRequest as SyncBackupInstanceRequestMapper, ValidateRestoreRequestObject as ValidateRestoreRequestObjectMapper, + FetchSecondaryRPsRequestParameters as FetchSecondaryRPsRequestParametersMapper, + CrossRegionRestoreJobRequest as CrossRegionRestoreJobRequestMapper, + CrossRegionRestoreJobsRequest as CrossRegionRestoreJobsRequestMapper, AzureBackupFindRestorableTimeRangesRequest as AzureBackupFindRestorableTimeRangesRequestMapper, ResourceGuardResource as ResourceGuardResourceMapper, PatchResourceGuardInput as PatchResourceGuardInputMapper, @@ -58,7 +64,7 @@ export const $host: OperationURLParameter = { export const apiVersion: OperationQueryParameter = { parameterPath: "apiVersion", mapper: { - defaultValue: "2023-05-01", + defaultValue: "2023-08-01-preview", isConstant: true, serializedName: "api-version", type: { @@ -214,20 +220,51 @@ export const parameters7: OperationParameter = { export const parameters8: OperationParameter = { parameterPath: "parameters", - mapper: AzureBackupRehydrationRequestMapper + mapper: ValidateForModifyBackupRequestMapper +}; + +export const vaultName1: OperationURLParameter = { + parameterPath: "vaultName", + mapper: { + constraints: { + Pattern: new RegExp("^[A-Za-z][-A-Za-z0-9]*[A-Za-z0-9]$"), + MaxLength: 50, + MinLength: 2 + }, + serializedName: "vaultName", + required: true, + type: { + name: "String" + } + } }; export const parameters9: OperationParameter = { parameterPath: "parameters", - mapper: AzureBackupRestoreRequestMapper + mapper: CrossRegionRestoreRequestObjectMapper }; export const parameters10: OperationParameter = { parameterPath: "parameters", - mapper: SyncBackupInstanceRequestMapper + mapper: ValidateCrossRegionRestoreRequestObjectMapper }; export const parameters11: OperationParameter = { + parameterPath: "parameters", + mapper: AzureBackupRehydrationRequestMapper +}; + +export const parameters12: OperationParameter = { + parameterPath: "parameters", + mapper: AzureBackupRestoreRequestMapper +}; + +export const parameters13: OperationParameter = { + parameterPath: "parameters", + mapper: SyncBackupInstanceRequestMapper +}; + +export const parameters14: OperationParameter = { parameterPath: "parameters", mapper: ValidateRestoreRequestObjectMapper }; @@ -263,6 +300,33 @@ export const recoveryPointId: OperationURLParameter = { } }; +export const parameters15: OperationParameter = { + parameterPath: "parameters", + mapper: FetchSecondaryRPsRequestParametersMapper +}; + +export const parameters16: OperationParameter = { + parameterPath: "parameters", + mapper: CrossRegionRestoreJobRequestMapper +}; + +export const parameters17: OperationParameter = { + parameterPath: "parameters", + mapper: CrossRegionRestoreJobsRequestMapper +}; + +export const resourceId: OperationURLParameter = { + parameterPath: "resourceId", + mapper: { + serializedName: "resourceId", + required: true, + type: { + name: "String" + } + }, + skipEncoding: true +}; + export const jobId: OperationURLParameter = { parameterPath: "jobId", mapper: { @@ -274,12 +338,12 @@ export const jobId: OperationURLParameter = { } }; -export const parameters12: OperationParameter = { +export const parameters18: OperationParameter = { parameterPath: "parameters", mapper: AzureBackupFindRestorableTimeRangesRequestMapper }; -export const parameters13: OperationParameter = { +export const parameters19: OperationParameter = { parameterPath: "parameters", mapper: ResourceGuardResourceMapper }; @@ -295,7 +359,7 @@ export const resourceGuardsName: OperationURLParameter = { } }; -export const parameters14: OperationParameter = { +export const parameters20: OperationParameter = { parameterPath: "parameters", mapper: PatchResourceGuardInputMapper }; @@ -325,12 +389,12 @@ export const resourceGuardProxyName: OperationURLParameter = { } }; -export const parameters15: OperationParameter = { +export const parameters21: OperationParameter = { parameterPath: "parameters", mapper: ResourceGuardProxyBaseResourceMapper }; -export const parameters16: OperationParameter = { +export const parameters22: OperationParameter = { parameterPath: "parameters", mapper: UnlockDeleteRequestMapper }; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/backupInstances.ts b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstances.ts index 7600004ee5bb..b5ca0c04148a 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/backupInstances.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstances.ts @@ -35,8 +35,17 @@ import { ValidateForBackupRequest, BackupInstancesValidateForBackupOptionalParams, BackupInstancesValidateForBackupResponse, + ValidateForModifyBackupRequest, + BackupInstancesValidateForModifyBackupOptionalParams, + BackupInstancesValidateForModifyBackupResponse, BackupInstancesGetBackupInstanceOperationResultOptionalParams, BackupInstancesGetBackupInstanceOperationResultResponse, + CrossRegionRestoreRequestObject, + BackupInstancesTriggerCrossRegionRestoreOptionalParams, + BackupInstancesTriggerCrossRegionRestoreResponse, + ValidateCrossRegionRestoreRequestObject, + BackupInstancesValidateCrossRegionRestoreOptionalParams, + BackupInstancesValidateCrossRegionRestoreResponse, AzureBackupRehydrationRequest, BackupInstancesTriggerRehydrateOptionalParams, BackupInstancesTriggerRehydrateResponse, @@ -448,7 +457,8 @@ export class BackupInstancesImpl implements BackupInstances { OperationState >(lro, { restoreFrom: options?.resumeFrom, - intervalInMs: options?.updateIntervalInMs + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -546,7 +556,8 @@ export class BackupInstancesImpl implements BackupInstances { OperationState >(lro, { restoreFrom: options?.resumeFrom, - intervalInMs: options?.updateIntervalInMs + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -574,6 +585,113 @@ export class BackupInstancesImpl implements BackupInstances { return poller.pollUntilDone(); } + /** + * Validate whether update for backup instance will be successful or not + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param backupInstanceName The name of the backup instance. + * @param parameters Request body for operation + * @param options The options parameters. + */ + async beginValidateForModifyBackup( + resourceGroupName: string, + vaultName: string, + backupInstanceName: string, + parameters: ValidateForModifyBackupRequest, + options?: BackupInstancesValidateForModifyBackupOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + BackupInstancesValidateForModifyBackupResponse + > + > { + 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, + vaultName, + backupInstanceName, + parameters, + options + }, + spec: validateForModifyBackupOperationSpec + }); + const poller = await createHttpPoller< + BackupInstancesValidateForModifyBackupResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" + }); + await poller.poll(); + return poller; + } + + /** + * Validate whether update for backup instance will be successful or not + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param backupInstanceName The name of the backup instance. + * @param parameters Request body for operation + * @param options The options parameters. + */ + async beginValidateForModifyBackupAndWait( + resourceGroupName: string, + vaultName: string, + backupInstanceName: string, + parameters: ValidateForModifyBackupRequest, + options?: BackupInstancesValidateForModifyBackupOptionalParams + ): Promise { + const poller = await this.beginValidateForModifyBackup( + resourceGroupName, + vaultName, + backupInstanceName, + parameters, + options + ); + return poller.pollUntilDone(); + } + /** * Get result of backup instance creation operation * @param resourceGroupName The name of the resource group. The name is case insensitive. @@ -601,6 +719,194 @@ export class BackupInstancesImpl implements BackupInstances { ); } + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for trigger CRR operation + * @param options The options parameters. + */ + async beginTriggerCrossRegionRestore( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreRequestObject, + options?: BackupInstancesTriggerCrossRegionRestoreOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + BackupInstancesTriggerCrossRegionRestoreResponse + > + > { + 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, location, parameters, options }, + spec: triggerCrossRegionRestoreOperationSpec + }); + const poller = await createHttpPoller< + BackupInstancesTriggerCrossRegionRestoreResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" + }); + await poller.poll(); + return poller; + } + + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for trigger CRR operation + * @param options The options parameters. + */ + async beginTriggerCrossRegionRestoreAndWait( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreRequestObject, + options?: BackupInstancesTriggerCrossRegionRestoreOptionalParams + ): Promise { + const poller = await this.beginTriggerCrossRegionRestore( + resourceGroupName, + location, + parameters, + options + ); + return poller.pollUntilDone(); + } + + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + async beginValidateCrossRegionRestore( + resourceGroupName: string, + location: string, + parameters: ValidateCrossRegionRestoreRequestObject, + options?: BackupInstancesValidateCrossRegionRestoreOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + BackupInstancesValidateCrossRegionRestoreResponse + > + > { + 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, location, parameters, options }, + spec: validateCrossRegionRestoreOperationSpec + }); + const poller = await createHttpPoller< + BackupInstancesValidateCrossRegionRestoreResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" + }); + await poller.poll(); + return poller; + } + + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + async beginValidateCrossRegionRestoreAndWait( + resourceGroupName: string, + location: string, + parameters: ValidateCrossRegionRestoreRequestObject, + options?: BackupInstancesValidateCrossRegionRestoreOptionalParams + ): Promise { + const poller = await this.beginValidateCrossRegionRestore( + resourceGroupName, + location, + parameters, + options + ); + return poller.pollUntilDone(); + } + /** * rehydrate recovery point for restore for a BackupInstance * @param resourceGroupName The name of the resource group. The name is case insensitive. @@ -782,7 +1088,8 @@ export class BackupInstancesImpl implements BackupInstances { OperationState >(lro, { restoreFrom: options?.resumeFrom, - intervalInMs: options?.updateIntervalInMs + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -1338,7 +1645,8 @@ export class BackupInstancesImpl implements BackupInstances { OperationState >(lro, { restoreFrom: options?.resumeFrom, - intervalInMs: options?.updateIntervalInMs + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -1561,6 +1869,40 @@ const validateForBackupOperationSpec: coreClient.OperationSpec = { mediaType: "json", serializer }; +const validateForModifyBackupOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateForModifyBackup", + httpMethod: "POST", + responses: { + 200: { + headersMapper: Mappers.BackupInstancesValidateForModifyBackupHeaders + }, + 201: { + headersMapper: Mappers.BackupInstancesValidateForModifyBackupHeaders + }, + 202: { + headersMapper: Mappers.BackupInstancesValidateForModifyBackupHeaders + }, + 204: { + headersMapper: Mappers.BackupInstancesValidateForModifyBackupHeaders + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + requestBody: Parameters.parameters8, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.backupInstanceName, + Parameters.vaultName1 + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; const getBackupInstanceOperationResultOperationSpec: coreClient.OperationSpec = { path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/operationResults/{operationId}", @@ -1586,6 +1928,72 @@ const getBackupInstanceOperationResultOperationSpec: coreClient.OperationSpec = headerParameters: [Parameters.accept], serializer }; +const triggerCrossRegionRestoreOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/crossRegionRestore", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + 201: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + 202: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + 204: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + requestBody: Parameters.parameters9, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; +const validateCrossRegionRestoreOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/validateCrossRegionRestore", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + 201: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + 202: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + 204: { + bodyMapper: Mappers.OperationJobExtendedInfo + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + requestBody: Parameters.parameters10, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; const triggerRehydrateOperationSpec: coreClient.OperationSpec = { path: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate", @@ -1607,7 +2015,7 @@ const triggerRehydrateOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters8, + requestBody: Parameters.parameters11, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1641,7 +2049,7 @@ const triggerRestoreOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters9, + requestBody: Parameters.parameters12, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1763,7 +2171,7 @@ const syncBackupInstanceOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters10, + requestBody: Parameters.parameters13, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1797,7 +2205,7 @@ const validateForRestoreOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters11, + requestBody: Parameters.parameters14, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/backupInstancesExtensionRouting.ts b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstancesExtensionRouting.ts new file mode 100644 index 000000000000..9d356a75d410 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstancesExtensionRouting.ts @@ -0,0 +1,161 @@ +/* + * 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 { BackupInstancesExtensionRouting } from "../operationsInterfaces"; +import * as coreClient from "@azure/core-client"; +import * as Mappers from "../models/mappers"; +import * as Parameters from "../models/parameters"; +import { DataProtectionClient } from "../dataProtectionClient"; +import { + BackupInstanceResource, + BackupInstancesExtensionRoutingListNextOptionalParams, + BackupInstancesExtensionRoutingListOptionalParams, + BackupInstancesExtensionRoutingListResponse, + BackupInstancesExtensionRoutingListNextResponse +} from "../models"; + +/// +/** Class containing BackupInstancesExtensionRouting operations. */ +export class BackupInstancesExtensionRoutingImpl + implements BackupInstancesExtensionRouting { + private readonly client: DataProtectionClient; + + /** + * Initialize a new instance of the class BackupInstancesExtensionRouting class. + * @param client Reference to the service client + */ + constructor(client: DataProtectionClient) { + this.client = client; + } + + /** + * Gets a list of backup instances associated with a tracked resource + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param options The options parameters. + */ + public list( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): PagedAsyncIterableIterator { + const iter = this.listPagingAll(resourceId, 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.listPagingPage(resourceId, options, settings); + } + }; + } + + private async *listPagingPage( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams, + settings?: PageSettings + ): AsyncIterableIterator { + let result: BackupInstancesExtensionRoutingListResponse; + let continuationToken = settings?.continuationToken; + if (!continuationToken) { + result = await this._list(resourceId, options); + let page = result.value || []; + continuationToken = result.nextLink; + setContinuationToken(page, continuationToken); + yield page; + } + while (continuationToken) { + result = await this._listNext(resourceId, continuationToken, options); + continuationToken = result.nextLink; + let page = result.value || []; + setContinuationToken(page, continuationToken); + yield page; + } + } + + private async *listPagingAll( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): AsyncIterableIterator { + for await (const page of this.listPagingPage(resourceId, options)) { + yield* page; + } + } + + /** + * Gets a list of backup instances associated with a tracked resource + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param options The options parameters. + */ + private _list( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceId, options }, + listOperationSpec + ); + } + + /** + * ListNext + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param nextLink The nextLink from the previous successful call to the List method. + * @param options The options parameters. + */ + private _listNext( + resourceId: string, + nextLink: string, + options?: BackupInstancesExtensionRoutingListNextOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceId, nextLink, options }, + listNextOperationSpec + ); + } +} +// Operation Specifications +const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); + +const listOperationSpec: coreClient.OperationSpec = { + path: "/{resourceId}/providers/Microsoft.DataProtection/backupInstances", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.BackupInstanceResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [Parameters.$host, Parameters.resourceId], + headerParameters: [Parameters.accept], + serializer +}; +const listNextOperationSpec: coreClient.OperationSpec = { + path: "{nextLink}", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.BackupInstanceResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.resourceId], + headerParameters: [Parameters.accept], + serializer +}; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJob.ts b/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJob.ts new file mode 100644 index 000000000000..f322e69ddcd0 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJob.ts @@ -0,0 +1,76 @@ +/* + * 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 { CrossRegionRestoreJob } from "../operationsInterfaces"; +import * as coreClient from "@azure/core-client"; +import * as Mappers from "../models/mappers"; +import * as Parameters from "../models/parameters"; +import { DataProtectionClient } from "../dataProtectionClient"; +import { + CrossRegionRestoreJobRequest, + CrossRegionRestoreJobGetOptionalParams, + CrossRegionRestoreJobGetResponse +} from "../models"; + +/** Class containing CrossRegionRestoreJob operations. */ +export class CrossRegionRestoreJobImpl implements CrossRegionRestoreJob { + private readonly client: DataProtectionClient; + + /** + * Initialize a new instance of the class CrossRegionRestoreJob class. + * @param client Reference to the service client + */ + constructor(client: DataProtectionClient) { + this.client = client; + } + + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + get( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobRequest, + options?: CrossRegionRestoreJobGetOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, location, parameters, options }, + getOperationSpec + ); + } +} +// Operation Specifications +const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); + +const getOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/fetchCrossRegionRestoreJob", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupJobResource + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + requestBody: Parameters.parameters16, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJobs.ts b/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJobs.ts new file mode 100644 index 000000000000..4c4fa2c40091 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJobs.ts @@ -0,0 +1,217 @@ +/* + * 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 { CrossRegionRestoreJobs } from "../operationsInterfaces"; +import * as coreClient from "@azure/core-client"; +import * as Mappers from "../models/mappers"; +import * as Parameters from "../models/parameters"; +import { DataProtectionClient } from "../dataProtectionClient"; +import { + AzureBackupJobResource, + CrossRegionRestoreJobsRequest, + CrossRegionRestoreJobsListNextOptionalParams, + CrossRegionRestoreJobsListOptionalParams, + CrossRegionRestoreJobsListResponse, + CrossRegionRestoreJobsListNextResponse +} from "../models"; + +/// +/** Class containing CrossRegionRestoreJobs operations. */ +export class CrossRegionRestoreJobsImpl implements CrossRegionRestoreJobs { + private readonly client: DataProtectionClient; + + /** + * Initialize a new instance of the class CrossRegionRestoreJobs class. + * @param client Reference to the service client + */ + constructor(client: DataProtectionClient) { + this.client = client; + } + + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + public list( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + options?: CrossRegionRestoreJobsListOptionalParams + ): PagedAsyncIterableIterator { + const iter = this.listPagingAll( + resourceGroupName, + location, + parameters, + 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.listPagingPage( + resourceGroupName, + location, + parameters, + options, + settings + ); + } + }; + } + + private async *listPagingPage( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + options?: CrossRegionRestoreJobsListOptionalParams, + settings?: PageSettings + ): AsyncIterableIterator { + let result: CrossRegionRestoreJobsListResponse; + let continuationToken = settings?.continuationToken; + if (!continuationToken) { + result = await this._list( + resourceGroupName, + location, + parameters, + options + ); + let page = result.value || []; + continuationToken = result.nextLink; + setContinuationToken(page, continuationToken); + yield page; + } + while (continuationToken) { + result = await this._listNext( + resourceGroupName, + location, + parameters, + continuationToken, + options + ); + continuationToken = result.nextLink; + let page = result.value || []; + setContinuationToken(page, continuationToken); + yield page; + } + } + + private async *listPagingAll( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + options?: CrossRegionRestoreJobsListOptionalParams + ): AsyncIterableIterator { + for await (const page of this.listPagingPage( + resourceGroupName, + location, + parameters, + options + )) { + yield* page; + } + } + + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + private _list( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + options?: CrossRegionRestoreJobsListOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, location, parameters, options }, + listOperationSpec + ); + } + + /** + * ListNext + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param nextLink The nextLink from the previous successful call to the List method. + * @param options The options parameters. + */ + private _listNext( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + nextLink: string, + options?: CrossRegionRestoreJobsListNextOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, location, parameters, nextLink, options }, + listNextOperationSpec + ); + } +} +// Operation Specifications +const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); + +const listOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/fetchCrossRegionRestoreJobs", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupJobResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + requestBody: Parameters.parameters17, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; +const listNextOperationSpec: coreClient.OperationSpec = { + path: "{nextLink}", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupJobResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location, + Parameters.nextLink + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/dppResourceGuardProxy.ts b/sdk/dataprotection/arm-dataprotection/src/operations/dppResourceGuardProxy.ts index 8e9f976587d8..de4a69660ae9 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/dppResourceGuardProxy.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/dppResourceGuardProxy.ts @@ -307,7 +307,7 @@ const createOrUpdateOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters15, + requestBody: Parameters.parameters21, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -354,7 +354,7 @@ const unlockDeleteOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters16, + requestBody: Parameters.parameters22, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/index.ts b/sdk/dataprotection/arm-dataprotection/src/operations/index.ts index 7ec031af6618..1dc720416e8f 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/index.ts @@ -17,6 +17,10 @@ export * from "./dataProtectionOperations"; export * from "./backupPolicies"; export * from "./backupInstances"; export * from "./recoveryPoints"; +export * from "./secondaryRPs"; +export * from "./crossRegionRestoreJob"; +export * from "./crossRegionRestoreJobs"; +export * from "./backupInstancesExtensionRouting"; export * from "./jobs"; export * from "./restorableTimeRanges"; export * from "./exportJobs"; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts b/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts index bb7261d83513..f2ff41d68c5a 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts @@ -13,6 +13,12 @@ import * as coreClient from "@azure/core-client"; import * as Mappers from "../models/mappers"; import * as Parameters from "../models/parameters"; import { DataProtectionClient } from "../dataProtectionClient"; +import { + SimplePollerLike, + OperationState, + createHttpPoller +} from "@azure/core-lro"; +import { createLroSpec } from "../lroImpl"; import { AzureBackupJobResource, JobsListNextOptionalParams, @@ -20,6 +26,10 @@ import { JobsListResponse, JobsGetOptionalParams, JobsGetResponse, + JobsTriggerCancelOptionalParams, + JobsTriggerCancelResponse, + JobsGenerateProgressUrlOptionalParams, + JobsGenerateProgressUrlResponse, JobsListNextResponse } from "../models"; @@ -149,6 +159,124 @@ export class JobsImpl implements Jobs { ); } + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + async beginTriggerCancel( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + JobsTriggerCancelResponse + > + > { + 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, vaultName, jobId, options }, + spec: triggerCancelOperationSpec + }); + const poller = await createHttpPoller< + JobsTriggerCancelResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" + }); + await poller.poll(); + return poller; + } + + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + async beginTriggerCancelAndWait( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise { + const poller = await this.beginTriggerCancel( + resourceGroupName, + vaultName, + jobId, + options + ); + return poller.pollUntilDone(); + } + + /** + * Generates read SAS URL for a blob from which current job progress can be read. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + generateProgressUrl( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsGenerateProgressUrlOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, vaultName, jobId, options }, + generateProgressUrlOperationSpec + ); + } + /** * ListNext * @param resourceGroupName The name of the resource group. The name is case insensitive. @@ -216,6 +344,61 @@ const getOperationSpec: coreClient.OperationSpec = { headerParameters: [Parameters.accept], serializer }; +const triggerCancelOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}/triggerCancel", + httpMethod: "POST", + responses: { + 200: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + 201: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + 202: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + 204: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.vaultName1, + Parameters.jobId + ], + headerParameters: [Parameters.accept], + serializer +}; +const generateProgressUrlOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}/generateProgressUrl", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupJobProgressUrl + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.vaultName1, + Parameters.jobId + ], + headerParameters: [Parameters.accept], + serializer +}; const listNextOperationSpec: coreClient.OperationSpec = { path: "{nextLink}", httpMethod: "GET", diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts b/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts index 0080aa6f333e..a590ef5923f6 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts @@ -1278,7 +1278,7 @@ const putOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters13, + requestBody: Parameters.parameters19, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1345,7 +1345,7 @@ const patchOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters14, + requestBody: Parameters.parameters20, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/restorableTimeRanges.ts b/sdk/dataprotection/arm-dataprotection/src/operations/restorableTimeRanges.ts index 7611400ddec5..11ed1893a2f8 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/restorableTimeRanges.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/restorableTimeRanges.ts @@ -64,7 +64,7 @@ const findOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters12, + requestBody: Parameters.parameters18, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/secondaryRPs.ts b/sdk/dataprotection/arm-dataprotection/src/operations/secondaryRPs.ts new file mode 100644 index 000000000000..0fab10df7412 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operations/secondaryRPs.ts @@ -0,0 +1,225 @@ +/* + * 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 { SecondaryRPs } from "../operationsInterfaces"; +import * as coreClient from "@azure/core-client"; +import * as Mappers from "../models/mappers"; +import * as Parameters from "../models/parameters"; +import { DataProtectionClient } from "../dataProtectionClient"; +import { + AzureBackupRecoveryPointResource, + FetchSecondaryRPsRequestParameters, + SecondaryRPsFetchNextOptionalParams, + SecondaryRPsFetchOptionalParams, + SecondaryRPsFetchResponse, + SecondaryRPsFetchNextResponse +} from "../models"; + +/// +/** Class containing SecondaryRPs operations. */ +export class SecondaryRPsImpl implements SecondaryRPs { + private readonly client: DataProtectionClient; + + /** + * Initialize a new instance of the class SecondaryRPs class. + * @param client Reference to the service client + */ + constructor(client: DataProtectionClient) { + this.client = client; + } + + /** + * Returns a list of Secondary Recovery Points for a DataSource in a vault, that can be used for Cross + * Region Restore. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + public listFetch( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + options?: SecondaryRPsFetchOptionalParams + ): PagedAsyncIterableIterator { + const iter = this.fetchPagingAll( + resourceGroupName, + location, + parameters, + 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.fetchPagingPage( + resourceGroupName, + location, + parameters, + options, + settings + ); + } + }; + } + + private async *fetchPagingPage( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + options?: SecondaryRPsFetchOptionalParams, + settings?: PageSettings + ): AsyncIterableIterator { + let result: SecondaryRPsFetchResponse; + let continuationToken = settings?.continuationToken; + if (!continuationToken) { + result = await this._fetch( + resourceGroupName, + location, + parameters, + options + ); + let page = result.value || []; + continuationToken = result.nextLink; + setContinuationToken(page, continuationToken); + yield page; + } + while (continuationToken) { + result = await this._fetchNext( + resourceGroupName, + location, + parameters, + continuationToken, + options + ); + continuationToken = result.nextLink; + let page = result.value || []; + setContinuationToken(page, continuationToken); + yield page; + } + } + + private async *fetchPagingAll( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + options?: SecondaryRPsFetchOptionalParams + ): AsyncIterableIterator { + for await (const page of this.fetchPagingPage( + resourceGroupName, + location, + parameters, + options + )) { + yield* page; + } + } + + /** + * Returns a list of Secondary Recovery Points for a DataSource in a vault, that can be used for Cross + * Region Restore. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + private _fetch( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + options?: SecondaryRPsFetchOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, location, parameters, options }, + fetchOperationSpec + ); + } + + /** + * FetchNext + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param nextLink The nextLink from the previous successful call to the Fetch method. + * @param options The options parameters. + */ + private _fetchNext( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + nextLink: string, + options?: SecondaryRPsFetchNextOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, location, parameters, nextLink, options }, + fetchNextOperationSpec + ); + } +} +// Operation Specifications +const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); + +const fetchOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/fetchSecondaryRecoveryPoints", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupRecoveryPointResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + requestBody: Parameters.parameters15, + queryParameters: [ + Parameters.apiVersion, + Parameters.filter, + Parameters.skipToken + ], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; +const fetchNextOperationSpec: coreClient.OperationSpec = { + path: "{nextLink}", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupRecoveryPointResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.location, + Parameters.nextLink + ], + headerParameters: [Parameters.accept, Parameters.contentType], + mediaType: "json", + serializer +}; diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstances.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstances.ts index 7f074eb60e10..37c8db2a2c6d 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstances.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstances.ts @@ -22,8 +22,17 @@ import { ValidateForBackupRequest, BackupInstancesValidateForBackupOptionalParams, BackupInstancesValidateForBackupResponse, + ValidateForModifyBackupRequest, + BackupInstancesValidateForModifyBackupOptionalParams, + BackupInstancesValidateForModifyBackupResponse, BackupInstancesGetBackupInstanceOperationResultOptionalParams, BackupInstancesGetBackupInstanceOperationResultResponse, + CrossRegionRestoreRequestObject, + BackupInstancesTriggerCrossRegionRestoreOptionalParams, + BackupInstancesTriggerCrossRegionRestoreResponse, + ValidateCrossRegionRestoreRequestObject, + BackupInstancesValidateCrossRegionRestoreOptionalParams, + BackupInstancesValidateCrossRegionRestoreResponse, AzureBackupRehydrationRequest, BackupInstancesTriggerRehydrateOptionalParams, BackupInstancesTriggerRehydrateResponse, @@ -195,6 +204,41 @@ export interface BackupInstances { parameters: ValidateForBackupRequest, options?: BackupInstancesValidateForBackupOptionalParams ): Promise; + /** + * Validate whether update for backup instance will be successful or not + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param backupInstanceName The name of the backup instance. + * @param parameters Request body for operation + * @param options The options parameters. + */ + beginValidateForModifyBackup( + resourceGroupName: string, + vaultName: string, + backupInstanceName: string, + parameters: ValidateForModifyBackupRequest, + options?: BackupInstancesValidateForModifyBackupOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + BackupInstancesValidateForModifyBackupResponse + > + >; + /** + * Validate whether update for backup instance will be successful or not + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param backupInstanceName The name of the backup instance. + * @param parameters Request body for operation + * @param options The options parameters. + */ + beginValidateForModifyBackupAndWait( + resourceGroupName: string, + vaultName: string, + backupInstanceName: string, + parameters: ValidateForModifyBackupRequest, + options?: BackupInstancesValidateForModifyBackupOptionalParams + ): Promise; /** * Get result of backup instance creation operation * @param resourceGroupName The name of the resource group. The name is case insensitive. @@ -210,6 +254,64 @@ export interface BackupInstances { operationId: string, options?: BackupInstancesGetBackupInstanceOperationResultOptionalParams ): Promise; + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for trigger CRR operation + * @param options The options parameters. + */ + beginTriggerCrossRegionRestore( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreRequestObject, + options?: BackupInstancesTriggerCrossRegionRestoreOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + BackupInstancesTriggerCrossRegionRestoreResponse + > + >; + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for trigger CRR operation + * @param options The options parameters. + */ + beginTriggerCrossRegionRestoreAndWait( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreRequestObject, + options?: BackupInstancesTriggerCrossRegionRestoreOptionalParams + ): Promise; + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + beginValidateCrossRegionRestore( + resourceGroupName: string, + location: string, + parameters: ValidateCrossRegionRestoreRequestObject, + options?: BackupInstancesValidateCrossRegionRestoreOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + BackupInstancesValidateCrossRegionRestoreResponse + > + >; + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + beginValidateCrossRegionRestoreAndWait( + resourceGroupName: string, + location: string, + parameters: ValidateCrossRegionRestoreRequestObject, + options?: BackupInstancesValidateCrossRegionRestoreOptionalParams + ): Promise; /** * rehydrate recovery point for restore for a BackupInstance * @param resourceGroupName The name of the resource group. The name is case insensitive. diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstancesExtensionRouting.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstancesExtensionRouting.ts new file mode 100644 index 000000000000..f70b3d32f1fa --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstancesExtensionRouting.ts @@ -0,0 +1,27 @@ +/* + * 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 { + BackupInstanceResource, + BackupInstancesExtensionRoutingListOptionalParams +} from "../models"; + +/// +/** Interface representing a BackupInstancesExtensionRouting. */ +export interface BackupInstancesExtensionRouting { + /** + * Gets a list of backup instances associated with a tracked resource + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param options The options parameters. + */ + list( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): PagedAsyncIterableIterator; +} diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts new file mode 100644 index 000000000000..63b41de7ab47 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts @@ -0,0 +1,29 @@ +/* + * 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 { + CrossRegionRestoreJobRequest, + CrossRegionRestoreJobGetOptionalParams, + CrossRegionRestoreJobGetResponse +} from "../models"; + +/** Interface representing a CrossRegionRestoreJob. */ +export interface CrossRegionRestoreJob { + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + get( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobRequest, + options?: CrossRegionRestoreJobGetOptionalParams + ): Promise; +} diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts new file mode 100644 index 000000000000..e77cfbe3c8df --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts @@ -0,0 +1,31 @@ +/* + * 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 { + AzureBackupJobResource, + CrossRegionRestoreJobsRequest, + CrossRegionRestoreJobsListOptionalParams +} from "../models"; + +/// +/** Interface representing a CrossRegionRestoreJobs. */ +export interface CrossRegionRestoreJobs { + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + list( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + options?: CrossRegionRestoreJobsListOptionalParams + ): PagedAsyncIterableIterator; +} diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts index 7ec031af6618..1dc720416e8f 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts @@ -17,6 +17,10 @@ export * from "./dataProtectionOperations"; export * from "./backupPolicies"; export * from "./backupInstances"; export * from "./recoveryPoints"; +export * from "./secondaryRPs"; +export * from "./crossRegionRestoreJob"; +export * from "./crossRegionRestoreJobs"; +export * from "./backupInstancesExtensionRouting"; export * from "./jobs"; export * from "./restorableTimeRanges"; export * from "./exportJobs"; diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts index a181f6a84fe3..31279ee5455b 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts @@ -7,11 +7,16 @@ */ import { PagedAsyncIterableIterator } from "@azure/core-paging"; +import { SimplePollerLike, OperationState } from "@azure/core-lro"; import { AzureBackupJobResource, JobsListOptionalParams, JobsGetOptionalParams, - JobsGetResponse + JobsGetResponse, + JobsTriggerCancelOptionalParams, + JobsTriggerCancelResponse, + JobsGenerateProgressUrlOptionalParams, + JobsGenerateProgressUrlResponse } from "../models"; /// @@ -42,4 +47,51 @@ export interface Jobs { jobId: string, options?: JobsGetOptionalParams ): Promise; + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + beginTriggerCancel( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + JobsTriggerCancelResponse + > + >; + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + beginTriggerCancelAndWait( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise; + /** + * Generates read SAS URL for a blob from which current job progress can be read. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + generateProgressUrl( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsGenerateProgressUrlOptionalParams + ): Promise; } diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts new file mode 100644 index 000000000000..469a0a4d30d3 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts @@ -0,0 +1,33 @@ +/* + * 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 { + AzureBackupRecoveryPointResource, + FetchSecondaryRPsRequestParameters, + SecondaryRPsFetchOptionalParams +} from "../models"; + +/// +/** Interface representing a SecondaryRPs. */ +export interface SecondaryRPs { + /** + * Returns a list of Secondary Recovery Points for a DataSource in a vault, that can be used for Cross + * Region Restore. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + listFetch( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + options?: SecondaryRPsFetchOptionalParams + ): PagedAsyncIterableIterator; +} diff --git a/sdk/dataprotection/arm-dataprotection/test/sampleTest.ts b/sdk/dataprotection/arm-dataprotection/test/sampleTest.ts new file mode 100644 index 000000000000..25aeb3ebcc36 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/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/dataprotection/arm-dataprotection/tsconfig.json b/sdk/dataprotection/arm-dataprotection/tsconfig.json index 1f65f09046a1..3e6ae96443f3 100644 --- a/sdk/dataprotection/arm-dataprotection/tsconfig.json +++ b/sdk/dataprotection/arm-dataprotection/tsconfig.json @@ -15,17 +15,11 @@ ], "declaration": true, "outDir": "./dist-esm", - "importHelpers": true, - "paths": { - "@azure/arm-dataprotection": [ - "./src/index" - ] - } + "importHelpers": true }, "include": [ "./src/**/*.ts", - "./test/**/*.ts", - "samples-dev/**/*.ts" + "./test/**/*.ts" ], "exclude": [ "node_modules"