diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index be8f46d87a50..868d6fbaf765 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -9573,6 +9573,37 @@ packages: code-block-writer: 12.0.0 dev: false + /ts-node@10.9.1(@types/node@16.18.55)(typescript@5.0.4): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 16.18.55 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.0.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: false + /ts-node@10.9.1(@types/node@16.18.55)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -12992,7 +13023,7 @@ packages: dev: false file:projects/arm-dataprotection.tgz: - resolution: {integrity: sha512-CDD3PcT6I5BK5ZVx8W2x3uSo1yNXjz9+c0sXo0FSN/+/9MQ3D8wmcDC7kjvBPoUF2gb2OOes/xm+n2ChmJWyMw==, tarball: file:projects/arm-dataprotection.tgz} + resolution: {integrity: sha512-V1bfsC3jQhfQqLIG6mjvNXEN4QWpn7b7+1Flk7Z4mqEI/MI+X04eaYuQkhatr+P8i0txmv9w2lgONQwWAOQ1Cw==, tarball: file:projects/arm-dataprotection.tgz} name: '@rush-temp/arm-dataprotection' version: 0.0.0 dependencies: @@ -13003,18 +13034,20 @@ packages: '@rollup/plugin-multi-entry': 6.0.0(rollup@2.79.1) '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.1) '@types/chai': 4.3.6 + '@types/mocha': 10.0.2 '@types/node': 16.18.55 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 rollup: 2.79.1 rollup-plugin-sourcemaps: 0.6.3(@types/node@16.18.55)(rollup@2.79.1) - ts-node: 10.9.1(@types/node@16.18.55)(typescript@5.2.2) + ts-node: 10.9.1(@types/node@16.18.55)(typescript@5.0.4) tslib: 2.6.2 - typescript: 5.2.2 + typescript: 5.0.4 uglify-js: 3.17.4 transitivePeerDependencies: - '@swc/core' @@ -20048,7 +20081,7 @@ packages: dev: false file:projects/identity-broker.tgz: - resolution: {integrity: sha512-Td7ny0f5I13ifzov1ZRpLikjV1W1K+/dP3v0wLbPRNc+5PmO83YEggizdO557ZUAqgXig0lOgOjQNs8RU5Q2zw==, tarball: file:projects/identity-broker.tgz} + resolution: {integrity: sha512-bJeT5l52RzMz9AsOWdVh1c0a1FyZTR49uO1DqkoaMLfHDSxTnSotfk6PySH3xIlHCu6AziNVtLp6PTHB5nBdeA==, tarball: file:projects/identity-broker.tgz} name: '@rush-temp/identity-broker' version: 0.0.0 dependencies: @@ -22206,7 +22239,7 @@ packages: dev: false file:projects/search-documents.tgz: - resolution: {integrity: sha512-v58t6pSQO2V8yONwW5KEjBcPCGQKo0leyK1/Xu3r9/VodjwUkhCra7MN5g8bZXMqe3wl+l5d2KNcrqaMXOmnDg==, tarball: file:projects/search-documents.tgz} + resolution: {integrity: sha512-TYRJDw9i9Sl87uFVhvAvvk5N1Bq/7axieJRvMiK2YkRVDXO0iO4/B9B83ews5FIsNQkGVqEO8xS7cB1FEX+8Og==, tarball: file:projects/search-documents.tgz} name: '@rush-temp/search-documents' version: 0.0.0 dependencies: @@ -22254,7 +22287,7 @@ packages: dev: false file:projects/service-bus.tgz: - resolution: {integrity: sha512-CgQZNEj4Cd1d9SHnlFuFoYEeuVB4yufSziSCh6E+25sOH5CDqb0UmcagHrw+fLBeIY53n3PnF0seP9hzvp+hAg==, tarball: file:projects/service-bus.tgz} + resolution: {integrity: sha512-gyGZU0bo+BvUmhNcsvo0xxwlBz5N0jKg1WA7wND5RV2QdkNnCFSc2dr4D5A7XaE44nHDsyil7qFh5ZC7QOt6pA==, tarball: file:projects/service-bus.tgz} name: '@rush-temp/service-bus' version: 0.0.0 dependencies: diff --git a/sdk/dataprotection/arm-dataprotection/CHANGELOG.md b/sdk/dataprotection/arm-dataprotection/CHANGELOG.md index 9b9de0b5b311..99dad307bd57 100644 --- a/sdk/dataprotection/arm-dataprotection/CHANGELOG.md +++ b/sdk/dataprotection/arm-dataprotection/CHANGELOG.md @@ -1,15 +1,56 @@ # Release History + +## 2.0.0 (2023-10-27) + +**Features** -## 1.2.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed + - 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 Interface BackupInstancesTriggerCrossRegionRestoreHeaders + - Added Interface BackupInstancesTriggerCrossRegionRestoreOptionalParams + - Added Interface BackupInstancesValidateCrossRegionRestoreHeaders + - Added Interface BackupInstancesValidateCrossRegionRestoreOptionalParams + - 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 FetchSecondaryRPsRequestParameters + - Added Interface SecondaryRPsFetchNextOptionalParams + - Added Interface SecondaryRPsFetchOptionalParams + - Added Interface UserFacingWarningDetail + - Added Interface ValidateCrossRegionRestoreRequestObject + - Added Type Alias BackupInstancesTriggerCrossRegionRestoreResponse + - Added Type Alias BackupInstancesValidateCrossRegionRestoreResponse + - Added Type Alias BaseResourcePropertiesUnion + - Added Type Alias CrossRegionRestoreJobGetResponse + - Added Type Alias CrossRegionRestoreJobsListNextResponse + - Added Type Alias CrossRegionRestoreJobsListResponse + - Added Type Alias RecoveryPointCompletionState + - Added Type Alias ResourcePropertiesObjectType + - Added Type Alias SecondaryRPsFetchNextResponse + - Added Type Alias SecondaryRPsFetchResponse + - Interface AzureBackupDiscreteRecoveryPoint has a new optional parameter recoveryPointState + - Interface BackupVault has a new optional parameter replicatedRegions + - Interface JobExtendedInfo has a new optional parameter warningDetails + - Added Enum KnownRecoveryPointCompletionState + - 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 +103,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/_meta.json b/sdk/dataprotection/arm-dataprotection/_meta.json index ecfdd4e96408..4d974060309b 100644 --- a/sdk/dataprotection/arm-dataprotection/_meta.json +++ b/sdk/dataprotection/arm-dataprotection/_meta.json @@ -1,8 +1,8 @@ { - "commit": "0f39a2d56070d2bc4251494525cb8af88583a938", + "commit": "37b67161f9c8bda7b3278592d2d14780444c7246", "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.11", "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.2", + "use": "@autorest/typescript@^6.0.11" } \ No newline at end of file diff --git a/sdk/dataprotection/arm-dataprotection/package.json b/sdk/dataprotection/arm-dataprotection/package.json index 667028fbb381..3d1c64debea8 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", "engines": { "node": ">=16.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": [ @@ -29,21 +29,29 @@ "types": "./types/arm-dataprotection.d.ts", "devDependencies": { "@microsoft/api-extractor": "^7.31.1", + "@rollup/plugin-commonjs": "^24.0.0", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-multi-entry": "^6.0.0", + "@rollup/plugin-node-resolve": "^13.1.3", "mkdirp": "^2.1.2", - "typescript": "~5.2.0", + "rollup": "^2.66.1", + "rollup-plugin-sourcemaps": "^0.6.3", + "typescript": "~5.0.0", "uglify-js": "^3.4.9", - "rimraf": "^3.0.0", + "rimraf": "^5.0.0", "dotenv": "^16.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": "^16.0.0", - "@azure/dev-tool": "^1.0.0", - "ts-node": "^10.0.0" + "ts-node": "^10.0.0", + "@azure/dev-tool": "^1.0.0" }, "repository": { "type": "git", @@ -64,20 +72,21 @@ "src/**/*.ts", "README.md", "LICENSE", + "rollup.config.js", "tsconfig.json", "review/*", "CHANGELOG.md", "types/*" ], "scripts": { - "build": "npm run clean && tsc && dev-tool run bundle && npm run minify && mkdirp ./review && npm run extract-api", + "build": "npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api", "minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js", "prepack": "npm run build", "pack": "npm pack 2>&1", "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 +114,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..0cc82248aa54 100644 --- a/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md +++ b/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md @@ -67,6 +67,7 @@ export interface AzureBackupDiscreteRecoveryPoint extends AzureBackupRecoveryPoi recoveryPointDataStoresDetails?: RecoveryPointDataStoreDetails[]; // (undocumented) recoveryPointId?: string; + recoveryPointState?: RecoveryPointCompletionState; // (undocumented) recoveryPointTime: Date; // (undocumented) @@ -305,10 +306,18 @@ 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; beginValidateForRestore(resourceGroupName: string, vaultName: string, backupInstanceName: string, parameters: ValidateRestoreRequestObject, options?: BackupInstancesValidateForRestoreOptionalParams): Promise, BackupInstancesValidateForRestoreResponse>>; @@ -455,6 +464,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 +512,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; @@ -585,6 +626,7 @@ export interface BackupVault { readonly isVaultProtectedByResourceGuard?: boolean; monitoringSettings?: MonitoringSettings; readonly provisioningState?: ProvisioningState; + replicatedRegions?: string[]; readonly resourceMoveDetails?: ResourceMoveDetails; readonly resourceMoveState?: ResourceMoveState; readonly secureScore?: SecureScoreLevel; @@ -733,9 +775,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[]; @@ -816,6 +861,72 @@ 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 { + filter?: string; +} + +// @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; @@ -870,6 +981,10 @@ export class DataProtectionClient extends coreClient.ServiceClient { // (undocumented) backupVaults: BackupVaults; // (undocumented) + crossRegionRestoreJob: CrossRegionRestoreJob; + // (undocumented) + crossRegionRestoreJobs: CrossRegionRestoreJobs; + // (undocumented) dataProtection: DataProtection; // (undocumented) dataProtectionOperations: DataProtectionOperations; @@ -898,6 +1013,8 @@ export class DataProtectionClient extends coreClient.ServiceClient { // (undocumented) restorableTimeRanges: RestorableTimeRanges; // (undocumented) + secondaryRPs: SecondaryRPs; + // (undocumented) subscriptionId?: string; } @@ -934,7 +1051,7 @@ export interface Datasource { resourceID: string; resourceLocation?: string; resourceName?: string; - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; resourceType?: string; resourceUri?: string; } @@ -946,7 +1063,7 @@ export interface DatasourceSet { resourceID: string; resourceLocation?: string; resourceName?: string; - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; resourceType?: string; resourceUri?: string; } @@ -978,6 +1095,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; @@ -1287,6 +1409,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; @@ -1354,6 +1482,7 @@ export interface JobExtendedInfo { readonly sourceRecoverPoint?: RestoreJobRecoveryPointDetails; readonly subTasks?: JobSubTask[]; readonly targetRecoverPoint?: RestoreJobRecoveryPointDetails; + readonly warningDetails?: UserFacingWarningDetail[]; } // @public @@ -1529,6 +1658,12 @@ export enum KnownRecoveryOption { FailIfExists = "FailIfExists" } +// @public +export enum KnownRecoveryPointCompletionState { + Completed = "Completed", + Partial = "Partial" +} + // @public export enum KnownRehydrationPriority { High = "High", @@ -1559,6 +1694,11 @@ export enum KnownResourceMoveState { Unknown = "Unknown" } +// @public +export enum KnownResourcePropertiesObjectType { + DefaultResourceProperties = "DefaultResourceProperties" +} + // @public export enum KnownRestoreSourceDataStoreType { ArchiveStore = "ArchiveStore", @@ -1846,6 +1986,9 @@ export interface RangeBasedItemLevelRestoreCriteria extends ItemLevelRestoreCrit // @public export type RecoveryOption = string; +// @public +export type RecoveryPointCompletionState = string; + // @public export interface RecoveryPointDataStoreDetails { // (undocumented) @@ -2185,6 +2328,9 @@ export interface ResourceMoveDetails { // @public export type ResourceMoveState = string; +// @public +export type ResourcePropertiesObjectType = string; + // @public (undocumented) export interface RestorableTimeRange { endTime: string; @@ -2269,6 +2415,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"; @@ -2424,6 +2591,18 @@ 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; diff --git a/sdk/dataprotection/arm-dataprotection/rollup.config.js b/sdk/dataprotection/arm-dataprotection/rollup.config.js new file mode 100644 index 000000000000..3f89d7309da5 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/rollup.config.js @@ -0,0 +1,122 @@ +/* + * 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 nodeResolve from "@rollup/plugin-node-resolve"; +import cjs from "@rollup/plugin-commonjs"; +import sourcemaps from "rollup-plugin-sourcemaps"; +import multiEntry from "@rollup/plugin-multi-entry"; +import json from "@rollup/plugin-json"; + +import nodeBuiltins from "builtin-modules"; + +// #region Warning Handler + +/** + * A function that can determine whether a rollup warning should be ignored. If + * the function returns `true`, then the warning will not be displayed. + */ + +function ignoreNiseSinonEval(warning) { + return ( + warning.code === "EVAL" && + warning.id && + (warning.id.includes("node_modules/nise") || + warning.id.includes("node_modules/sinon")) === true + ); +} + +function ignoreChaiCircularDependency(warning) { + return ( + warning.code === "CIRCULAR_DEPENDENCY" && + warning.importer && warning.importer.includes("node_modules/chai") === true + ); +} + +const warningInhibitors = [ignoreChaiCircularDependency, ignoreNiseSinonEval]; + +/** + * Construct a warning handler for the shared rollup configuration + * that ignores certain warnings that are not relevant to testing. + */ +function makeOnWarnForTesting() { + return (warning, warn) => { + // If every inhibitor returns false (i.e. no inhibitors), then show the warning + if (warningInhibitors.every((inhib) => !inhib(warning))) { + warn(warning); + } + }; +} + +// #endregion + +function makeBrowserTestConfig() { + const config = { + input: { + include: ["dist-esm/test/**/*.spec.js"], + exclude: ["dist-esm/test/**/node/**"] + }, + output: { + file: `dist-test/index.browser.js`, + format: "umd", + sourcemap: true + }, + preserveSymlinks: false, + plugins: [ + multiEntry({ exports: false }), + nodeResolve({ + mainFields: ["module", "browser"] + }), + cjs(), + json(), + sourcemaps() + //viz({ filename: "dist-test/browser-stats.html", sourcemap: true }) + ], + onwarn: makeOnWarnForTesting(), + // Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0, + // rollup started respecting the "sideEffects" field in package.json. Since + // our package.json sets "sideEffects=false", this also applies to test + // code, which causes all tests to be removed by tree-shaking. + treeshake: false + }; + + return config; +} + +const defaultConfigurationOptions = { + disableBrowserBundle: false +}; + +export function makeConfig(pkg, options) { + options = { + ...defaultConfigurationOptions, + ...(options || {}) + }; + + const baseConfig = { + // Use the package's module field if it has one + input: pkg["module"] || "dist-esm/src/index.js", + external: [ + ...nodeBuiltins, + ...Object.keys(pkg.dependencies), + ...Object.keys(pkg.devDependencies) + ], + output: { file: "dist/index.js", format: "cjs", sourcemap: true }, + preserveSymlinks: false, + plugins: [sourcemaps(), nodeResolve()] + }; + + const config = [baseConfig]; + + if (!options.disableBrowserBundle) { + config.push(makeBrowserTestConfig()); + } + + return config; +} + +export default makeConfig(require("./package.json")); diff --git a/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts b/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts index ce0888aa2f64..54e9f23ded83 100644 --- a/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts +++ b/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts @@ -26,6 +26,9 @@ import { BackupPoliciesImpl, BackupInstancesImpl, RecoveryPointsImpl, + SecondaryRPsImpl, + CrossRegionRestoreJobImpl, + CrossRegionRestoreJobsImpl, JobsImpl, RestorableTimeRangesImpl, ExportJobsImpl, @@ -46,6 +49,9 @@ import { BackupPolicies, BackupInstances, RecoveryPoints, + SecondaryRPs, + CrossRegionRestoreJob, + CrossRegionRestoreJobs, Jobs, RestorableTimeRanges, ExportJobs, @@ -102,7 +108,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`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` @@ -155,7 +161,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-11-01"; this.backupVaults = new BackupVaultsImpl(this); this.operationResult = new OperationResultImpl(this); this.operationStatus = new OperationStatusImpl(this); @@ -173,6 +179,9 @@ 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.jobs = new JobsImpl(this); this.restorableTimeRanges = new RestorableTimeRangesImpl(this); this.exportJobs = new ExportJobsImpl(this); @@ -222,6 +231,9 @@ export class DataProtectionClient extends coreClient.ServiceClient { backupPolicies: BackupPolicies; backupInstances: BackupInstances; recoveryPoints: RecoveryPoints; + secondaryRPs: SecondaryRPs; + crossRegionRestoreJob: CrossRegionRestoreJob; + crossRegionRestoreJobs: CrossRegionRestoreJobs; 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..a93f75524033 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; @@ -102,6 +105,8 @@ export interface BackupVault { * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly secureScore?: SecureScoreLevel; + /** List of replicated regions for Backup Vault */ + replicatedRegions?: string[]; } /** Monitoring Settings */ @@ -532,13 +537,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 +563,7 @@ export interface DatasourceSet { /** Uri of the resource. */ resourceUri?: string; /** Properties specific to data source set */ - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; } /** Policy Info in backupInstance */ @@ -701,14 +706,24 @@ export interface AzureBackupRecoveryPoint { 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 +759,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 */ @@ -880,6 +903,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 +932,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. */ @@ -1347,7 +1410,7 @@ export interface ResourceGuardProxyBaseResourceList extends DppResourceList { export interface OperationJobExtendedInfo extends OperationExtendedInfo { /** Polymorphic discriminator, which specifies the different types this object can be */ objectType: "OperationJobExtendedInfo"; - /** Arm Id of the job created for this operation. */ + /** Name or Arm Id of the job created for this operation. */ jobId?: string; } @@ -1426,6 +1489,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 */ @@ -1496,6 +1565,8 @@ export interface AzureBackupDiscreteRecoveryPoint retentionTagVersion?: string; /** NOTE: This property will not be serialized. It can only be populated by the server. */ readonly expiryTime?: Date; + /** Specifies recovery point completeness. Partial (i.e., only some of the intended items were backed up), or Completed (i.e., ALL intended items were backed up). */ + recoveryPointState?: RecoveryPointCompletionState; } /** Azure backup recoveryPoint based restore request */ @@ -1803,6 +1874,26 @@ export interface BackupInstancesValidateForBackupHeaders { 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. */ @@ -2152,6 +2243,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 +2375,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 +2414,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 */ @@ -2395,6 +2501,24 @@ export enum KnownRehydrationStatus { */ export type RehydrationStatus = string; +/** Known values of {@link RecoveryPointCompletionState} that the service accepts. */ +export enum KnownRecoveryPointCompletionState { + /** Completed */ + Completed = "Completed", + /** Partial */ + Partial = "Partial" +} + +/** + * Defines values for RecoveryPointCompletionState. \ + * {@link KnownRecoveryPointCompletionState} can be used interchangeably with RecoveryPointCompletionState, + * this enum contains the known values that the service supports. + * ### Known values supported by the service + * **Completed** \ + * **Partial** + */ +export type RecoveryPointCompletionState = string; + /** Known values of {@link FeatureType} that the service accepts. */ export enum KnownFeatureType { /** Invalid */ @@ -2882,6 +3006,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 +3144,49 @@ 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 { + /** OData filter options. */ + filter?: string; +} + +/** 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 JobsListOptionalParams 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..fd630e67f6a2 100644 --- a/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts +++ b/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts @@ -81,6 +81,17 @@ export const BackupVault: coreClient.CompositeMapper = { type: { name: "String" } + }, + replicatedRegions: { + serializedName: "replicatedRegions", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } } } } @@ -1172,7 +1183,6 @@ export const Datasource: coreClient.CompositeMapper = { }; export const BaseResourceProperties: coreClient.CompositeMapper = { - serializedName: "BaseResourceProperties", type: { name: "Composite", className: "BaseResourceProperties", @@ -1668,29 +1678,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 +1804,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 +1827,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 +1838,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" + } } } } @@ -2101,6 +2171,19 @@ export const JobExtendedInfo: coreClient.CompositeMapper = { name: "Composite", className: "RestoreJobRecoveryPointDetails" } + }, + warningDetails: { + serializedName: "warningDetails", + readOnly: true, + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "UserFacingWarningDetail" + } + } + } } } } @@ -2171,6 +2254,111 @@ export const JobSubTask: coreClient.CompositeMapper = { } }; +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: "Composite", + className: "AzureBackupRestoreRequest" + } + } + } + } +}; + export const AzureBackupFindRestorableTimeRangesRequest: coreClient.CompositeMapper = { type: { name: "Composite", @@ -3671,6 +3859,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: { @@ -3925,6 +4127,12 @@ export const AzureBackupDiscreteRecoveryPoint: coreClient.CompositeMapper = { type: { name: "DateTime" } + }, + recoveryPointState: { + serializedName: "recoveryPointState", + type: { + name: "String" + } } } } @@ -4819,6 +5027,60 @@ export const BackupInstancesValidateForBackupHeaders: coreClient.CompositeMapper } }; +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", @@ -5061,7 +5323,7 @@ export let discriminators = { FeatureValidationRequestBase: FeatureValidationRequestBase, FeatureValidationResponseBase: FeatureValidationResponseBase, BaseBackupPolicy: BaseBackupPolicy, - "BaseResourceProperties.BaseResourceProperties": BaseResourceProperties, + BaseResourceProperties: BaseResourceProperties, DataStoreParameters: DataStoreParameters, BackupDatasourceParameters: BackupDatasourceParameters, AuthCredentials: AuthCredentials, @@ -5079,6 +5341,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, diff --git a/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts b/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts index bd7a849ddf8f..edf571fb97e6 100644 --- a/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts +++ b/sdk/dataprotection/arm-dataprotection/src/models/parameters.ts @@ -20,10 +20,15 @@ import { BackupInstanceResource as BackupInstanceResourceMapper, TriggerBackupRequest as TriggerBackupRequestMapper, ValidateForBackupRequest as ValidateForBackupRequestMapper, + 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 +63,7 @@ export const $host: OperationURLParameter = { export const apiVersion: OperationQueryParameter = { parameterPath: "apiVersion", mapper: { - defaultValue: "2023-05-01", + defaultValue: "2023-11-01", isConstant: true, serializedName: "api-version", type: { @@ -214,20 +219,30 @@ export const parameters7: OperationParameter = { export const parameters8: OperationParameter = { parameterPath: "parameters", - mapper: AzureBackupRehydrationRequestMapper + mapper: CrossRegionRestoreRequestObjectMapper }; export const parameters9: OperationParameter = { parameterPath: "parameters", - mapper: AzureBackupRestoreRequestMapper + mapper: ValidateCrossRegionRestoreRequestObjectMapper }; export const parameters10: OperationParameter = { parameterPath: "parameters", - mapper: SyncBackupInstanceRequestMapper + mapper: AzureBackupRehydrationRequestMapper }; export const parameters11: OperationParameter = { + parameterPath: "parameters", + mapper: AzureBackupRestoreRequestMapper +}; + +export const parameters12: OperationParameter = { + parameterPath: "parameters", + mapper: SyncBackupInstanceRequestMapper +}; + +export const parameters13: OperationParameter = { parameterPath: "parameters", mapper: ValidateRestoreRequestObjectMapper }; @@ -263,6 +278,21 @@ export const recoveryPointId: OperationURLParameter = { } }; +export const parameters14: OperationParameter = { + parameterPath: "parameters", + mapper: FetchSecondaryRPsRequestParametersMapper +}; + +export const parameters15: OperationParameter = { + parameterPath: "parameters", + mapper: CrossRegionRestoreJobRequestMapper +}; + +export const parameters16: OperationParameter = { + parameterPath: "parameters", + mapper: CrossRegionRestoreJobsRequestMapper +}; + export const jobId: OperationURLParameter = { parameterPath: "jobId", mapper: { @@ -274,12 +304,12 @@ export const jobId: OperationURLParameter = { } }; -export const parameters12: OperationParameter = { +export const parameters17: OperationParameter = { parameterPath: "parameters", mapper: AzureBackupFindRestorableTimeRangesRequestMapper }; -export const parameters13: OperationParameter = { +export const parameters18: OperationParameter = { parameterPath: "parameters", mapper: ResourceGuardResourceMapper }; @@ -295,7 +325,7 @@ export const resourceGuardsName: OperationURLParameter = { } }; -export const parameters14: OperationParameter = { +export const parameters19: OperationParameter = { parameterPath: "parameters", mapper: PatchResourceGuardInputMapper }; @@ -325,12 +355,12 @@ export const resourceGuardProxyName: OperationURLParameter = { } }; -export const parameters15: OperationParameter = { +export const parameters20: OperationParameter = { parameterPath: "parameters", mapper: ResourceGuardProxyBaseResourceMapper }; -export const parameters16: OperationParameter = { +export const parameters21: 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..4ca336a00e33 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/backupInstances.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstances.ts @@ -37,6 +37,12 @@ import { BackupInstancesValidateForBackupResponse, BackupInstancesGetBackupInstanceOperationResultOptionalParams, BackupInstancesGetBackupInstanceOperationResultResponse, + CrossRegionRestoreRequestObject, + BackupInstancesTriggerCrossRegionRestoreOptionalParams, + BackupInstancesTriggerCrossRegionRestoreResponse, + ValidateCrossRegionRestoreRequestObject, + BackupInstancesValidateCrossRegionRestoreOptionalParams, + BackupInstancesValidateCrossRegionRestoreResponse, AzureBackupRehydrationRequest, BackupInstancesTriggerRehydrateOptionalParams, BackupInstancesTriggerRehydrateResponse, @@ -448,7 +454,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 +553,8 @@ export class BackupInstancesImpl implements BackupInstances { OperationState >(lro, { restoreFrom: options?.resumeFrom, - intervalInMs: options?.updateIntervalInMs + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -601,6 +609,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 +978,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 +1535,8 @@ export class BackupInstancesImpl implements BackupInstances { OperationState >(lro, { restoreFrom: options?.resumeFrom, - intervalInMs: options?.updateIntervalInMs + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" }); await poller.poll(); return poller; @@ -1586,6 +1784,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.parameters8, + 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.parameters9, + 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 +1871,7 @@ const triggerRehydrateOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters8, + requestBody: Parameters.parameters10, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1641,7 +1905,7 @@ const triggerRestoreOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters9, + requestBody: Parameters.parameters11, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1763,7 +2027,7 @@ const syncBackupInstanceOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters10, + requestBody: Parameters.parameters12, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1797,7 +2061,7 @@ const validateForRestoreOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters11, + requestBody: Parameters.parameters13, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, 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..5c30e55f1bbd --- /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.parameters15, + 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..fe473026077d --- /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.parameters16, + queryParameters: [Parameters.apiVersion, Parameters.filter], + 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..598348800225 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.parameters20, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -354,7 +354,7 @@ const unlockDeleteOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters16, + requestBody: Parameters.parameters21, 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..916e5d5f0ac8 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/index.ts @@ -17,6 +17,9 @@ export * from "./dataProtectionOperations"; export * from "./backupPolicies"; export * from "./backupInstances"; export * from "./recoveryPoints"; +export * from "./secondaryRPs"; +export * from "./crossRegionRestoreJob"; +export * from "./crossRegionRestoreJobs"; export * from "./jobs"; export * from "./restorableTimeRanges"; export * from "./exportJobs"; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts b/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts index 0080aa6f333e..b8c6ac5d5d3d 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.parameters18, queryParameters: [Parameters.apiVersion], urlParameters: [ Parameters.$host, @@ -1345,7 +1345,7 @@ const patchOperationSpec: coreClient.OperationSpec = { bodyMapper: Mappers.CloudError } }, - requestBody: Parameters.parameters14, + requestBody: Parameters.parameters19, 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..60a5d0e0eba0 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.parameters17, 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..8ef26ed24c37 --- /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.parameters14, + 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..f8df1ce4cd1e 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstances.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstances.ts @@ -24,6 +24,12 @@ import { BackupInstancesValidateForBackupResponse, BackupInstancesGetBackupInstanceOperationResultOptionalParams, BackupInstancesGetBackupInstanceOperationResultResponse, + CrossRegionRestoreRequestObject, + BackupInstancesTriggerCrossRegionRestoreOptionalParams, + BackupInstancesTriggerCrossRegionRestoreResponse, + ValidateCrossRegionRestoreRequestObject, + BackupInstancesValidateCrossRegionRestoreOptionalParams, + BackupInstancesValidateCrossRegionRestoreResponse, AzureBackupRehydrationRequest, BackupInstancesTriggerRehydrateOptionalParams, BackupInstancesTriggerRehydrateResponse, @@ -210,6 +216,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/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..916e5d5f0ac8 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts @@ -17,6 +17,9 @@ export * from "./dataProtectionOperations"; export * from "./backupPolicies"; export * from "./backupInstances"; export * from "./recoveryPoints"; +export * from "./secondaryRPs"; +export * from "./crossRegionRestoreJob"; +export * from "./crossRegionRestoreJobs"; export * from "./jobs"; export * from "./restorableTimeRanges"; export * from "./exportJobs"; 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"