diff --git a/sdk/dataprotection/arm-dataprotection/CHANGELOG.md b/sdk/dataprotection/arm-dataprotection/CHANGELOG.md index 2d485d62f048..196a22779e09 100644 --- a/sdk/dataprotection/arm-dataprotection/CHANGELOG.md +++ b/sdk/dataprotection/arm-dataprotection/CHANGELOG.md @@ -1,15 +1,70 @@ # Release History + +## 2.0.0-beta.1 (2023-08-28) + +**Features** -## 1.2.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed + - Added operation group BackupInstancesExtensionRouting + - Added operation group CrossRegionRestoreJob + - Added operation group CrossRegionRestoreJobs + - Added operation group SecondaryRPs + - Added operation BackupInstances.beginTriggerCrossRegionRestore + - Added operation BackupInstances.beginTriggerCrossRegionRestoreAndWait + - Added operation BackupInstances.beginValidateCrossRegionRestore + - Added operation BackupInstances.beginValidateCrossRegionRestoreAndWait + - Added operation Jobs.beginTriggerCancel + - Added operation Jobs.beginTriggerCancelAndWait + - Added operation Jobs.generateProgressUrl + - Added Interface AzureBackupJobProgressUrl + - Added Interface BackupInstancesExtensionRoutingListNextOptionalParams + - Added Interface BackupInstancesExtensionRoutingListOptionalParams + - Added Interface BackupInstancesTriggerCrossRegionRestoreHeaders + - Added Interface BackupInstancesTriggerCrossRegionRestoreOptionalParams + - Added Interface BackupInstancesValidateCrossRegionRestoreHeaders + - Added Interface BackupInstancesValidateCrossRegionRestoreOptionalParams + - Added Interface 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 JobsGenerateProgressUrlOptionalParams + - Added Interface JobsTriggerCancelHeaders + - Added Interface JobsTriggerCancelOptionalParams + - Added Interface SecondaryRPsFetchNextOptionalParams + - Added Interface SecondaryRPsFetchOptionalParams + - Added Interface UserAssignedIdentityDetails + - Added Interface UserFacingWarningDetail + - Added Interface ValidateCrossRegionRestoreRequestObject + - Added Type Alias BackupInstancesExtensionRoutingListNextResponse + - Added Type Alias BackupInstancesExtensionRoutingListResponse + - 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 JobsGenerateProgressUrlResponse + - Added Type Alias JobsTriggerCancelResponse + - Added Type Alias ResourcePropertiesObjectType + - Added Type Alias SecondaryRPsFetchNextResponse + - Added Type Alias SecondaryRPsFetchResponse + - Interface AzureBackupJob has a new optional parameter sourceDataStoreType + - Interface JobExtendedInfo has a new optional parameter warningDetails + - Interface KubernetesClusterRestoreCriteria has a new optional parameter stagingResourceGroupId + - Interface KubernetesClusterRestoreCriteria has a new optional parameter stagingStorageAccountId + - 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** diff --git a/sdk/dataprotection/arm-dataprotection/README.md b/sdk/dataprotection/arm-dataprotection/README.md index b96d59c2cadd..b8dfaf89280d 100644 --- a/sdk/dataprotection/arm-dataprotection/README.md +++ b/sdk/dataprotection/arm-dataprotection/README.md @@ -6,7 +6,7 @@ Open API 2.0 Specs for Azure Data Protection service [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/dataprotection/arm-dataprotection) | [Package (NPM)](https://www.npmjs.com/package/@azure/arm-dataprotection) | -[API reference documentation](https://docs.microsoft.com/javascript/api/@azure/arm-dataprotection) | +[API reference documentation](https://docs.microsoft.com/javascript/api/@azure/arm-dataprotection?view=azure-node-preview) | [Samples](https://github.com/Azure-Samples/azure-samples-js-management) ## Getting started diff --git a/sdk/dataprotection/arm-dataprotection/_meta.json b/sdk/dataprotection/arm-dataprotection/_meta.json index ecfdd4e96408..405f144561ae 100644 --- a/sdk/dataprotection/arm-dataprotection/_meta.json +++ b/sdk/dataprotection/arm-dataprotection/_meta.json @@ -1,8 +1,8 @@ { - "commit": "0f39a2d56070d2bc4251494525cb8af88583a938", + "commit": "959d6c1fcf6cb85dfe6ecfa9a692b4d715715f6f", "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.4", "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.4" } \ No newline at end of file diff --git a/sdk/dataprotection/arm-dataprotection/package.json b/sdk/dataprotection/arm-dataprotection/package.json index 40a7509f687b..ab40ae5290fe 100644 --- a/sdk/dataprotection/arm-dataprotection/package.json +++ b/sdk/dataprotection/arm-dataprotection/package.json @@ -3,17 +3,17 @@ "sdk-type": "mgmt", "author": "Microsoft Corporation", "description": "A generated SDK for DataProtectionClient.", - "version": "1.2.1", + "version": "2.0.0-beta.1", "engines": { "node": ">=14.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": [ @@ -48,8 +48,8 @@ "chai": "^4.2.0", "cross-env": "^7.0.2", "@types/node": "^14.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", @@ -112,13 +112,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..e24fe32826dd 100644 --- a/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md +++ b/sdk/dataprotection/arm-dataprotection/review/arm-dataprotection.api.md @@ -130,6 +130,7 @@ export interface AzureBackupJob { readonly restoreType?: string; // (undocumented) sourceDataStoreName?: string; + readonly sourceDataStoreType?: string; sourceResourceGroup: string; sourceSubscriptionID: string; startTime: Date; @@ -139,6 +140,11 @@ export interface AzureBackupJob { vaultName: string; } +// @public +export interface AzureBackupJobProgressUrl { + progressUrl?: string; +} + // @public export interface AzureBackupJobResource extends DppResource { properties?: AzureBackupJob; @@ -305,10 +311,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>>; @@ -362,6 +376,25 @@ export interface BackupInstancesDeleteOptionalParams extends coreClient.Operatio updateIntervalInMs?: number; } +// @public +export interface BackupInstancesExtensionRouting { + list(resourceId: string, options?: BackupInstancesExtensionRoutingListOptionalParams): PagedAsyncIterableIterator; +} + +// @public +export interface BackupInstancesExtensionRoutingListNextOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type BackupInstancesExtensionRoutingListNextResponse = BackupInstanceResourceList; + +// @public +export interface BackupInstancesExtensionRoutingListOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type BackupInstancesExtensionRoutingListResponse = BackupInstanceResourceList; + // @public export interface BackupInstancesGetBackupInstanceOperationResultOptionalParams extends coreClient.OperationOptions { } @@ -455,6 +488,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 +536,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; @@ -733,9 +798,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 +884,71 @@ export type CopyOptionUnion = CopyOption | CopyOnExpiryOption | CustomCopyOption // @public export type CreatedByType = string; +// @public +export interface CrossRegionRestoreDetails { + // (undocumented) + sourceBackupInstanceId: string; + // (undocumented) + sourceRegion: string; +} + +// @public +export interface CrossRegionRestoreJob { + // (undocumented) + get(resourceGroupName: string, location: string, parameters: CrossRegionRestoreJobRequest, options?: CrossRegionRestoreJobGetOptionalParams): Promise; +} + +// @public +export interface CrossRegionRestoreJobGetOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type CrossRegionRestoreJobGetResponse = AzureBackupJobResource; + +// @public (undocumented) +export interface CrossRegionRestoreJobRequest { + // (undocumented) + jobId: string; + // (undocumented) + sourceBackupVaultId: string; + // (undocumented) + sourceRegion: string; +} + +// @public +export interface CrossRegionRestoreJobs { + // (undocumented) + list(resourceGroupName: string, location: string, parameters: CrossRegionRestoreJobsRequest, options?: CrossRegionRestoreJobsListOptionalParams): PagedAsyncIterableIterator; +} + +// @public +export interface CrossRegionRestoreJobsListNextOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type CrossRegionRestoreJobsListNextResponse = AzureBackupJobResourceList; + +// @public +export interface CrossRegionRestoreJobsListOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type CrossRegionRestoreJobsListResponse = AzureBackupJobResourceList; + +// @public (undocumented) +export interface CrossRegionRestoreJobsRequest { + // (undocumented) + sourceBackupVaultId: string; + // (undocumented) + sourceRegion: string; +} + +// @public +export interface CrossRegionRestoreRequestObject { + crossRegionRestoreDetails: CrossRegionRestoreDetails; + restoreRequestObject: AzureBackupRestoreRequestUnion; +} + // @public (undocumented) export interface CrossRegionRestoreSettings { state?: CrossRegionRestoreState; @@ -864,12 +997,18 @@ export class DataProtectionClient extends coreClient.ServiceClient { // (undocumented) backupInstances: BackupInstances; // (undocumented) + backupInstancesExtensionRouting: BackupInstancesExtensionRouting; + // (undocumented) backupPolicies: BackupPolicies; // (undocumented) backupVaultOperationResults: BackupVaultOperationResults; // (undocumented) backupVaults: BackupVaults; // (undocumented) + crossRegionRestoreJob: CrossRegionRestoreJob; + // (undocumented) + crossRegionRestoreJobs: CrossRegionRestoreJobs; + // (undocumented) dataProtection: DataProtection; // (undocumented) dataProtectionOperations: DataProtectionOperations; @@ -898,6 +1037,8 @@ export class DataProtectionClient extends coreClient.ServiceClient { // (undocumented) restorableTimeRanges: RestorableTimeRanges; // (undocumented) + secondaryRPs: SecondaryRPs; + // (undocumented) subscriptionId?: string; } @@ -934,7 +1075,7 @@ export interface Datasource { resourceID: string; resourceLocation?: string; resourceName?: string; - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; resourceType?: string; resourceUri?: string; } @@ -946,7 +1087,7 @@ export interface DatasourceSet { resourceID: string; resourceLocation?: string; resourceName?: string; - resourceProperties?: BaseResourceProperties; + resourceProperties?: BaseResourcePropertiesUnion; resourceType?: string; resourceUri?: string; } @@ -978,6 +1119,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 +1433,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,14 +1506,25 @@ export interface JobExtendedInfo { readonly sourceRecoverPoint?: RestoreJobRecoveryPointDetails; readonly subTasks?: JobSubTask[]; readonly targetRecoverPoint?: RestoreJobRecoveryPointDetails; + readonly warningDetails?: UserFacingWarningDetail[]; } // @public export interface Jobs { + beginTriggerCancel(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsTriggerCancelOptionalParams): Promise, JobsTriggerCancelResponse>>; + beginTriggerCancelAndWait(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsTriggerCancelOptionalParams): Promise; + generateProgressUrl(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsGenerateProgressUrlOptionalParams): Promise; get(resourceGroupName: string, vaultName: string, jobId: string, options?: JobsGetOptionalParams): Promise; list(resourceGroupName: string, vaultName: string, options?: JobsListOptionalParams): PagedAsyncIterableIterator; } +// @public +export interface JobsGenerateProgressUrlOptionalParams extends coreClient.OperationOptions { +} + +// @public +export type JobsGenerateProgressUrlResponse = AzureBackupJobProgressUrl; + // @public export interface JobsGetOptionalParams extends coreClient.OperationOptions { } @@ -1383,6 +1546,21 @@ export interface JobsListOptionalParams extends coreClient.OperationOptions { // @public export type JobsListResponse = AzureBackupJobResourceList; +// @public +export interface JobsTriggerCancelHeaders { + location?: string; + retryAfter?: number; +} + +// @public +export interface JobsTriggerCancelOptionalParams extends coreClient.OperationOptions { + resumeFrom?: string; + updateIntervalInMs?: number; +} + +// @public +export type JobsTriggerCancelResponse = JobsTriggerCancelHeaders; + // @public export interface JobSubTask { additionalDetails?: { @@ -1559,6 +1737,11 @@ export enum KnownResourceMoveState { Unknown = "Unknown" } +// @public +export enum KnownResourcePropertiesObjectType { + DefaultResourceProperties = "DefaultResourceProperties" +} + // @public export enum KnownRestoreSourceDataStoreType { ArchiveStore = "ArchiveStore", @@ -1676,6 +1859,8 @@ export interface KubernetesClusterRestoreCriteria extends ItemLevelRestoreCriter objectType: "KubernetesClusterRestoreCriteria"; persistentVolumeRestoreMode?: PersistentVolumeRestoreMode; restoreHookReferences?: NamespacedNameResource[]; + stagingResourceGroupId?: string; + stagingStorageAccountId?: string; } // @public @@ -2185,6 +2370,9 @@ export interface ResourceMoveDetails { // @public export type ResourceMoveState = string; +// @public +export type ResourcePropertiesObjectType = string; + // @public (undocumented) export interface RestorableTimeRange { endTime: string; @@ -2269,6 +2457,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"; @@ -2408,6 +2617,12 @@ export interface UserAssignedIdentity { readonly principalId?: string; } +// @public +export interface UserAssignedIdentityDetails { + readonly clientId?: string; + readonly principalId?: string; +} + // @public export interface UserFacingError { code?: string; @@ -2424,6 +2639,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/src/dataProtectionClient.ts b/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts index ce0888aa2f64..f110f65e1fd0 100644 --- a/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts +++ b/sdk/dataprotection/arm-dataprotection/src/dataProtectionClient.ts @@ -26,6 +26,10 @@ import { BackupPoliciesImpl, BackupInstancesImpl, RecoveryPointsImpl, + SecondaryRPsImpl, + CrossRegionRestoreJobImpl, + CrossRegionRestoreJobsImpl, + BackupInstancesExtensionRoutingImpl, JobsImpl, RestorableTimeRangesImpl, ExportJobsImpl, @@ -46,6 +50,10 @@ import { BackupPolicies, BackupInstances, RecoveryPoints, + SecondaryRPs, + CrossRegionRestoreJob, + CrossRegionRestoreJobs, + BackupInstancesExtensionRouting, Jobs, RestorableTimeRanges, ExportJobs, @@ -102,7 +110,7 @@ export class DataProtectionClient extends coreClient.ServiceClient { credential: credentials }; - const packageDetails = `azsdk-js-arm-dataprotection/1.2.1`; + const packageDetails = `azsdk-js-arm-dataprotection/2.0.0-beta.1`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}` @@ -155,7 +163,7 @@ export class DataProtectionClient extends coreClient.ServiceClient { // Assigning values to Constant parameters this.$host = options.$host || "https://management.azure.com"; - this.apiVersion = options.apiVersion || "2023-05-01"; + this.apiVersion = options.apiVersion || "2023-06-01-preview"; this.backupVaults = new BackupVaultsImpl(this); this.operationResult = new OperationResultImpl(this); this.operationStatus = new OperationStatusImpl(this); @@ -173,6 +181,12 @@ export class DataProtectionClient extends coreClient.ServiceClient { this.backupPolicies = new BackupPoliciesImpl(this); this.backupInstances = new BackupInstancesImpl(this); this.recoveryPoints = new RecoveryPointsImpl(this); + this.secondaryRPs = new SecondaryRPsImpl(this); + this.crossRegionRestoreJob = new CrossRegionRestoreJobImpl(this); + this.crossRegionRestoreJobs = new CrossRegionRestoreJobsImpl(this); + this.backupInstancesExtensionRouting = new BackupInstancesExtensionRoutingImpl( + this + ); this.jobs = new JobsImpl(this); this.restorableTimeRanges = new RestorableTimeRangesImpl(this); this.exportJobs = new ExportJobsImpl(this); @@ -222,6 +236,10 @@ export class DataProtectionClient extends coreClient.ServiceClient { backupPolicies: BackupPolicies; backupInstances: BackupInstances; recoveryPoints: RecoveryPoints; + secondaryRPs: SecondaryRPs; + crossRegionRestoreJob: CrossRegionRestoreJob; + crossRegionRestoreJobs: CrossRegionRestoreJobs; + backupInstancesExtensionRouting: BackupInstancesExtensionRouting; jobs: Jobs; restorableTimeRanges: RestorableTimeRanges; exportJobs: ExportJobs; diff --git a/sdk/dataprotection/arm-dataprotection/src/models/index.ts b/sdk/dataprotection/arm-dataprotection/src/models/index.ts index 9a79488b2a2e..225ffa2b7078 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; @@ -532,13 +535,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 +561,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 +704,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 +757,24 @@ export interface RestoreTargetInfoBase { restoreLocation?: string; } -/** Sync BackupInstance Request */ -export interface SyncBackupInstanceRequest { - /** Field indicating sync type e.g. to sync only in case of failure or in all cases */ - syncType?: SyncType; +/** Cross Region Restore details */ +export interface CrossRegionRestoreDetails { + sourceRegion: string; + sourceBackupInstanceId: string; } -/** Validate restore request object */ -export interface ValidateRestoreRequestObject { +/** Cross Region Restore Request Object */ +export interface ValidateCrossRegionRestoreRequestObject { /** Gets or sets the restore request object. */ restoreRequestObject: AzureBackupRestoreRequestUnion; + /** Cross region restore details. */ + crossRegionRestoreDetails: CrossRegionRestoreDetails; +} + +export interface CrossRegionRestoreJobRequest { + sourceRegion: string; + sourceBackupVaultId: string; + jobId: string; } /** AzureBackup Job Class */ @@ -827,6 +848,11 @@ export interface AzureBackupJob { * NOTE: This property will not be serialized. It can only be populated by the server. */ readonly restoreType?: string; + /** + * The type of the source data store. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly sourceDataStoreType?: string; /** Resource Group Name of the Datasource */ sourceResourceGroup: string; /** SubscriptionId corresponding to the DataSource */ @@ -880,6 +906,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 +935,41 @@ export interface JobSubTask { taskStatus: string; } +/** Warning object used by layers that have access to localized content, and propagate that to user */ +export interface UserFacingWarningDetail { + /** Name of resource for which warning is raised. */ + resourceName?: string; + /** Error details for the warning. */ + warning: UserFacingError; +} + +export interface CrossRegionRestoreJobsRequest { + sourceRegion: string; + sourceBackupVaultId: string; +} + +/** Azure Backup Rehydrate Request */ +export interface AzureBackupRehydrationRequest { + /** Id of the recovery point to be recovered */ + recoveryPointId: string; + /** Priority to be used for rehydration. Values High or Standard */ + rehydrationPriority?: RehydrationPriority; + /** Retention duration in ISO 8601 format i.e P10D . */ + rehydrationRetentionDuration: string; +} + +/** Sync BackupInstance Request */ +export interface SyncBackupInstanceRequest { + /** Field indicating sync type e.g. to sync only in case of failure or in all cases */ + syncType?: SyncType; +} + +/** Validate restore request object */ +export interface ValidateRestoreRequestObject { + /** Gets or sets the restore request object. */ + restoreRequestObject: AzureBackupRestoreRequestUnion; +} + /** List Restore Ranges Request */ export interface AzureBackupFindRestorableTimeRangesRequest { /** Gets or sets the type of the source data store. */ @@ -929,6 +995,12 @@ export interface RestorableTimeRange { objectType?: string; } +/** Job Progress URL class. */ +export interface AzureBackupJobProgressUrl { + /** Read SAS URI for a blob from which current job progress can be read. */ + progressUrl?: string; +} + /** The result for export jobs containing blob details. */ export interface ExportJobsResult { /** @@ -1226,6 +1298,20 @@ export interface Day { isLast?: boolean; } +/** User Assigned Identity Details */ +export interface UserAssignedIdentityDetails { + /** + * The Client Id of the User Assigned Managed Identity. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly clientId?: string; + /** + * The Object Id of the User Assigned Managed Identity. + * NOTE: This property will not be serialized. It can only be populated by the server. + */ + readonly principalId?: string; +} + /** Elements class for feature request */ export interface SupportedFeature { /** support feature type. */ @@ -1426,6 +1512,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 */ @@ -1726,6 +1818,10 @@ export interface KubernetesClusterRestoreCriteria namespaceMappings?: { [propertyName: string]: string }; /** Gets or sets the restore hook references. This property sets the hook reference to be executed during restore. */ restoreHookReferences?: NamespacedNameResource[]; + /** Gets or sets the staging RG Id for creating staging disks and snapshots during restore. */ + stagingResourceGroupId?: string; + /** Gets or sets the staging Storage Account Id for creating backup object store data during restore. */ + stagingStorageAccountId?: string; } /** Backup Vault Resource */ @@ -1803,6 +1899,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. */ @@ -1883,6 +1999,14 @@ export interface BackupInstancesValidateForRestoreHeaders { retryAfter?: number; } +/** Defines headers for Jobs_triggerCancel operation. */ +export interface JobsTriggerCancelHeaders { + /** The URL of the resource used to check the status of the asynchronous operation. */ + location?: string; + /** Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. */ + retryAfter?: number; +} + /** Defines headers for ExportJobs_trigger operation. */ export interface ExportJobsTriggerHeaders { /** The URL of the resource used to check the status of the asynchronous operation. */ @@ -2152,6 +2276,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 +2408,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 +2447,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 */ @@ -2882,6 +3021,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 +3159,60 @@ export interface RecoveryPointsListNextOptionalParams /** Contains response data for the listNext operation. */ export type RecoveryPointsListNextResponse = AzureBackupRecoveryPointResourceList; +/** Optional parameters. */ +export interface SecondaryRPsFetchOptionalParams + extends coreClient.OperationOptions { + /** OData filter options. */ + filter?: string; + /** skipToken Filter. */ + skipToken?: string; +} + +/** Contains response data for the fetch operation. */ +export type SecondaryRPsFetchResponse = AzureBackupRecoveryPointResourceList; + +/** Optional parameters. */ +export interface SecondaryRPsFetchNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the fetchNext operation. */ +export type SecondaryRPsFetchNextResponse = AzureBackupRecoveryPointResourceList; + +/** Optional parameters. */ +export interface CrossRegionRestoreJobGetOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the get operation. */ +export type CrossRegionRestoreJobGetResponse = AzureBackupJobResource; + +/** Optional parameters. */ +export interface CrossRegionRestoreJobsListOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the list operation. */ +export type CrossRegionRestoreJobsListResponse = AzureBackupJobResourceList; + +/** Optional parameters. */ +export interface CrossRegionRestoreJobsListNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the listNext operation. */ +export type CrossRegionRestoreJobsListNextResponse = AzureBackupJobResourceList; + +/** Optional parameters. */ +export interface BackupInstancesExtensionRoutingListOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the list operation. */ +export type BackupInstancesExtensionRoutingListResponse = BackupInstanceResourceList; + +/** Optional parameters. */ +export interface BackupInstancesExtensionRoutingListNextOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the listNext operation. */ +export type BackupInstancesExtensionRoutingListNextResponse = BackupInstanceResourceList; + /** Optional parameters. */ export interface JobsListOptionalParams extends coreClient.OperationOptions {} @@ -3008,6 +3225,25 @@ export interface JobsGetOptionalParams extends coreClient.OperationOptions {} /** Contains response data for the get operation. */ export type JobsGetResponse = AzureBackupJobResource; +/** Optional parameters. */ +export interface JobsTriggerCancelOptionalParams + extends coreClient.OperationOptions { + /** Delay to wait until next poll, in milliseconds. */ + updateIntervalInMs?: number; + /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */ + resumeFrom?: string; +} + +/** Contains response data for the triggerCancel operation. */ +export type JobsTriggerCancelResponse = JobsTriggerCancelHeaders; + +/** Optional parameters. */ +export interface JobsGenerateProgressUrlOptionalParams + extends coreClient.OperationOptions {} + +/** Contains response data for the generateProgressUrl operation. */ +export type JobsGenerateProgressUrlResponse = AzureBackupJobProgressUrl; + /** Optional parameters. */ export interface JobsListNextOptionalParams extends coreClient.OperationOptions {} diff --git a/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts b/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts index 81a32fbef7e3..d2bfef6d0a77 100644 --- a/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts +++ b/sdk/dataprotection/arm-dataprotection/src/models/mappers.ts @@ -1172,7 +1172,6 @@ export const Datasource: coreClient.CompositeMapper = { }; export const BaseResourceProperties: coreClient.CompositeMapper = { - serializedName: "BaseResourceProperties", type: { name: "Composite", className: "BaseResourceProperties", @@ -1668,29 +1667,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 +1793,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 +1816,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 +1827,43 @@ export const ValidateRestoreRequestObject: coreClient.CompositeMapper = { name: "Composite", className: "AzureBackupRestoreRequest" } + }, + crossRegionRestoreDetails: { + serializedName: "crossRegionRestoreDetails", + type: { + name: "Composite", + className: "CrossRegionRestoreDetails" + } + } + } + } +}; + +export const CrossRegionRestoreJobRequest: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "CrossRegionRestoreJobRequest", + modelProperties: { + sourceRegion: { + serializedName: "sourceRegion", + required: true, + type: { + name: "String" + } + }, + sourceBackupVaultId: { + serializedName: "sourceBackupVaultId", + required: true, + type: { + name: "String" + } + }, + jobId: { + serializedName: "jobId", + required: true, + type: { + name: "String" + } } } } @@ -1966,6 +2025,13 @@ export const AzureBackupJob: coreClient.CompositeMapper = { name: "String" } }, + sourceDataStoreType: { + serializedName: "sourceDataStoreType", + readOnly: true, + type: { + name: "String" + } + }, sourceResourceGroup: { serializedName: "sourceResourceGroup", required: true, @@ -2101,6 +2167,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 +2250,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", @@ -2255,6 +2439,21 @@ export const RestorableTimeRange: coreClient.CompositeMapper = { } }; +export const AzureBackupJobProgressUrl: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "AzureBackupJobProgressUrl", + modelProperties: { + progressUrl: { + serializedName: "progressUrl", + type: { + name: "String" + } + } + } + } +}; + export const ExportJobsResult: coreClient.CompositeMapper = { type: { name: "Composite", @@ -3101,6 +3300,29 @@ export const Day: coreClient.CompositeMapper = { } }; +export const UserAssignedIdentityDetails: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "UserAssignedIdentityDetails", + modelProperties: { + clientId: { + serializedName: "clientId", + readOnly: true, + type: { + name: "String" + } + }, + principalId: { + serializedName: "principalId", + readOnly: true, + type: { + name: "String" + } + } + } + } +}; + export const SupportedFeature: coreClient.CompositeMapper = { type: { name: "Composite", @@ -3671,6 +3893,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: { @@ -4613,6 +4849,18 @@ export const KubernetesClusterRestoreCriteria: coreClient.CompositeMapper = { } } } + }, + stagingResourceGroupId: { + serializedName: "stagingResourceGroupId", + type: { + name: "String" + } + }, + stagingStorageAccountId: { + serializedName: "stagingStorageAccountId", + type: { + name: "String" + } } } } @@ -4819,6 +5067,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", @@ -5035,6 +5337,27 @@ export const BackupInstancesValidateForRestoreHeaders: coreClient.CompositeMappe } }; +export const JobsTriggerCancelHeaders: coreClient.CompositeMapper = { + type: { + name: "Composite", + className: "JobsTriggerCancelHeaders", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + }, + retryAfter: { + serializedName: "retry-after", + type: { + name: "Number" + } + } + } + } +}; + export const ExportJobsTriggerHeaders: coreClient.CompositeMapper = { type: { name: "Composite", @@ -5061,7 +5384,7 @@ export let discriminators = { FeatureValidationRequestBase: FeatureValidationRequestBase, FeatureValidationResponseBase: FeatureValidationResponseBase, BaseBackupPolicy: BaseBackupPolicy, - "BaseResourceProperties.BaseResourceProperties": BaseResourceProperties, + BaseResourceProperties: BaseResourceProperties, DataStoreParameters: DataStoreParameters, BackupDatasourceParameters: BackupDatasourceParameters, AuthCredentials: AuthCredentials, @@ -5079,6 +5402,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..4951c123b9ab 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-06-01-preview", 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,33 @@ 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 resourceId: OperationURLParameter = { + parameterPath: "resourceId", + mapper: { + serializedName: "resourceId", + required: true, + type: { + name: "String" + } + }, + skipEncoding: true +}; + export const jobId: OperationURLParameter = { parameterPath: "jobId", mapper: { @@ -274,12 +316,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 +337,7 @@ export const resourceGuardsName: OperationURLParameter = { } }; -export const parameters14: OperationParameter = { +export const parameters19: OperationParameter = { parameterPath: "parameters", mapper: PatchResourceGuardInputMapper }; @@ -325,12 +367,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/backupInstancesExtensionRouting.ts b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstancesExtensionRouting.ts new file mode 100644 index 000000000000..9d356a75d410 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operations/backupInstancesExtensionRouting.ts @@ -0,0 +1,161 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { PagedAsyncIterableIterator, PageSettings } from "@azure/core-paging"; +import { setContinuationToken } from "../pagingHelper"; +import { BackupInstancesExtensionRouting } from "../operationsInterfaces"; +import * as coreClient from "@azure/core-client"; +import * as Mappers from "../models/mappers"; +import * as Parameters from "../models/parameters"; +import { DataProtectionClient } from "../dataProtectionClient"; +import { + BackupInstanceResource, + BackupInstancesExtensionRoutingListNextOptionalParams, + BackupInstancesExtensionRoutingListOptionalParams, + BackupInstancesExtensionRoutingListResponse, + BackupInstancesExtensionRoutingListNextResponse +} from "../models"; + +/// +/** Class containing BackupInstancesExtensionRouting operations. */ +export class BackupInstancesExtensionRoutingImpl + implements BackupInstancesExtensionRouting { + private readonly client: DataProtectionClient; + + /** + * Initialize a new instance of the class BackupInstancesExtensionRouting class. + * @param client Reference to the service client + */ + constructor(client: DataProtectionClient) { + this.client = client; + } + + /** + * Gets a list of backup instances associated with a tracked resource + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param options The options parameters. + */ + public list( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): PagedAsyncIterableIterator { + const iter = this.listPagingAll(resourceId, options); + return { + next() { + return iter.next(); + }, + [Symbol.asyncIterator]() { + return this; + }, + byPage: (settings?: PageSettings) => { + if (settings?.maxPageSize) { + throw new Error("maxPageSize is not supported by this operation."); + } + return this.listPagingPage(resourceId, options, settings); + } + }; + } + + private async *listPagingPage( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams, + settings?: PageSettings + ): AsyncIterableIterator { + let result: BackupInstancesExtensionRoutingListResponse; + let continuationToken = settings?.continuationToken; + if (!continuationToken) { + result = await this._list(resourceId, options); + let page = result.value || []; + continuationToken = result.nextLink; + setContinuationToken(page, continuationToken); + yield page; + } + while (continuationToken) { + result = await this._listNext(resourceId, continuationToken, options); + continuationToken = result.nextLink; + let page = result.value || []; + setContinuationToken(page, continuationToken); + yield page; + } + } + + private async *listPagingAll( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): AsyncIterableIterator { + for await (const page of this.listPagingPage(resourceId, options)) { + yield* page; + } + } + + /** + * Gets a list of backup instances associated with a tracked resource + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param options The options parameters. + */ + private _list( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceId, options }, + listOperationSpec + ); + } + + /** + * ListNext + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param nextLink The nextLink from the previous successful call to the List method. + * @param options The options parameters. + */ + private _listNext( + resourceId: string, + nextLink: string, + options?: BackupInstancesExtensionRoutingListNextOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceId, nextLink, options }, + listNextOperationSpec + ); + } +} +// Operation Specifications +const serializer = coreClient.createSerializer(Mappers, /* isXml */ false); + +const listOperationSpec: coreClient.OperationSpec = { + path: "/{resourceId}/providers/Microsoft.DataProtection/backupInstances", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.BackupInstanceResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [Parameters.$host, Parameters.resourceId], + headerParameters: [Parameters.accept], + serializer +}; +const listNextOperationSpec: coreClient.OperationSpec = { + path: "{nextLink}", + httpMethod: "GET", + responses: { + 200: { + bodyMapper: Mappers.BackupInstanceResourceList + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + urlParameters: [Parameters.$host, Parameters.nextLink, Parameters.resourceId], + headerParameters: [Parameters.accept], + serializer +}; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJob.ts b/sdk/dataprotection/arm-dataprotection/src/operations/crossRegionRestoreJob.ts new file mode 100644 index 000000000000..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..85f6c7fbf77a --- /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], + 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..1dc720416e8f 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/index.ts @@ -17,6 +17,10 @@ export * from "./dataProtectionOperations"; export * from "./backupPolicies"; export * from "./backupInstances"; export * from "./recoveryPoints"; +export * from "./secondaryRPs"; +export * from "./crossRegionRestoreJob"; +export * from "./crossRegionRestoreJobs"; +export * from "./backupInstancesExtensionRouting"; export * from "./jobs"; export * from "./restorableTimeRanges"; export * from "./exportJobs"; diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts b/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts index bb7261d83513..6cefa5518e71 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operations/jobs.ts @@ -13,6 +13,12 @@ import * as coreClient from "@azure/core-client"; import * as Mappers from "../models/mappers"; import * as Parameters from "../models/parameters"; import { DataProtectionClient } from "../dataProtectionClient"; +import { + SimplePollerLike, + OperationState, + createHttpPoller +} from "@azure/core-lro"; +import { createLroSpec } from "../lroImpl"; import { AzureBackupJobResource, JobsListNextOptionalParams, @@ -20,6 +26,10 @@ import { JobsListResponse, JobsGetOptionalParams, JobsGetResponse, + JobsTriggerCancelOptionalParams, + JobsTriggerCancelResponse, + JobsGenerateProgressUrlOptionalParams, + JobsGenerateProgressUrlResponse, JobsListNextResponse } from "../models"; @@ -149,6 +159,124 @@ export class JobsImpl implements Jobs { ); } + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + async beginTriggerCancel( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + JobsTriggerCancelResponse + > + > { + const directSendOperation = async ( + args: coreClient.OperationArguments, + spec: coreClient.OperationSpec + ): Promise => { + return this.client.sendOperationRequest(args, spec); + }; + const sendOperationFn = async ( + args: coreClient.OperationArguments, + spec: coreClient.OperationSpec + ) => { + let currentRawResponse: + | coreClient.FullOperationResponse + | undefined = undefined; + const providedCallback = args.options?.onResponse; + const callback: coreClient.RawResponseCallback = ( + rawResponse: coreClient.FullOperationResponse, + flatResponse: unknown + ) => { + currentRawResponse = rawResponse; + providedCallback?.(rawResponse, flatResponse); + }; + const updatedArgs = { + ...args, + options: { + ...args.options, + onResponse: callback + } + }; + const flatResponse = await directSendOperation(updatedArgs, spec); + return { + flatResponse, + rawResponse: { + statusCode: currentRawResponse!.status, + body: currentRawResponse!.parsedBody, + headers: currentRawResponse!.headers.toJSON() + } + }; + }; + + const lro = createLroSpec({ + sendOperationFn, + args: { resourceGroupName, vaultName, jobId, options }, + spec: triggerCancelOperationSpec + }); + const poller = await createHttpPoller< + JobsTriggerCancelResponse, + OperationState + >(lro, { + restoreFrom: options?.resumeFrom, + intervalInMs: options?.updateIntervalInMs, + resourceLocationConfig: "location" + }); + await poller.poll(); + return poller; + } + + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + async beginTriggerCancelAndWait( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise { + const poller = await this.beginTriggerCancel( + resourceGroupName, + vaultName, + jobId, + options + ); + return poller.pollUntilDone(); + } + + /** + * Generates read SAS URL for a blob from which current job progress can be read. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + generateProgressUrl( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsGenerateProgressUrlOptionalParams + ): Promise { + return this.client.sendOperationRequest( + { resourceGroupName, vaultName, jobId, options }, + generateProgressUrlOperationSpec + ); + } + /** * ListNext * @param resourceGroupName The name of the resource group. The name is case insensitive. @@ -216,6 +344,61 @@ const getOperationSpec: coreClient.OperationSpec = { headerParameters: [Parameters.accept], serializer }; +const triggerCancelOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}/triggerCancel", + httpMethod: "POST", + responses: { + 200: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + 201: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + 202: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + 204: { + headersMapper: Mappers.JobsTriggerCancelHeaders + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.vaultName, + Parameters.jobId + ], + headerParameters: [Parameters.accept], + serializer +}; +const generateProgressUrlOperationSpec: coreClient.OperationSpec = { + path: + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}/generateProgressUrl", + httpMethod: "POST", + responses: { + 200: { + bodyMapper: Mappers.AzureBackupJobProgressUrl + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + queryParameters: [Parameters.apiVersion], + urlParameters: [ + Parameters.$host, + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.vaultName, + Parameters.jobId + ], + headerParameters: [Parameters.accept], + serializer +}; const listNextOperationSpec: coreClient.OperationSpec = { path: "{nextLink}", httpMethod: "GET", diff --git a/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts b/sdk/dataprotection/arm-dataprotection/src/operations/resourceGuards.ts index 0080aa6f333e..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/backupInstancesExtensionRouting.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstancesExtensionRouting.ts new file mode 100644 index 000000000000..f70b3d32f1fa --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/backupInstancesExtensionRouting.ts @@ -0,0 +1,27 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { PagedAsyncIterableIterator } from "@azure/core-paging"; +import { + BackupInstanceResource, + BackupInstancesExtensionRoutingListOptionalParams +} from "../models"; + +/// +/** Interface representing a BackupInstancesExtensionRouting. */ +export interface BackupInstancesExtensionRouting { + /** + * Gets a list of backup instances associated with a tracked resource + * @param resourceId ARM path of the resource to be protected using Microsoft.DataProtection + * @param options The options parameters. + */ + list( + resourceId: string, + options?: BackupInstancesExtensionRoutingListOptionalParams + ): PagedAsyncIterableIterator; +} diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts new file mode 100644 index 000000000000..63b41de7ab47 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJob.ts @@ -0,0 +1,29 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { + CrossRegionRestoreJobRequest, + CrossRegionRestoreJobGetOptionalParams, + CrossRegionRestoreJobGetResponse +} from "../models"; + +/** Interface representing a CrossRegionRestoreJob. */ +export interface CrossRegionRestoreJob { + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + get( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobRequest, + options?: CrossRegionRestoreJobGetOptionalParams + ): Promise; +} diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts new file mode 100644 index 000000000000..e77cfbe3c8df --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/crossRegionRestoreJobs.ts @@ -0,0 +1,31 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { PagedAsyncIterableIterator } from "@azure/core-paging"; +import { + AzureBackupJobResource, + CrossRegionRestoreJobsRequest, + CrossRegionRestoreJobsListOptionalParams +} from "../models"; + +/// +/** Interface representing a CrossRegionRestoreJobs. */ +export interface CrossRegionRestoreJobs { + /** + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + list( + resourceGroupName: string, + location: string, + parameters: CrossRegionRestoreJobsRequest, + options?: CrossRegionRestoreJobsListOptionalParams + ): PagedAsyncIterableIterator; +} diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts index 7ec031af6618..1dc720416e8f 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/index.ts @@ -17,6 +17,10 @@ export * from "./dataProtectionOperations"; export * from "./backupPolicies"; export * from "./backupInstances"; export * from "./recoveryPoints"; +export * from "./secondaryRPs"; +export * from "./crossRegionRestoreJob"; +export * from "./crossRegionRestoreJobs"; +export * from "./backupInstancesExtensionRouting"; export * from "./jobs"; export * from "./restorableTimeRanges"; export * from "./exportJobs"; diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts index a181f6a84fe3..31279ee5455b 100644 --- a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/jobs.ts @@ -7,11 +7,16 @@ */ import { PagedAsyncIterableIterator } from "@azure/core-paging"; +import { SimplePollerLike, OperationState } from "@azure/core-lro"; import { AzureBackupJobResource, JobsListOptionalParams, JobsGetOptionalParams, - JobsGetResponse + JobsGetResponse, + JobsTriggerCancelOptionalParams, + JobsTriggerCancelResponse, + JobsGenerateProgressUrlOptionalParams, + JobsGenerateProgressUrlResponse } from "../models"; /// @@ -42,4 +47,51 @@ export interface Jobs { jobId: string, options?: JobsGetOptionalParams ): Promise; + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + beginTriggerCancel( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise< + SimplePollerLike< + OperationState, + JobsTriggerCancelResponse + > + >; + /** + * Triggers cancellation of Job and returns an OperationID to track. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + beginTriggerCancelAndWait( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsTriggerCancelOptionalParams + ): Promise; + /** + * Generates read SAS URL for a blob from which current job progress can be read. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param vaultName The name of the backup vault. + * @param jobId The Job ID. This is a GUID-formatted string (e.g. + * 00000000-0000-0000-0000-000000000000). + * @param options The options parameters. + */ + generateProgressUrl( + resourceGroupName: string, + vaultName: string, + jobId: string, + options?: JobsGenerateProgressUrlOptionalParams + ): Promise; } diff --git a/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts new file mode 100644 index 000000000000..469a0a4d30d3 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/src/operationsInterfaces/secondaryRPs.ts @@ -0,0 +1,33 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { PagedAsyncIterableIterator } from "@azure/core-paging"; +import { + AzureBackupRecoveryPointResource, + FetchSecondaryRPsRequestParameters, + SecondaryRPsFetchOptionalParams +} from "../models"; + +/// +/** Interface representing a SecondaryRPs. */ +export interface SecondaryRPs { + /** + * Returns a list of Secondary Recovery Points for a DataSource in a vault, that can be used for Cross + * Region Restore. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location + * @param parameters Request body for operation + * @param options The options parameters. + */ + listFetch( + resourceGroupName: string, + location: string, + parameters: FetchSecondaryRPsRequestParameters, + options?: SecondaryRPsFetchOptionalParams + ): PagedAsyncIterableIterator; +} diff --git a/sdk/dataprotection/arm-dataprotection/test/sampleTest.ts b/sdk/dataprotection/arm-dataprotection/test/sampleTest.ts new file mode 100644 index 000000000000..25aeb3ebcc36 --- /dev/null +++ b/sdk/dataprotection/arm-dataprotection/test/sampleTest.ts @@ -0,0 +1,43 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +import { + Recorder, + RecorderStartOptions, + env +} from "@azure-tools/test-recorder"; +import { assert } from "chai"; +import { Context } from "mocha"; + +const replaceableVariables: Record = { + AZURE_CLIENT_ID: "azure_client_id", + AZURE_CLIENT_SECRET: "azure_client_secret", + AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888", + SUBSCRIPTION_ID: "azure_subscription_id" +}; + +const recorderOptions: RecorderStartOptions = { + envSetupForPlayback: replaceableVariables +}; + +describe("My test", () => { + let recorder: Recorder; + + beforeEach(async function(this: Context) { + recorder = new Recorder(this.currentTest); + await recorder.start(recorderOptions); + }); + + afterEach(async function() { + await recorder.stop(); + }); + + it("sample test", async function() { + console.log("Hi, I'm a test!"); + }); +}); diff --git a/sdk/dataprotection/arm-dataprotection/tsconfig.json b/sdk/dataprotection/arm-dataprotection/tsconfig.json index 1f65f09046a1..3e6ae96443f3 100644 --- a/sdk/dataprotection/arm-dataprotection/tsconfig.json +++ b/sdk/dataprotection/arm-dataprotection/tsconfig.json @@ -15,17 +15,11 @@ ], "declaration": true, "outDir": "./dist-esm", - "importHelpers": true, - "paths": { - "@azure/arm-dataprotection": [ - "./src/index" - ] - } + "importHelpers": true }, "include": [ "./src/**/*.ts", - "./test/**/*.ts", - "samples-dev/**/*.ts" + "./test/**/*.ts" ], "exclude": [ "node_modules"