diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/CHANGELOG.md b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/CHANGELOG.md index 4b6667936d34..4a4819e3e6ba 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/CHANGELOG.md +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/CHANGELOG.md @@ -1,5 +1,83 @@ # Release History +## 1.1.0b1 (2026-11-03) + +### Features Added + + - Client `ResilienceManagementClient` added operation group `recovery_config_profiles` + - Model `DrillResourceProperties` added property `fault_eligibility` + - Model `DrillResourceProperties` added property `fault_ineligible_reason` + - Model `DrillRunProperties` added property `recovery_time_objective` + - Model `GoalAssignmentProperties` added property `regional_objectives` + - Model `GoalAssignmentProperties` added property `require_regional_resiliency` + - Model `GoalResourceProperties` added property `regional_resiliency` + - Model `GoalsData` added property `regional_resiliency` + - Model `LastRunProperties` added property `last_run_recovery_time_actual` + - Model `RecoveryGroupProperties` added property `resiliency_group_properties` + - Model `RecoveryPlanProperties` added property `resiliency_plan_properties` + - Enum `RecoveryPlanType` added member `CYBER_RECOVERY` + - Model `RecoveryResourceProperties` added property `inclusion_disabled_reasons` + - Model `RecoveryResourceProperties` added property `resiliency_resource_properties` + - Model `RegionalDrillResourceProperties` added property `advisor_regional_recommendation_id` + - Model `RegionalDrillResourceProperties` added property `fault_eligibility` + - Model `RegionalDrillResourceProperties` added property `fault_ineligible_reason` + - Model `RegionalDrillResourceProperties` added property `regional_resiliency_status` + - Model `RegionalDrillResourceProperties` added property `replication_mode` + - Model `ResourceProtectionSolutionSettings` added property `replication_mode` + - Enum `ResourceProtectionSolutionType` added member `AZURE_COSMOS_DB` + - Enum `ResourceProtectionSolutionType` added member `AZURE_NET_APP_FILES` + - Enum `ResourceProtectionSolutionType` added member `AZURE_SERVICE_BUS` + - Enum `ResourceProtectionSolutionType` added member `AZURE_STORAGE_ACCOUNT` + - Enum `ResourceProtectionSolutionType` added member `AZURE_TEMPLATE` + - Model `UnifiedResilienceItemResiliencyPosture` added property `regional_resiliency` + - Model `ZonalDrillResourceProperties` added property `fault_eligibility` + - Model `ZonalDrillResourceProperties` added property `fault_ineligible_reason` + - Added enum `BackupType` + - Added enum `CopyOptions` + - Added model `CyberResiliencyGroupProperties` + - Added model `CyberResiliencyPlanProperties` + - Added model `CyberResiliencyResourceProperties` + - Added model `EffectiveConfiguration` + - Added enum `FaultEligibility` + - Added enum `FaultIneligibleReason` + - Added model `FileShareRecoveryConfig` + - Added model `InfrastructureResiliencyGroupProperties` + - Added model `InfrastructureResiliencyPlanProperties` + - Added model `InfrastructureResiliencyResourceProperties` + - Added enum `IsoDuration` + - Added model `ProtectedItemDetails` + - Added model `RecoveryConfigProfile` + - Added model `RecoveryConfigProfileAssociation` + - Added model `RecoveryConfigProfileProperties` + - Added model `RecoveryGroupResiliencyProperties` + - Added model `RecoveryPlanResiliencyProperties` + - Added enum `RecoveryPointHealthStatus` + - Added model `RecoveryPointPolicy` + - Added enum `RecoveryPointPolicyType` + - Added enum `RecoveryResourceInclusionEligibility` + - Added model `RecoveryResourceResiliencyProperties` + - Added enum `RecoveryType` + - Added model `RegionalObjectives` + - Added enum `RegionalResiliencyStatus` + - Added enum `ReplicationMode` + - Added enum `ResiliencyType` + - Added model `ResourceAzureTemplateProtectionSetting` + - Added model `ResourceCosmosDBProtectionSetting` + - Added enum `ResourceInclusionDisabledReason` + - Added model `ResourceNetAppFilesProtectionSetting` + - Added enum `ResourceProtectionState` + - Added model `ResourceServiceBusProtectionSetting` + - Added model `ResourceStorageAccountProtectionSetting` + - Added model `TargetEnvironment` + - Added enum `TargetProvisioningMode` + - Added model `TargetResourceSpec` + - Added model `TargetScope` + - Added model `UnifiedResilienceItemRegionalResiliencyPosture` + - Added model `VmRecoveryConfig` + - Added model `WorkloadConfig` + - Added enum `WorkloadType` + - Added operation group `RecoveryConfigProfilesOperations` + ## 1.0.0 (2026-10-09) ### Features Added diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/_metadata.json b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/_metadata.json index 1a68467d8a7d..7f2da99620b3 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/_metadata.json +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/_metadata.json @@ -1,11 +1,11 @@ { - "apiVersion": "2026-10-01", + "apiVersion": "2026-11-30-preview", "apiVersions": { - "Microsoft.AzureResilienceManagement": "2026-10-01" + "Microsoft.AzureResilienceManagement": "2026-11-30-preview" }, - "commit": "639485c855d04eb485dc5a44d222477451d7dcb7", + "commit": "3bf236b54fc24e6fa34439ed4110c27fe36f7854", "repository_url": "https://github.com/Azure/azure-rest-api-specs", "typespec_src": "specification/azureresiliencemanagement/resource-manager/Microsoft.AzureResilienceManagement/AzureResilienceManagement", - "emitterVersion": "0.63.8", - "httpClientPythonVersion": "0.38.0" + "emitterVersion": "0.63.10", + "httpClientPythonVersion": "0.39.0" } \ No newline at end of file diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.md b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.md index a921891b3d32..89cd1596c817 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.md +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.md @@ -11,6 +11,7 @@ namespace azure.mgmt.resiliencemanagement goal_resources: GoalResourcesOperations operation_status: OperationStatusOperations operations: Operations + recovery_config_profiles: RecoveryConfigProfilesOperations recovery_job_resources: RecoveryJobResourcesOperations recovery_jobs: RecoveryJobsOperations recovery_plan_actions: RecoveryPlanActionsOperations @@ -54,6 +55,7 @@ namespace azure.mgmt.resiliencemanagement.aio goal_resources: GoalResourcesOperations operation_status: OperationStatusOperations operations: Operations + recovery_config_profiles: RecoveryConfigProfilesOperations recovery_job_resources: RecoveryJobResourcesOperations recovery_jobs: RecoveryJobsOperations recovery_plan_actions: RecoveryPlanActionsOperations @@ -96,7 +98,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -106,7 +108,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> DrillResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -127,7 +129,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'drill_run_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'drill_run_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -138,7 +140,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> DrillRunResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -235,7 +237,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_generate_report( self, service_group_name: str, @@ -364,7 +366,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_resume( self, service_group_name: str, @@ -376,7 +378,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -386,7 +388,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> DrillRun: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -473,7 +475,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[Drill]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_delete( self, service_group_name: str, @@ -518,7 +520,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_resync_readiness_check( self, service_group_name: str, @@ -634,7 +636,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -643,7 +645,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> Drill: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -699,7 +701,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[Enrollment]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_delete( self, resource_group_name: str, @@ -709,7 +711,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, resource_group_name: str, @@ -719,7 +721,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> Enrollment: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, resource_group_name: str, @@ -770,7 +772,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_delete( self, service_group_name: str, @@ -812,7 +814,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_refresh_goal_resources( self, service_group_name: str, @@ -887,7 +889,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[None]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -896,7 +898,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> GoalAssignment: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -916,7 +918,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'goal_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'goal_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -926,7 +928,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> GoalResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -947,7 +949,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'location', 'operation_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'location', 'operation_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, location: str, @@ -965,10 +967,120 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list(self, **kwargs: Any) -> AsyncItemPaged[Operation]: ... + class azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations: + + def __init__( + self, + *args, + **kwargs + ) -> None: ... + + @overload + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[RecoveryConfigProfile]: ... + + @overload + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[RecoveryConfigProfile]: ... + + @overload + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[RecoveryConfigProfile]: ... + + @distributed_trace_async + @api_version_validation(method_added_on='2026-11-30-preview', params_added_on={'2026-11-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_config_profile_name']}, api_versions_list=['2026-11-30-preview']) + async def begin_delete( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + **kwargs: Any + ) -> AsyncLROPoller[None]: ... + + @overload + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[RecoveryConfigProfile]: ... + + @overload + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[RecoveryConfigProfile]: ... + + @overload + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[RecoveryConfigProfile]: ... + + @distributed_trace_async + @api_version_validation(method_added_on='2026-11-30-preview', params_added_on={'2026-11-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_config_profile_name', 'accept']}, api_versions_list=['2026-11-30-preview']) + async def get( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + **kwargs: Any + ) -> RecoveryConfigProfile: ... + + @distributed_trace + @api_version_validation(method_added_on='2026-11-30-preview', params_added_on={'2026-11-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-11-30-preview']) + def list( + self, + service_group_name: str, + recovery_plan_name: str, + **kwargs: Any + ) -> AsyncItemPaged[RecoveryConfigProfile]: ... + + class azure.mgmt.resiliencemanagement.aio.operations.RecoveryJobResourcesOperations: def __init__( @@ -978,7 +1090,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'recovery_job_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'recovery_job_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -989,7 +1101,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> RecoveryJobResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -1086,7 +1198,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[ArmResponseErrorResponse]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'recovery_job_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'recovery_job_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_retry( self, service_group_name: str, @@ -1098,7 +1210,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[ArmResponseErrorResponse]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -1108,7 +1220,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> RecoveryJob: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -1126,7 +1238,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_check_readiness( self, service_group_name: str, @@ -1173,7 +1285,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[RecoveryPlanActionBaseResponse]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_failover_commit( self, service_group_name: str, @@ -1184,7 +1296,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[RecoveryPlanActionBaseResponse]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_finalize( self, service_group_name: str, @@ -1375,7 +1487,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[ValidateForRecoveryOperationBaseResponse]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_validate_for_failover_commit( self, service_group_name: str, @@ -1494,7 +1606,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[ValidateForRecoveryOperationBaseResponse]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_validate_for_test_failover_cleanup( self, service_group_name: str, @@ -1547,7 +1659,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[RecoveryPlan]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_delete( self, service_group_name: str, @@ -1589,7 +1701,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[RecoveryPlan]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -1598,7 +1710,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> RecoveryPlan: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -1618,7 +1730,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -1628,7 +1740,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> RecoveryResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -1646,7 +1758,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> None: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'unified_resilience_item_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'unified_resilience_item_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, service_group_name: str, @@ -1655,7 +1767,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> UnifiedResilienceItem: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -1708,7 +1820,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[UsagePlan]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def begin_delete( self, resource_group_name: str, @@ -1750,7 +1862,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncLROPoller[UsagePlan]: ... @distributed_trace_async - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) async def get( self, resource_group_name: str, @@ -1759,7 +1871,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> UsagePlan: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list_by_resource_group( self, resource_group_name: str, @@ -1767,7 +1879,7 @@ namespace azure.mgmt.resiliencemanagement.aio.operations ) -> AsyncItemPaged[UsagePlan]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list_by_subscription(self, **kwargs: Any) -> AsyncItemPaged[UsagePlan]: ... @@ -1935,6 +2047,12 @@ namespace azure.mgmt.resiliencemanagement.models ENABLE = "Enable" + class azure.mgmt.resiliencemanagement.models.BackupType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + LOG = "Log" + SNAPSHOT = "Snapshot" + STREAMING = "Streaming" + + class azure.mgmt.resiliencemanagement.models.ChaosResourcePropertiesOfDrill(_Model): chaos_resource_id: Optional[str] chaos_resource_identity_for_faults: AssociatedIdentity @@ -1965,6 +2083,11 @@ namespace azure.mgmt.resiliencemanagement.models REJECTED_BY_USER = "RejectedByUser" + class azure.mgmt.resiliencemanagement.models.CopyOptions(str, Enum, metaclass=CaseInsensitiveEnumMeta): + OVERWRITE = "Overwrite" + SKIP = "Skip" + + class azure.mgmt.resiliencemanagement.models.CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): APPLICATION = "Application" KEY = "Key" @@ -1988,6 +2111,55 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.CyberResiliencyGroupProperties(RecoveryGroupResiliencyProperties, discriminator='CyberResiliency'): + recovery_config_profile_associations: Optional[list[RecoveryConfigProfileAssociation]] + resiliency_type: Literal[ResiliencyType.CYBER_RESILIENCY] + + @overload + def __init__( + self, + *, + recovery_config_profile_associations: Optional[list[RecoveryConfigProfileAssociation]] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.CyberResiliencyPlanProperties(RecoveryPlanResiliencyProperties, discriminator='CyberResiliency'): + resiliency_type: Literal[ResiliencyType.CYBER_RESILIENCY] + target_environment: TargetEnvironment + + @overload + def __init__( + self, + *, + target_environment: TargetEnvironment + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.CyberResiliencyResourceProperties(RecoveryResourceResiliencyProperties, discriminator='CyberResiliency'): + inclusion_eligibility: Optional[Union[str, RecoveryResourceInclusionEligibility]] + membership_through_service_group_members: Optional[list[str]] + protected_item_details: Optional[list[ProtectedItemDetails]] + recovery_config_profile_id: Optional[str] + resiliency_type: Literal[ResiliencyType.CYBER_RESILIENCY] + workload_type: Optional[Union[str, WorkloadType]] + + @overload + def __init__( + self, + *, + recovery_config_profile_id: Optional[str] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.DiskReprotectInputDetails(_Model): disk_resource_id: Optional[str] staging_storage_account_resource_id: Optional[str] @@ -2169,6 +2341,8 @@ namespace azure.mgmt.resiliencemanagement.models advisor_recommendation_type_id: Optional[str] attention_reason: Optional[DrillResourceAttentionReason] drill_type: str + fault_eligibility: Optional[Union[str, FaultEligibility]] + fault_ineligible_reason: Optional[Union[str, FaultIneligibleReason]] fault_properties: Optional[FaultProperties] fault_state: Optional[Union[str, DrillResourceFaultState]] force_inclusion_state: Optional[Union[str, ForceInclusionAndUpdate]] @@ -2281,6 +2455,7 @@ namespace azure.mgmt.resiliencemanagement.models job_type: Literal[JobType.DRILL_RUN] notes: Optional[list[str]] operation: str + recovery_time_objective: Optional[Union[str, IsoDuration]] report: Optional[DrillReportSummary] resource_id: str retry_details: list[JobRetryDetails] @@ -2443,6 +2618,10 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.EffectiveConfiguration(_Model): + workload_config: WorkloadConfig + + class azure.mgmt.resiliencemanagement.models.Enrollment(ProxyResource): id: str name: str @@ -2626,6 +2805,17 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.FaultEligibility(str, Enum, metaclass=CaseInsensitiveEnumMeta): + ELIGIBLE = "Eligible" + INELIGIBLE = "Ineligible" + UNKNOWN = "Unknown" + + + class azure.mgmt.resiliencemanagement.models.FaultIneligibleReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): + RECOVERY_PLAN_NOT_CONFIGURED = "RecoveryPlanNotConfigured" + RESOURCE_NOT_INCLUDED_IN_RECOVERY_PLAN = "ResourceNotIncludedInRecoveryPlan" + + class azure.mgmt.resiliencemanagement.models.FaultProperties(_Model): available_faults: Optional[list[FaultDetails]] custom_fault: Optional[CustomFaultDetails] @@ -2644,6 +2834,29 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.FileShareRecoveryConfig(WorkloadConfig, discriminator='AzureFileShare'): + copy_options: Optional[Union[str, CopyOptions]] + identity: Optional[ManagedServiceIdentity] + storage_account: TargetResourceSpec + target_folder_path: Optional[str] + target_name_prefix: Optional[str] + workload_type: Literal[WorkloadType.AZURE_FILE_SHARE] + + @overload + def __init__( + self, + *, + copy_options: Optional[Union[str, CopyOptions]] = ..., + identity: Optional[ManagedServiceIdentity] = ..., + storage_account: TargetResourceSpec, + target_folder_path: Optional[str] = ..., + target_name_prefix: Optional[str] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.ForceInclusionAndUpdate(str, Enum, metaclass=CaseInsensitiveEnumMeta): DISABLE = "Disable" ENABLE = "Enable" @@ -2670,6 +2883,8 @@ namespace azure.mgmt.resiliencemanagement.models class azure.mgmt.resiliencemanagement.models.GoalAssignmentProperties(_Model): error_details: Optional[ErrorDetail] provisioning_state: Optional[Union[str, ProvisioningState]] + regional_objectives: Optional[RegionalObjectives] + require_regional_resiliency: Optional[bool] require_zonal_resiliency: bool service_level_resources: Optional[list[ServiceLevelResource]] @@ -2677,6 +2892,8 @@ namespace azure.mgmt.resiliencemanagement.models def __init__( self, *, + regional_objectives: Optional[RegionalObjectives] = ..., + require_regional_resiliency: Optional[bool] = ..., require_zonal_resiliency: bool, service_level_resources: Optional[list[ServiceLevelResource]] = ... ) -> None: ... @@ -2720,6 +2937,7 @@ namespace azure.mgmt.resiliencemanagement.models class azure.mgmt.resiliencemanagement.models.GoalResourceProperties(_Model): provisioning_state: Optional[Union[str, ProvisioningState]] + regional_resiliency: Optional[ResiliencyProperties] resource_arm_id: str zonal_resiliency: Optional[ResiliencyProperties] @@ -2727,6 +2945,7 @@ namespace azure.mgmt.resiliencemanagement.models def __init__( self, *, + regional_resiliency: Optional[ResiliencyProperties] = ..., resource_arm_id: str, zonal_resiliency: Optional[ResiliencyProperties] = ... ) -> None: ... @@ -2737,6 +2956,7 @@ namespace azure.mgmt.resiliencemanagement.models class azure.mgmt.resiliencemanagement.models.GoalsData(_Model): assignment_id: str + regional_resiliency: Optional[UnifiedResilienceItemGoalRequirement] zonal_resiliency: Optional[UnifiedResilienceItemGoalRequirement] @overload @@ -2744,6 +2964,7 @@ namespace azure.mgmt.resiliencemanagement.models self, *, assignment_id: str, + regional_resiliency: Optional[UnifiedResilienceItemGoalRequirement] = ..., zonal_resiliency: Optional[UnifiedResilienceItemGoalRequirement] = ... ) -> None: ... @@ -2788,11 +3009,48 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.InfrastructureResiliencyGroupProperties(RecoveryGroupResiliencyProperties, discriminator='InfrastructureResiliency'): + resiliency_type: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.InfrastructureResiliencyPlanProperties(RecoveryPlanResiliencyProperties, discriminator='InfrastructureResiliency'): + resiliency_type: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.InfrastructureResiliencyResourceProperties(RecoveryResourceResiliencyProperties, discriminator='InfrastructureResiliency'): + resiliency_type: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.InitialConfig(str, Enum, metaclass=CaseInsensitiveEnumMeta): COMPLETE = "Complete" PENDING = "Pending" + class azure.mgmt.resiliencemanagement.models.IsoDuration(str, Enum, metaclass=CaseInsensitiveEnumMeta): + PT15_M = "PT15M" + PT1_H = "PT1H" + PT24_H = "PT24H" + PT4_H = "PT4H" + + class azure.mgmt.resiliencemanagement.models.JobErrorInfo(_Model): error_code: Optional[str] error_message: Optional[str] @@ -2948,6 +3206,7 @@ namespace azure.mgmt.resiliencemanagement.models class azure.mgmt.resiliencemanagement.models.LastRunProperties(_Model): last_run_attestation: Optional[Union[str, DrillAttestation]] last_run_duration: Optional[timedelta] + last_run_recovery_time_actual: Optional[timedelta] last_run_state: Optional[Union[str, JobStatus]] last_run_time: Optional[datetime] @@ -3107,6 +3366,15 @@ namespace azure.mgmt.resiliencemanagement.models USER_SYSTEM = "user,system" + class azure.mgmt.resiliencemanagement.models.ProtectedItemDetails(_Model): + container_resource_id: Optional[str] + location: Optional[str] + protected_item_id: Optional[str] + protection_state: Optional[Union[str, ResourceProtectionState]] + recovery_locations: Optional[list[str]] + vault_resource_id: Optional[str] + + class azure.mgmt.resiliencemanagement.models.ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): ACCEPTED = "Accepted" CANCELED = "Canceled" @@ -3176,6 +3444,63 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile(ProxyResource): + id: str + name: str + properties: Optional[RecoveryConfigProfileProperties] + system_data: SystemData + type: str + + @overload + def __init__( + self, + *, + properties: Optional[RecoveryConfigProfileProperties] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.RecoveryConfigProfileAssociation(_Model): + recovery_config_profile_id: str + workload_type: Union[str, WorkloadType] + + @overload + def __init__( + self, + *, + recovery_config_profile_id: str, + workload_type: Union[str, WorkloadType] + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.RecoveryConfigProfileProperties(_Model): + attention_reasons: Optional[list[str]] + effective_configuration: Optional[EffectiveConfiguration] + needs_attention: Optional[bool] + provisioning_state: Optional[Union[str, ProvisioningState]] + recovery_point_policy: Optional[RecoveryPointPolicy] + target_scope: TargetScope + workload_config: WorkloadConfig + workload_type: Union[str, WorkloadType] + + @overload + def __init__( + self, + *, + recovery_point_policy: Optional[RecoveryPointPolicy] = ..., + target_scope: TargetScope, + workload_config: WorkloadConfig + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.RecoveryGroup(ProxyResource): id: str name: str @@ -3277,6 +3602,7 @@ namespace azure.mgmt.resiliencemanagement.models order_id: int post_actions: Optional[list[RecoveryGroupBaseAction]] pre_actions: Optional[list[RecoveryGroupBaseAction]] + resiliency_group_properties: Optional[RecoveryGroupResiliencyProperties] @overload def __init__( @@ -3286,7 +3612,22 @@ namespace azure.mgmt.resiliencemanagement.models group_unique_id: str, order_id: int, post_actions: Optional[list[RecoveryGroupBaseAction]] = ..., - pre_actions: Optional[list[RecoveryGroupBaseAction]] = ... + pre_actions: Optional[list[RecoveryGroupBaseAction]] = ..., + resiliency_group_properties: Optional[RecoveryGroupResiliencyProperties] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.RecoveryGroupResiliencyProperties(_Model): + resiliency_type: str + + @overload + def __init__( + self, + *, + resiliency_type: str ) -> None: ... @overload @@ -3486,6 +3827,7 @@ namespace azure.mgmt.resiliencemanagement.models plan_type: Union[str, RecoveryPlanType] provisioning_state: Optional[Union[str, ProvisioningState]] recovery_groups_setting: RecoveryGroupsSetting + resiliency_plan_properties: Optional[RecoveryPlanResiliencyProperties] @overload def __init__( @@ -3493,7 +3835,8 @@ namespace azure.mgmt.resiliencemanagement.models *, plan_description: str, plan_type: Union[str, RecoveryPlanType], - recovery_groups_setting: RecoveryGroupsSetting + recovery_groups_setting: RecoveryGroupsSetting, + resiliency_plan_properties: Optional[RecoveryPlanResiliencyProperties] = ... ) -> None: ... @overload @@ -3516,6 +3859,20 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.RecoveryPlanResiliencyProperties(_Model): + resiliency_type: str + + @overload + def __init__( + self, + *, + resiliency_type: str + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.RecoveryPlanState(str, Enum, metaclass=CaseInsensitiveEnumMeta): READY = "Ready" UNDER_EDIT = "UnderEdit" @@ -3523,10 +3880,46 @@ namespace azure.mgmt.resiliencemanagement.models class azure.mgmt.resiliencemanagement.models.RecoveryPlanType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + CYBER_RECOVERY = "CyberRecovery" REGIONAL = "Regional" ZONAL = "Zonal" + class azure.mgmt.resiliencemanagement.models.RecoveryPointHealthStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + ALL = "All" + HEALTHY_AND_UNKNOWN = "HealthyAndUnknown" + HEALTHY_ONLY = "HealthyOnly" + + + class azure.mgmt.resiliencemanagement.models.RecoveryPointPolicy(_Model): + backup_type: list[Union[str, BackupType]] + end_time: Optional[datetime] + lookback_duration: Optional[timedelta] + recovery_point_health_status: Optional[Union[str, RecoveryPointHealthStatus]] + start_time: Optional[datetime] + type: Union[str, RecoveryPointPolicyType] + + @overload + def __init__( + self, + *, + backup_type: list[Union[str, BackupType]], + end_time: Optional[datetime] = ..., + lookback_duration: Optional[timedelta] = ..., + recovery_point_health_status: Optional[Union[str, RecoveryPointHealthStatus]] = ..., + start_time: Optional[datetime] = ..., + type: Union[str, RecoveryPointPolicyType] + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.RecoveryPointPolicyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + LATEST = "Latest" + RANDOM = "Random" + + class azure.mgmt.resiliencemanagement.models.RecoveryResource(ProxyResource): id: str name: str @@ -3545,16 +3938,23 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.RecoveryResourceInclusionEligibility(str, Enum, metaclass=CaseInsensitiveEnumMeta): + CANNOT_BE_INCLUDED = "CannotBeIncluded" + CAN_BE_INCLUDED = "CanBeIncluded" + + class azure.mgmt.resiliencemanagement.models.RecoveryResourceProperties(_Model): associated_identity: Optional[AssociatedIdentity] attention_reasons: Optional[list[str]] error_details: Optional[ErrorDetail] + inclusion_disabled_reasons: Optional[list[Union[str, ResourceInclusionDisabledReason]]] inclusion_state: Optional[Union[str, ResourceInclusionState]] needs_attention: Optional[bool] protection_status: Optional[Union[str, ResourceProtectionStatus]] provisioning_state: Optional[Union[str, ProvisioningState]] recovery_group_id: Optional[str] recovery_resource_unique_id: str + resiliency_resource_properties: Optional[RecoveryResourceResiliencyProperties] resource_id: Optional[str] resource_location: Optional[str] resource_physical_zones: Optional[list[str]] @@ -3570,6 +3970,7 @@ namespace azure.mgmt.resiliencemanagement.models inclusion_state: Optional[Union[str, ResourceInclusionState]] = ..., recovery_group_id: Optional[str] = ..., recovery_resource_unique_id: str, + resiliency_resource_properties: Optional[RecoveryResourceResiliencyProperties] = ..., selected_protection_solution_setting: Optional[ResourceBaseProtectionSolutionSetting] = ..., selected_protection_solution_type: Optional[Union[str, ResourceProtectionSolutionType]] = ... ) -> None: ... @@ -3594,6 +3995,27 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.RecoveryResourceResiliencyProperties(_Model): + resiliency_type: str + + @overload + def __init__( + self, + *, + resiliency_type: str + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.RecoveryType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + ALTERNATE_LOCATION = "AlternateLocation" + CREATE_NEW_VM = "CreateNewVM" + RESTORE_AS_DISKS = "RestoreAsDisks" + RESTORE_AS_FILES = "RestoreAsFiles" + + class azure.mgmt.resiliencemanagement.models.RegionalDrillProperties(DrillProperties, discriminator='Regional'): attention_reason: AttentionReason chaos_resource_properties: ChaosResourcePropertiesOfDrill @@ -3636,8 +4058,11 @@ namespace azure.mgmt.resiliencemanagement.models class azure.mgmt.resiliencemanagement.models.RegionalDrillResourceProperties(DrillResourceProperties, discriminator='Regional'): active_locations: list[str] advisor_recommendation_type_id: str + advisor_regional_recommendation_id: Optional[str] attention_reason: DrillResourceAttentionReason drill_type: Literal[DrillType.REGIONAL] + fault_eligibility: Union[str, FaultEligibility] + fault_ineligible_reason: Union[str, FaultIneligibleReason] fault_properties: FaultProperties fault_state: Union[str, DrillResourceFaultState] force_inclusion_state: Union[str, ForceInclusionAndUpdate] @@ -3649,6 +4074,8 @@ namespace azure.mgmt.resiliencemanagement.models recovery_locations: list[str] recovery_plan_exclusion_reason: Union[str, RecoveryPlanExclusionReason] recovery_plan_inclusion_state: Union[str, ResourceInclusionState] + regional_resiliency_status: Optional[Union[str, RegionalResiliencyStatus]] + replication_mode: Optional[Union[str, ReplicationMode]] resource_id: str resource_protection_solution_type: Union[str, ResourceProtectionSolutionType] resource_type: str @@ -3666,11 +4093,38 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.RegionalObjectives(_Model): + target_recovery_point_objective: Union[str, IsoDuration] + target_recovery_time_objective: Union[str, IsoDuration] + + @overload + def __init__( + self, + *, + target_recovery_point_objective: Union[str, IsoDuration], + target_recovery_time_objective: Union[str, IsoDuration] + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.RegionalResiliencyStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + NOT_RESILIENT = "NotResilient" + RESILIENT = "Resilient" + + class azure.mgmt.resiliencemanagement.models.RelativeResourceCompositionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): IN_SYNC = "InSync" OUT_OF_SYNC = "OutOfSync" + class azure.mgmt.resiliencemanagement.models.ReplicationMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + ACTIVE_ACTIVE = "ActiveActive" + ACTIVE_PASSIVE = "ActivePassive" + NONE = "None" + + class azure.mgmt.resiliencemanagement.models.ReportStageStatus(_Model): drill_run_stage: Union[str, DrillRunSubtasks] generation_status: Optional[Union[str, DrillReportGenerationStatus]] @@ -3735,6 +4189,11 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.ResiliencyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + CYBER_RESILIENCY = "CyberResiliency" + INFRASTRUCTURE_RESILIENCY = "InfrastructureResiliency" + + class azure.mgmt.resiliencemanagement.models.Resource(_Model): id: Optional[str] name: Optional[str] @@ -3742,6 +4201,25 @@ namespace azure.mgmt.resiliencemanagement.models type: Optional[str] + class azure.mgmt.resiliencemanagement.models.ResourceAzureTemplateProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='AzureTemplate'): + deployment_location: Optional[str] + deployment_scope: str + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_TEMPLATE] + template_spec_version_id: str + + @overload + def __init__( + self, + *, + deployment_location: Optional[str] = ..., + deployment_scope: str, + template_spec_version_id: str + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.ResourceBaseProtectionSolutionSetting(_Model): protection_solution_type: str @@ -3756,6 +4234,16 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.ResourceCosmosDBProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='AzureCosmosDB'): + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_COSMOS_DB] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.ResourceCrossZoneVmRecoveryProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='CrossZoneVMRecovery'): capacity_reservation_group_id: Optional[str] protection_solution_type: Literal[ResourceProtectionSolutionType.CROSS_ZONE_VM_RECOVERY] @@ -3843,6 +4331,11 @@ namespace azure.mgmt.resiliencemanagement.models SKU_CAPACITY = "SkuCapacity" + class azure.mgmt.resiliencemanagement.models.ResourceInclusionDisabledReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): + RESOURCE_ACTIVE_ACTIVE_PROTECTION = "ResourceActiveActiveProtection" + RESOURCE_HIGHLY_AVAILABLE = "ResourceHighlyAvailable" + + class azure.mgmt.resiliencemanagement.models.ResourceInclusionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): EXCLUDED = "Excluded" INCLUDED = "Included" @@ -3876,6 +4369,16 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.ResourceNetAppFilesProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='AzureNetAppFiles'): + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_NET_APP_FILES] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionSettings(_Model): active_location: Optional[str] active_locations: Optional[list[str]] @@ -3887,19 +4390,41 @@ namespace azure.mgmt.resiliencemanagement.models protection_status: Optional[Union[str, ResourceProtectionStatus]] recovery_locations: Optional[list[str]] replica_resources: Optional[list[str]] + replication_mode: Optional[Union[str, ReplicationMode]] replication_role: Optional[Union[str, ResourceReplicationRole]] resource_id: Optional[str] test_failover_state: Optional[Union[str, TestFailoverState]] + @overload + def __init__( + self, + *, + replication_mode: Optional[Union[str, ReplicationMode]] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + AZURE_COSMOS_DB = "AzureCosmosDB" AZURE_NATIVE = "AzureNative" + AZURE_NET_APP_FILES = "AzureNetAppFiles" + AZURE_SERVICE_BUS = "AzureServiceBus" AZURE_SITE_RECOVERY = "AzureSiteRecovery" + AZURE_STORAGE_ACCOUNT = "AzureStorageAccount" + AZURE_TEMPLATE = "AzureTemplate" CROSS_ZONE_VM_RECOVERY = "CrossZoneVMRecovery" CUSTOM_RUNBOOK = "CustomRunbook" NONE = "None" + class azure.mgmt.resiliencemanagement.models.ResourceProtectionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + NOT_PROTECTED = "NotProtected" + PROTECTED = "Protected" + UNKNOWN = "Unknown" + + class azure.mgmt.resiliencemanagement.models.ResourceProtectionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): HIGHLY_AVAILABLE = "HighlyAvailable" NOT_PROTECTED = "NotProtected" @@ -3907,10 +4432,20 @@ namespace azure.mgmt.resiliencemanagement.models UNKNOWN = "Unknown" - class azure.mgmt.resiliencemanagement.models.ResourceReplicationRole(str, Enum, metaclass=CaseInsensitiveEnumMeta): - PRIMARY = "Primary" - REPLICA = "Replica" - UNKNOWN = "Unknown" + class azure.mgmt.resiliencemanagement.models.ResourceReplicationRole(str, Enum, metaclass=CaseInsensitiveEnumMeta): + PRIMARY = "Primary" + REPLICA = "Replica" + UNKNOWN = "Unknown" + + + class azure.mgmt.resiliencemanagement.models.ResourceServiceBusProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='AzureServiceBus'): + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_SERVICE_BUS] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... class azure.mgmt.resiliencemanagement.models.ResourceSiteRecoveryProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='AzureSiteRecovery'): @@ -3974,6 +4509,16 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.ResourceStorageAccountProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator='AzureStorageAccount'): + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT] + + @overload + def __init__(self) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.ResourceTypeCategories(str, Enum, metaclass=CaseInsensitiveEnumMeta): AZURE_SITE_RECOVERY_VMS_PRESENT = "AzureSiteRecoveryVMsPresent" @@ -4138,6 +4683,62 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.TargetEnvironment(_Model): + target_locations: list[str] + target_subscription_ids: list[str] + + @overload + def __init__( + self, + *, + target_locations: list[str], + target_subscription_ids: list[str] + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.TargetProvisioningMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + EXISTING = "Existing" + + + class azure.mgmt.resiliencemanagement.models.TargetResourceSpec(_Model): + arm_resource_type: str + depends_on: Optional[list[str]] + provisioning_mode: Optional[Union[str, TargetProvisioningMode]] + resource_id: Optional[str] + + @overload + def __init__( + self, + *, + arm_resource_type: str, + depends_on: Optional[list[str]] = ..., + provisioning_mode: Optional[Union[str, TargetProvisioningMode]] = ..., + resource_id: Optional[str] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.TargetScope(_Model): + location: str + subscription_id: str + + @overload + def __init__( + self, + *, + location: str, + subscription_id: str + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.TestFailoverCleanupRequest(_Model): comments: Optional[str] @@ -4251,13 +4852,39 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemRegionalResiliencyPosture(_Model): + enabled_resource_count: Optional[int] + estimated_recovery_point_objective: Optional[Union[str, IsoDuration]] + evaluation_date_time: Optional[datetime] + not_enabled_resource_count: Optional[int] + not_evaluated_resource_count: Optional[int] + user_confirmation_needed_count: Optional[int] + + @overload + def __init__( + self, + *, + enabled_resource_count: Optional[int] = ..., + estimated_recovery_point_objective: Optional[Union[str, IsoDuration]] = ..., + evaluation_date_time: Optional[datetime] = ..., + not_enabled_resource_count: Optional[int] = ..., + not_evaluated_resource_count: Optional[int] = ..., + user_confirmation_needed_count: Optional[int] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + class azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemResiliencyPosture(_Model): + regional_resiliency: Optional[UnifiedResilienceItemRegionalResiliencyPosture] zonal_resiliency: UnifiedResilienceItemZonalResiliencyPosture @overload def __init__( self, *, + regional_resiliency: Optional[UnifiedResilienceItemRegionalResiliencyPosture] = ..., zonal_resiliency: UnifiedResilienceItemZonalResiliencyPosture ) -> None: ... @@ -4478,6 +5105,60 @@ namespace azure.mgmt.resiliencemanagement.models def __init__(self, mapping: Mapping[str, Any]) -> None: ... + class azure.mgmt.resiliencemanagement.models.VmRecoveryConfig(WorkloadConfig, discriminator='AzureVm'): + disk_encryption_set: Optional[TargetResourceSpec] + identity: Optional[ManagedServiceIdentity] + recovery_type: Optional[Union[str, RecoveryType]] + resource_group: TargetResourceSpec + storage_account: TargetResourceSpec + subnet: TargetResourceSpec + target_name_prefix: Optional[str] + virtual_network: TargetResourceSpec + workload_type: Literal[WorkloadType.AZURE_VM] + zones: Optional[list[str]] + + @overload + def __init__( + self, + *, + disk_encryption_set: Optional[TargetResourceSpec] = ..., + identity: Optional[ManagedServiceIdentity] = ..., + recovery_type: Optional[Union[str, RecoveryType]] = ..., + resource_group: TargetResourceSpec, + storage_account: TargetResourceSpec, + subnet: TargetResourceSpec, + target_name_prefix: Optional[str] = ..., + virtual_network: TargetResourceSpec, + zones: Optional[list[str]] = ... + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.WorkloadConfig(_Model): + workload_type: str + + @overload + def __init__( + self, + *, + workload_type: str + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: ... + + + class azure.mgmt.resiliencemanagement.models.WorkloadType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + AZURE_FILE_SHARE = "AzureFileShare" + AZURE_VM = "AzureVm" + ORACLE_IN_AZURE_VM = "OracleInAzureVm" + SAP_ASE_IN_AZURE_VM = "SapAseInAzureVm" + SAP_HANA_IN_AZURE_VM = "SapHanaInAzureVm" + SQL_DATABASE_IN_AZURE_VM = "SqlDatabaseInAzureVm" + + class azure.mgmt.resiliencemanagement.models.ZonalDrillProperties(DrillProperties, discriminator='Zonal'): attention_reason: AttentionReason chaos_resource_properties: ChaosResourcePropertiesOfDrill @@ -4525,6 +5206,8 @@ namespace azure.mgmt.resiliencemanagement.models advisor_recommendation_type_id: str attention_reason: DrillResourceAttentionReason drill_type: Literal[DrillType.ZONAL] + fault_eligibility: Union[str, FaultEligibility] + fault_ineligible_reason: Union[str, FaultIneligibleReason] fault_properties: FaultProperties fault_state: Union[str, DrillResourceFaultState] force_inclusion_state: Union[str, ForceInclusionAndUpdate] @@ -4566,7 +5249,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -4576,7 +5259,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> DrillResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -4597,7 +5280,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'drill_run_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'drill_run_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -4608,7 +5291,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> DrillRunResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -4705,7 +5388,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_generate_report( self, service_group_name: str, @@ -4834,7 +5517,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_resume( self, service_group_name: str, @@ -4846,7 +5529,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'drill_run_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -4856,7 +5539,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> DrillRun: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -4943,7 +5626,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[Drill]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_delete( self, service_group_name: str, @@ -4988,7 +5671,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'drill_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_resync_readiness_check( self, service_group_name: str, @@ -5104,7 +5787,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'drill_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -5113,7 +5796,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> Drill: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -5169,7 +5852,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[Enrollment]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_delete( self, resource_group_name: str, @@ -5179,7 +5862,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'enrollment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, resource_group_name: str, @@ -5189,7 +5872,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> Enrollment: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, resource_group_name: str, @@ -5240,7 +5923,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_delete( self, service_group_name: str, @@ -5282,7 +5965,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_refresh_goal_resources( self, service_group_name: str, @@ -5357,7 +6040,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[None]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -5366,7 +6049,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> GoalAssignment: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -5386,7 +6069,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'goal_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'goal_assignment_name', 'goal_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -5396,7 +6079,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> GoalResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'goal_assignment_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -5417,7 +6100,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'location', 'operation_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'location', 'operation_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, location: str, @@ -5435,10 +6118,120 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list(self, **kwargs: Any) -> ItemPaged[Operation]: ... + class azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations: + + def __init__( + self, + *args, + **kwargs + ) -> None: ... + + @overload + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[RecoveryConfigProfile]: ... + + @overload + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[RecoveryConfigProfile]: ... + + @overload + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[RecoveryConfigProfile]: ... + + @distributed_trace + @api_version_validation(method_added_on='2026-11-30-preview', params_added_on={'2026-11-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_config_profile_name']}, api_versions_list=['2026-11-30-preview']) + def begin_delete( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + **kwargs: Any + ) -> LROPoller[None]: ... + + @overload + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[RecoveryConfigProfile]: ... + + @overload + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[RecoveryConfigProfile]: ... + + @overload + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[RecoveryConfigProfile]: ... + + @distributed_trace + @api_version_validation(method_added_on='2026-11-30-preview', params_added_on={'2026-11-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_config_profile_name', 'accept']}, api_versions_list=['2026-11-30-preview']) + def get( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + **kwargs: Any + ) -> RecoveryConfigProfile: ... + + @distributed_trace + @api_version_validation(method_added_on='2026-11-30-preview', params_added_on={'2026-11-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-11-30-preview']) + def list( + self, + service_group_name: str, + recovery_plan_name: str, + **kwargs: Any + ) -> ItemPaged[RecoveryConfigProfile]: ... + + class azure.mgmt.resiliencemanagement.operations.RecoveryJobResourcesOperations: def __init__( @@ -5448,7 +6241,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'recovery_job_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'recovery_job_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -5459,7 +6252,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> RecoveryJobResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -5556,7 +6349,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[ArmResponseErrorResponse]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'recovery_job_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'recovery_job_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_retry( self, service_group_name: str, @@ -5568,7 +6361,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[ArmResponseErrorResponse]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_job_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -5578,7 +6371,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> RecoveryJob: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -5596,7 +6389,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_check_readiness( self, service_group_name: str, @@ -5643,7 +6436,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[RecoveryPlanActionBaseResponse]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_failover_commit( self, service_group_name: str, @@ -5654,7 +6447,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[RecoveryPlanActionBaseResponse]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_finalize( self, service_group_name: str, @@ -5845,7 +6638,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[ValidateForRecoveryOperationBaseResponse]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_validate_for_failover_commit( self, service_group_name: str, @@ -5964,7 +6757,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[ValidateForRecoveryOperationBaseResponse]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'operation_id', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_validate_for_test_failover_cleanup( self, service_group_name: str, @@ -6017,7 +6810,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[RecoveryPlan]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_delete( self, service_group_name: str, @@ -6059,7 +6852,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[RecoveryPlan]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -6068,7 +6861,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> RecoveryPlan: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -6088,7 +6881,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'recovery_resource_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -6098,7 +6891,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> RecoveryResource: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'recovery_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -6116,7 +6909,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> None: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'unified_resilience_item_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'unified_resilience_item_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, service_group_name: str, @@ -6125,7 +6918,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> UnifiedResilienceItem: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['service_group_name', 'api_version', 'skip_token', 'top', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list( self, service_group_name: str, @@ -6178,7 +6971,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[UsagePlan]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def begin_delete( self, resource_group_name: str, @@ -6220,7 +7013,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> LROPoller[UsagePlan]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'usage_plan_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def get( self, resource_group_name: str, @@ -6229,7 +7022,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> UsagePlan: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'resource_group_name', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list_by_resource_group( self, resource_group_name: str, @@ -6237,7 +7030,7 @@ namespace azure.mgmt.resiliencemanagement.operations ) -> ItemPaged[UsagePlan]: ... @distributed_trace - @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01']) + @api_version_validation(method_added_on='2026-09-30-preview', params_added_on={'2026-09-30-preview': ['api_version', 'subscription_id', 'accept']}, api_versions_list=['2026-09-30-preview', '2026-10-01', '2026-10-31-preview', '2026-11-30-preview']) def list_by_subscription(self, **kwargs: Any) -> ItemPaged[UsagePlan]: ... @@ -6345,6 +7138,32 @@ namespace azure.mgmt.resiliencemanagement.types scriptResourceId: str + class azure.mgmt.resiliencemanagement.types.CyberResiliencyGroupProperties(TypedDict, total=False): + key "resiliencyType": Required[Literal[ResiliencyType.CYBER_RESILIENCY]] + recoveryConfigProfileAssociations: list[RecoveryConfigProfileAssociation] + resiliencyType: Literal[ResiliencyType.CYBER_RESILIENCY] + + + class azure.mgmt.resiliencemanagement.types.CyberResiliencyPlanProperties(TypedDict, total=False): + key "resiliencyType": Required[Literal[ResiliencyType.CYBER_RESILIENCY]] + key "targetEnvironment": Required[TargetEnvironment] + resiliencyType: Literal[ResiliencyType.CYBER_RESILIENCY] + targetEnvironment: TargetEnvironment + + + class azure.mgmt.resiliencemanagement.types.CyberResiliencyResourceProperties(TypedDict, total=False): + key "inclusionEligibility": Union[str, RecoveryResourceInclusionEligibility] + key "recoveryConfigProfileId": str + key "resiliencyType": Required[Literal[ResiliencyType.CYBER_RESILIENCY]] + key "workloadType": Union[str, WorkloadType] + inclusionEligibility: Union[str, RecoveryResourceInclusionEligibility] + membershipThroughServiceGroupMembers: list[str] + protectedItemDetails: list[ProtectedItemDetails] + recoveryConfigProfileId: str + resiliencyType: Literal[ResiliencyType.CYBER_RESILIENCY] + workloadType: Union[str, WorkloadType] + + class azure.mgmt.resiliencemanagement.types.DiskReprotectInputDetails(TypedDict, total=False): key "diskResourceId": str key "stagingStorageAccountResourceId": str @@ -6431,6 +7250,11 @@ namespace azure.mgmt.resiliencemanagement.types sliMonitoringProperties: SliMonitoringProperties + class azure.mgmt.resiliencemanagement.types.EffectiveConfiguration(TypedDict, total=False): + key "workloadConfig": Required[WorkloadConfig] + workloadConfig: WorkloadConfig + + class azure.mgmt.resiliencemanagement.types.Enrollment(ProxyResource): key "id": str key "name": str @@ -6518,6 +7342,21 @@ namespace azure.mgmt.resiliencemanagement.types overriddenDefaultFault: FaultDetails + class azure.mgmt.resiliencemanagement.types.FileShareRecoveryConfig(TypedDict, total=False): + key "copyOptions": Union[str, CopyOptions] + key "identity": ForwardRef('ManagedServiceIdentity', module='types') + key "storageAccount": Required[TargetResourceSpec] + key "targetFolderPath": str + key "targetNamePrefix": str + key "workloadType": Required[Literal[WorkloadType.AZURE_FILE_SHARE]] + copyOptions: Union[str, CopyOptions] + identity: ManagedServiceIdentity + storageAccount: TargetResourceSpec + targetFolderPath: str + targetNamePrefix: str + workloadType: Literal[WorkloadType.AZURE_FILE_SHARE] + + class azure.mgmt.resiliencemanagement.types.GoalAssignment(ProxyResource): key "id": str key "name": str @@ -6534,9 +7373,13 @@ namespace azure.mgmt.resiliencemanagement.types class azure.mgmt.resiliencemanagement.types.GoalAssignmentProperties(TypedDict, total=False): key "errorDetails": ForwardRef('ErrorDetail', module='types') key "provisioningState": Union[str, ProvisioningState] + key "regionalObjectives": ForwardRef('RegionalObjectives', module='types') + key "requireRegionalResiliency": bool key "requireZonalResiliency": Required[bool] errorDetails: ErrorDetail provisioningState: Union[str, ProvisioningState] + regionalObjectives: RegionalObjectives + requireRegionalResiliency: bool requireZonalResiliency: bool serviceLevelResources: list[ServiceLevelResource] @@ -6563,9 +7406,11 @@ namespace azure.mgmt.resiliencemanagement.types class azure.mgmt.resiliencemanagement.types.GoalResourceProperties(TypedDict, total=False): key "provisioningState": Union[str, ProvisioningState] + key "regionalResiliency": ForwardRef('ResiliencyProperties', module='types') key "resourceArmId": Required[str] key "zonalResiliency": ForwardRef('ResiliencyProperties', module='types') provisioningState: Union[str, ProvisioningState] + regionalResiliency: ResiliencyProperties resourceArmId: str zonalResiliency: ResiliencyProperties @@ -6584,13 +7429,30 @@ namespace azure.mgmt.resiliencemanagement.types id: str + class azure.mgmt.resiliencemanagement.types.InfrastructureResiliencyGroupProperties(TypedDict, total=False): + key "resiliencyType": Required[Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY]] + resiliencyType: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + + + class azure.mgmt.resiliencemanagement.types.InfrastructureResiliencyPlanProperties(TypedDict, total=False): + key "resiliencyType": Required[Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY]] + resiliencyType: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + + + class azure.mgmt.resiliencemanagement.types.InfrastructureResiliencyResourceProperties(TypedDict, total=False): + key "resiliencyType": Required[Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY]] + resiliencyType: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + + class azure.mgmt.resiliencemanagement.types.LastRunProperties(TypedDict, total=False): key "lastRunAttestation": Union[str, DrillAttestation] key "lastRunDuration": str + key "lastRunRecoveryTimeActual": str key "lastRunState": Union[str, JobStatus] key "lastRunTime": str lastRunAttestation: Union[str, DrillAttestation] lastRunDuration: str + lastRunRecoveryTimeActual: str lastRunState: Union[str, JobStatus] lastRunTime: str @@ -6628,6 +7490,20 @@ namespace azure.mgmt.resiliencemanagement.types serviceGroupMetricsDataCollectionRuleId: str + class azure.mgmt.resiliencemanagement.types.ProtectedItemDetails(TypedDict, total=False): + key "containerResourceId": str + key "location": str + key "protectedItemId": str + key "protectionState": Union[str, ResourceProtectionState] + key "vaultResourceId": str + containerResourceId: str + location: str + protectedItemId: str + protectionState: Union[str, ResourceProtectionState] + recoveryLocations: list[str] + vaultResourceId: str + + class azure.mgmt.resiliencemanagement.types.ProxyResource(Resource): key "id": str key "name": str @@ -6649,6 +7525,44 @@ namespace azure.mgmt.resiliencemanagement.types description: str + class azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile(ProxyResource): + key "id": str + key "name": str + key "properties": ForwardRef('RecoveryConfigProfileProperties', module='types') + key "systemData": ForwardRef('SystemData', module='types') + key "type": str + id: str + name: str + properties: RecoveryConfigProfileProperties + systemData: SystemData + type: str + + + class azure.mgmt.resiliencemanagement.types.RecoveryConfigProfileAssociation(TypedDict, total=False): + key "recoveryConfigProfileId": Required[str] + key "workloadType": Required[Union[str, WorkloadType]] + recoveryConfigProfileId: str + workloadType: Union[str, WorkloadType] + + + class azure.mgmt.resiliencemanagement.types.RecoveryConfigProfileProperties(TypedDict, total=False): + key "effectiveConfiguration": ForwardRef('EffectiveConfiguration', module='types') + key "needsAttention": bool + key "provisioningState": Union[str, ProvisioningState] + key "recoveryPointPolicy": ForwardRef('RecoveryPointPolicy', module='types') + key "targetScope": Required[TargetScope] + key "workloadConfig": Required[WorkloadConfig] + key "workloadType": Required[Union[str, WorkloadType]] + attentionReasons: list[str] + effectiveConfiguration: EffectiveConfiguration + needsAttention: bool + provisioningState: Union[str, ProvisioningState] + recoveryPointPolicy: RecoveryPointPolicy + targetScope: TargetScope + workloadConfig: WorkloadConfig + workloadType: Union[str, WorkloadType] + + class azure.mgmt.resiliencemanagement.types.RecoveryGroup(ProxyResource): key "id": str key "name": str @@ -6698,11 +7612,13 @@ namespace azure.mgmt.resiliencemanagement.types key "description": Required[str] key "groupUniqueId": Required[str] key "orderId": Required[int] + key "resiliencyGroupProperties": ForwardRef('RecoveryGroupResiliencyProperties', module='types') description: str groupUniqueId: str orderId: int postActions: list[RecoveryGroupBaseAction] preActions: list[RecoveryGroupBaseAction] + resiliencyGroupProperties: RecoveryGroupResiliencyProperties class azure.mgmt.resiliencemanagement.types.RecoveryGroupsSetting(TypedDict, total=False): @@ -6755,6 +7671,7 @@ namespace azure.mgmt.resiliencemanagement.types key "planType": Required[Union[str, RecoveryPlanType]] key "provisioningState": Union[str, ProvisioningState] key "recoveryGroupsSetting": Required[RecoveryGroupsSetting] + key "resiliencyPlanProperties": ForwardRef('RecoveryPlanResiliencyProperties', module='types') errorDetails: ErrorDetail latestFailoverStatus: RecoveryPlanFailoverOperationStatus latestValidationStatus: RecoveryPlanOperationStatus @@ -6763,6 +7680,7 @@ namespace azure.mgmt.resiliencemanagement.types planType: Union[str, RecoveryPlanType] provisioningState: Union[str, ProvisioningState] recoveryGroupsSetting: RecoveryGroupsSetting + resiliencyPlanProperties: RecoveryPlanResiliencyProperties class azure.mgmt.resiliencemanagement.types.RecoveryPlanPropertiesOfDrill(TypedDict, total=False): @@ -6774,6 +7692,21 @@ namespace azure.mgmt.resiliencemanagement.types recoveryPlanResourceExcludedCount: int + class azure.mgmt.resiliencemanagement.types.RecoveryPointPolicy(TypedDict, total=False): + key "backupType": Required[list[Union[str, BackupType]]] + key "endTime": str + key "lookbackDuration": str + key "recoveryPointHealthStatus": Union[str, RecoveryPointHealthStatus] + key "startTime": str + key "type": Required[Union[str, RecoveryPointPolicyType]] + backupType: list[Union[str, BackupType]] + endTime: str + lookbackDuration: str + recoveryPointHealthStatus: Union[str, RecoveryPointHealthStatus] + startTime: str + type: Union[str, RecoveryPointPolicyType] + + class azure.mgmt.resiliencemanagement.types.RecoveryResource(ProxyResource): key "id": str key "name": str @@ -6796,6 +7729,7 @@ namespace azure.mgmt.resiliencemanagement.types key "provisioningState": Union[str, ProvisioningState] key "recoveryGroupId": str key "recoveryResourceUniqueId": Required[str] + key "resiliencyResourceProperties": ForwardRef('RecoveryResourceResiliencyProperties', module='types') key "resourceId": str key "resourceLocation": str key "selectedProtectionSolutionSetting": ForwardRef('ResourceBaseProtectionSolutionSetting', module='types') @@ -6803,12 +7737,14 @@ namespace azure.mgmt.resiliencemanagement.types associatedIdentity: AssociatedIdentity attentionReasons: list[str] errorDetails: ErrorDetail + inclusionDisabledReasons: list[Union[str, ResourceInclusionDisabledReason]] inclusionState: Union[str, ResourceInclusionState] needsAttention: bool protectionStatus: Union[str, ResourceProtectionStatus] provisioningState: Union[str, ProvisioningState] recoveryGroupId: str recoveryResourceUniqueId: str + resiliencyResourceProperties: RecoveryResourceResiliencyProperties resourceId: str resourceLocation: str resourcePhysicalZones: list[str] @@ -6858,6 +7794,13 @@ namespace azure.mgmt.resiliencemanagement.types systemMetadata: SystemMetadata + class azure.mgmt.resiliencemanagement.types.RegionalObjectives(TypedDict, total=False): + key "targetRecoveryPointObjective": Required[Union[str, IsoDuration]] + key "targetRecoveryTimeObjective": Required[Union[str, IsoDuration]] + targetRecoveryPointObjective: Union[str, IsoDuration] + targetRecoveryTimeObjective: Union[str, IsoDuration] + + class azure.mgmt.resiliencemanagement.types.ReprotectRequest(TypedDict, total=False): key "reprotectRequestProperties": ForwardRef('ReprotectRequestProperties', module='types') reprotectRequestProperties: ReprotectRequestProperties @@ -6877,6 +7820,11 @@ namespace azure.mgmt.resiliencemanagement.types userConfirmation: list[UserConfirmationItem] + class azure.mgmt.resiliencemanagement.types.ResiliencyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + CYBER_RESILIENCY = "CyberResiliency" + INFRASTRUCTURE_RESILIENCY = "InfrastructureResiliency" + + class azure.mgmt.resiliencemanagement.types.Resource(TypedDict, total=False): key "id": str key "name": str @@ -6888,6 +7836,22 @@ namespace azure.mgmt.resiliencemanagement.types type: str + class azure.mgmt.resiliencemanagement.types.ResourceAzureTemplateProtectionSetting(TypedDict, total=False): + key "deploymentLocation": str + key "deploymentScope": Required[str] + key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.AZURE_TEMPLATE]] + key "templateSpecVersionId": Required[str] + deploymentLocation: str + deploymentScope: str + protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_TEMPLATE] + templateSpecVersionId: str + + + class azure.mgmt.resiliencemanagement.types.ResourceCosmosDBProtectionSetting(TypedDict, total=False): + key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.AZURE_COSMOS_DB]] + protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_COSMOS_DB] + + class azure.mgmt.resiliencemanagement.types.ResourceCrossZoneVmRecoveryProtectionSetting(TypedDict, total=False): key "capacityReservationGroupId": str key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.CROSS_ZONE_VM_RECOVERY]] @@ -6928,6 +7892,11 @@ namespace azure.mgmt.resiliencemanagement.types protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_NATIVE] + class azure.mgmt.resiliencemanagement.types.ResourceNetAppFilesProtectionSetting(TypedDict, total=False): + key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.AZURE_NET_APP_FILES]] + protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_NET_APP_FILES] + + class azure.mgmt.resiliencemanagement.types.ResourceProtectionSolutionSettings(TypedDict, total=False): key "activeLocation": str key "failoverState": Union[str, FailoverState] @@ -6935,6 +7904,7 @@ namespace azure.mgmt.resiliencemanagement.types key "primaryResource": str key "protectionSolutionType": Union[str, ResourceProtectionSolutionType] key "protectionStatus": Union[str, ResourceProtectionStatus] + key "replicationMode": Union[str, ReplicationMode] key "replicationRole": Union[str, ResourceReplicationRole] key "resourceId": str key "testFailoverState": Union[str, TestFailoverState] @@ -6948,19 +7918,30 @@ namespace azure.mgmt.resiliencemanagement.types protectionStatus: Union[str, ResourceProtectionStatus] recoveryLocations: list[str] replicaResources: list[str] + replicationMode: Union[str, ReplicationMode] replicationRole: Union[str, ResourceReplicationRole] resourceId: str testFailoverState: Union[str, TestFailoverState] class azure.mgmt.resiliencemanagement.types.ResourceProtectionSolutionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + AZURE_COSMOS_DB = "AzureCosmosDB" AZURE_NATIVE = "AzureNative" + AZURE_NET_APP_FILES = "AzureNetAppFiles" + AZURE_SERVICE_BUS = "AzureServiceBus" AZURE_SITE_RECOVERY = "AzureSiteRecovery" + AZURE_STORAGE_ACCOUNT = "AzureStorageAccount" + AZURE_TEMPLATE = "AzureTemplate" CROSS_ZONE_VM_RECOVERY = "CrossZoneVMRecovery" CUSTOM_RUNBOOK = "CustomRunbook" NONE = "None" + class azure.mgmt.resiliencemanagement.types.ResourceServiceBusProtectionSetting(TypedDict, total=False): + key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.AZURE_SERVICE_BUS]] + protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_SERVICE_BUS] + + class azure.mgmt.resiliencemanagement.types.ResourceSiteRecoveryProtectionSetting(TypedDict, total=False): key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.AZURE_SITE_RECOVERY]] key "reprotectParams": ForwardRef('ResourceSiteRecoveryReprotectParams', module='types') @@ -6986,6 +7967,11 @@ namespace azure.mgmt.resiliencemanagement.types networkResourceId: str + class azure.mgmt.resiliencemanagement.types.ResourceStorageAccountProtectionSetting(TypedDict, total=False): + key "protectionSolutionType": Required[Literal[ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT]] + protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT] + + class azure.mgmt.resiliencemanagement.types.ServiceLevelResource(TypedDict, total=False): key "serviceLevelIndicatorResourceId": Required[str] serviceLevelIndicatorResourceId: str @@ -7040,6 +8026,30 @@ namespace azure.mgmt.resiliencemanagement.types resourceTypeCategories: list[Union[str, ResourceTypeCategories]] + class azure.mgmt.resiliencemanagement.types.TargetEnvironment(TypedDict, total=False): + key "targetLocations": Required[list[str]] + key "targetSubscriptionIds": Required[list[str]] + targetLocations: list[str] + targetSubscriptionIds: list[str] + + + class azure.mgmt.resiliencemanagement.types.TargetResourceSpec(TypedDict, total=False): + key "armResourceType": Required[str] + key "provisioningMode": Union[str, TargetProvisioningMode] + key "resourceId": str + armResourceType: str + dependsOn: list[str] + provisioningMode: Union[str, TargetProvisioningMode] + resourceId: str + + + class azure.mgmt.resiliencemanagement.types.TargetScope(TypedDict, total=False): + key "location": Required[str] + key "subscriptionId": Required[str] + location: str + subscriptionId: str + + class azure.mgmt.resiliencemanagement.types.TestFailoverCleanupRequest(TypedDict, total=False): key "comments": str comments: str @@ -7130,6 +8140,37 @@ namespace azure.mgmt.resiliencemanagement.types operationName: Union[str, RecoveryOperationNames] + class azure.mgmt.resiliencemanagement.types.VmRecoveryConfig(TypedDict, total=False): + key "diskEncryptionSet": ForwardRef('TargetResourceSpec', module='types') + key "identity": ForwardRef('ManagedServiceIdentity', module='types') + key "recoveryType": Union[str, RecoveryType] + key "resourceGroup": Required[TargetResourceSpec] + key "storageAccount": Required[TargetResourceSpec] + key "subnet": Required[TargetResourceSpec] + key "targetNamePrefix": str + key "virtualNetwork": Required[TargetResourceSpec] + key "workloadType": Required[Literal[WorkloadType.AZURE_VM]] + diskEncryptionSet: TargetResourceSpec + identity: ManagedServiceIdentity + recoveryType: Union[str, RecoveryType] + resourceGroup: TargetResourceSpec + storageAccount: TargetResourceSpec + subnet: TargetResourceSpec + targetNamePrefix: str + virtualNetwork: TargetResourceSpec + workloadType: Literal[WorkloadType.AZURE_VM] + zones: list[str] + + + class azure.mgmt.resiliencemanagement.types.WorkloadType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + AZURE_FILE_SHARE = "AzureFileShare" + AZURE_VM = "AzureVm" + ORACLE_IN_AZURE_VM = "OracleInAzureVm" + SAP_ASE_IN_AZURE_VM = "SapAseInAzureVm" + SAP_HANA_IN_AZURE_VM = "SapHanaInAzureVm" + SQL_DATABASE_IN_AZURE_VM = "SqlDatabaseInAzureVm" + + class azure.mgmt.resiliencemanagement.types.ZonalDrillProperties(TypedDict, total=False): key "attentionReason": ForwardRef('AttentionReason', module='types') key "chaosResourceProperties": ForwardRef('ChaosResourcePropertiesOfDrill', module='types') diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.metadata.yml b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.metadata.yml index ae73e3f77615..fddad57fa77b 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.metadata.yml +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/api.metadata.yml @@ -1,4 +1,4 @@ -apiMdSha256: d77367d635313bc3056d59f92a92dce202b7b86694a503edd24e9ff036fad1ab -packageVersion: 1.0.0 +apiHash: 3d1d2357ac60e9de57eb77022d41dcc11c3aa140ea9196e4f00fe0e984c9f4fd +packageVersion: 1.1.0b1 parserVersion: 0.3.31 -pythonVersion: 3.13.15 +pythonVersion: 3.13.16 diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/apiview-properties.json b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/apiview-properties.json index df3d2ac5fc79..9a7b2fd5e50d 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/apiview-properties.json +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/apiview-properties.json @@ -8,6 +8,12 @@ "azure.mgmt.resiliencemanagement.models.AttentionReason": "Microsoft.AzureResilienceManagement.AttentionReason", "azure.mgmt.resiliencemanagement.models.ChaosResourcePropertiesOfDrill": "Microsoft.AzureResilienceManagement.ChaosResourcePropertiesOfDrill", "azure.mgmt.resiliencemanagement.models.CustomFaultDetails": "Microsoft.AzureResilienceManagement.CustomFaultDetails", + "azure.mgmt.resiliencemanagement.models.RecoveryGroupResiliencyProperties": "Microsoft.AzureResilienceManagement.RecoveryGroupResiliencyProperties", + "azure.mgmt.resiliencemanagement.models.CyberResiliencyGroupProperties": "Microsoft.AzureResilienceManagement.CyberResiliencyGroupProperties", + "azure.mgmt.resiliencemanagement.models.RecoveryPlanResiliencyProperties": "Microsoft.AzureResilienceManagement.RecoveryPlanResiliencyProperties", + "azure.mgmt.resiliencemanagement.models.CyberResiliencyPlanProperties": "Microsoft.AzureResilienceManagement.CyberResiliencyPlanProperties", + "azure.mgmt.resiliencemanagement.models.RecoveryResourceResiliencyProperties": "Microsoft.AzureResilienceManagement.RecoveryResourceResiliencyProperties", + "azure.mgmt.resiliencemanagement.models.CyberResiliencyResourceProperties": "Microsoft.AzureResilienceManagement.CyberResiliencyResourceProperties", "azure.mgmt.resiliencemanagement.models.DiskReprotectInputDetails": "Microsoft.AzureResilienceManagement.DiskReprotectInputDetails", "azure.mgmt.resiliencemanagement.models.Resource": "Azure.ResourceManager.CommonTypes.Resource", "azure.mgmt.resiliencemanagement.models.ProxyResource": "Azure.ResourceManager.CommonTypes.ProxyResource", @@ -30,6 +36,7 @@ "azure.mgmt.resiliencemanagement.models.DrillStartRequest": "Microsoft.AzureResilienceManagement.DrillStartRequest", "azure.mgmt.resiliencemanagement.models.DrillUpdate": "Azure.ResourceManager.Foundations.ResourceUpdateModel", "azure.mgmt.resiliencemanagement.models.DrillUpdateProperties": "Azure.ResourceManager.Foundations.ResourceUpdateModelProperties", + "azure.mgmt.resiliencemanagement.models.EffectiveConfiguration": "Microsoft.AzureResilienceManagement.EffectiveConfiguration", "azure.mgmt.resiliencemanagement.models.Enrollment": "Microsoft.AzureResilienceManagement.Enrollment", "azure.mgmt.resiliencemanagement.models.EnrollmentProperties": "Microsoft.AzureResilienceManagement.EnrollmentProperties", "azure.mgmt.resiliencemanagement.models.ErrorAdditionalInfo": "Azure.ResourceManager.CommonTypes.ErrorAdditionalInfo", @@ -41,6 +48,8 @@ "azure.mgmt.resiliencemanagement.models.FailoverRequestProperties": "Microsoft.AzureResilienceManagement.FailoverRequestProperties", "azure.mgmt.resiliencemanagement.models.FaultDetails": "Microsoft.AzureResilienceManagement.FaultDetails", "azure.mgmt.resiliencemanagement.models.FaultProperties": "Microsoft.AzureResilienceManagement.FaultProperties", + "azure.mgmt.resiliencemanagement.models.WorkloadConfig": "Microsoft.AzureResilienceManagement.WorkloadConfig", + "azure.mgmt.resiliencemanagement.models.FileShareRecoveryConfig": "Microsoft.AzureResilienceManagement.FileShareRecoveryConfig", "azure.mgmt.resiliencemanagement.models.GoalAssignment": "Microsoft.AzureResilienceManagement.GoalAssignment", "azure.mgmt.resiliencemanagement.models.GoalAssignmentProperties": "Microsoft.AzureResilienceManagement.GoalAssignmentProperties", "azure.mgmt.resiliencemanagement.models.GoalAssignmentPropertiesOfDrill": "Microsoft.AzureResilienceManagement.GoalAssignmentPropertiesOfDrill", @@ -49,6 +58,9 @@ "azure.mgmt.resiliencemanagement.models.GoalsData": "Microsoft.AzureResilienceManagement.GoalsData", "azure.mgmt.resiliencemanagement.models.HealthModelMonitoringProperties": "Microsoft.AzureResilienceManagement.HealthModelMonitoringProperties", "azure.mgmt.resiliencemanagement.models.IncludeOrUpdateResource": "Microsoft.AzureResilienceManagement.IncludeOrUpdateResource", + "azure.mgmt.resiliencemanagement.models.InfrastructureResiliencyGroupProperties": "Microsoft.AzureResilienceManagement.InfrastructureResiliencyGroupProperties", + "azure.mgmt.resiliencemanagement.models.InfrastructureResiliencyPlanProperties": "Microsoft.AzureResilienceManagement.InfrastructureResiliencyPlanProperties", + "azure.mgmt.resiliencemanagement.models.InfrastructureResiliencyResourceProperties": "Microsoft.AzureResilienceManagement.InfrastructureResiliencyResourceProperties", "azure.mgmt.resiliencemanagement.models.JobErrorInfo": "Microsoft.AzureResilienceManagement.JobErrorInfo", "azure.mgmt.resiliencemanagement.models.JobExtendedInfo": "Microsoft.AzureResilienceManagement.JobExtendedInfo", "azure.mgmt.resiliencemanagement.models.JobRetryDetails": "Microsoft.AzureResilienceManagement.JobRetryDetails", @@ -64,8 +76,12 @@ "azure.mgmt.resiliencemanagement.models.OperationDisplay": "Azure.ResourceManager.CommonTypes.OperationDisplay", "azure.mgmt.resiliencemanagement.models.OperationQualificationDetails": "Microsoft.AzureResilienceManagement.OperationQualificationDetails", "azure.mgmt.resiliencemanagement.models.OperationStatusResult": "Azure.ResourceManager.CommonTypes.OperationStatusResult", + "azure.mgmt.resiliencemanagement.models.ProtectedItemDetails": "Microsoft.AzureResilienceManagement.ProtectedItemDetails", "azure.mgmt.resiliencemanagement.models.RecommendCapacityRequest": "Microsoft.AzureResilienceManagement.RecommendCapacityRequest", "azure.mgmt.resiliencemanagement.models.RecoveryActionRequest": "Microsoft.AzureResilienceManagement.RecoveryActionRequest", + "azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile": "Microsoft.AzureResilienceManagement.RecoveryConfigProfile", + "azure.mgmt.resiliencemanagement.models.RecoveryConfigProfileAssociation": "Microsoft.AzureResilienceManagement.RecoveryConfigProfileAssociation", + "azure.mgmt.resiliencemanagement.models.RecoveryConfigProfileProperties": "Microsoft.AzureResilienceManagement.RecoveryConfigProfileProperties", "azure.mgmt.resiliencemanagement.models.RecoveryGroup": "Microsoft.AzureResilienceManagement.RecoveryGroup", "azure.mgmt.resiliencemanagement.models.RecoveryGroupActionSettings": "Microsoft.AzureResilienceManagement.RecoveryGroupActionSettings", "azure.mgmt.resiliencemanagement.models.RecoveryGroupBaseAction": "Microsoft.AzureResilienceManagement.RecoveryGroupBaseAction", @@ -83,27 +99,34 @@ "azure.mgmt.resiliencemanagement.models.RecoveryPlanOperationStatus": "Microsoft.AzureResilienceManagement.RecoveryPlanOperationStatus", "azure.mgmt.resiliencemanagement.models.RecoveryPlanProperties": "Microsoft.AzureResilienceManagement.RecoveryPlanProperties", "azure.mgmt.resiliencemanagement.models.RecoveryPlanPropertiesOfDrill": "Microsoft.AzureResilienceManagement.RecoveryPlanPropertiesOfDrill", + "azure.mgmt.resiliencemanagement.models.RecoveryPointPolicy": "Microsoft.AzureResilienceManagement.RecoveryPointPolicy", "azure.mgmt.resiliencemanagement.models.RecoveryResource": "Microsoft.AzureResilienceManagement.RecoveryResource", "azure.mgmt.resiliencemanagement.models.RecoveryResourceProperties": "Microsoft.AzureResilienceManagement.RecoveryResourceProperties", "azure.mgmt.resiliencemanagement.models.RecoveryResourceQualification": "Microsoft.AzureResilienceManagement.RecoveryResourceQualification", "azure.mgmt.resiliencemanagement.models.RegionalDrillProperties": "Microsoft.AzureResilienceManagement.RegionalDrillProperties", "azure.mgmt.resiliencemanagement.models.RegionalDrillResourceProperties": "Microsoft.AzureResilienceManagement.RegionalDrillResourceProperties", + "azure.mgmt.resiliencemanagement.models.RegionalObjectives": "Microsoft.AzureResilienceManagement.RegionalObjectives", "azure.mgmt.resiliencemanagement.models.ReportStageStatus": "Microsoft.AzureResilienceManagement.ReportStageStatus", "azure.mgmt.resiliencemanagement.models.ReprotectRequest": "Microsoft.AzureResilienceManagement.ReprotectRequest", "azure.mgmt.resiliencemanagement.models.ReprotectRequestProperties": "Microsoft.AzureResilienceManagement.ReprotectRequestProperties", "azure.mgmt.resiliencemanagement.models.ResiliencyProperties": "Microsoft.AzureResilienceManagement.ResiliencyProperties", "azure.mgmt.resiliencemanagement.models.ResourceBaseProtectionSolutionSetting": "Microsoft.AzureResilienceManagement.ResourceBaseProtectionSolutionSetting", + "azure.mgmt.resiliencemanagement.models.ResourceAzureTemplateProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceAzureTemplateProtectionSetting", + "azure.mgmt.resiliencemanagement.models.ResourceCosmosDBProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceCosmosDBProtectionSetting", "azure.mgmt.resiliencemanagement.models.ResourceCrossZoneVmRecoveryProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceCrossZoneVmRecoveryProtectionSetting", "azure.mgmt.resiliencemanagement.models.ResourceCustomProtectionAction": "Microsoft.AzureResilienceManagement.ResourceCustomProtectionAction", "azure.mgmt.resiliencemanagement.models.ResourceCustomProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceCustomProtectionSetting", "azure.mgmt.resiliencemanagement.models.ResourceFeasibilityReview": "Microsoft.AzureResilienceManagement.ResourceFeasibilityReview", "azure.mgmt.resiliencemanagement.models.ResourceLists": "Microsoft.AzureResilienceManagement.ResourceLists", "azure.mgmt.resiliencemanagement.models.ResourceNativeProtectionSolutionSetting": "Microsoft.AzureResilienceManagement.ResourceNativeProtectionSolutionSetting", + "azure.mgmt.resiliencemanagement.models.ResourceNetAppFilesProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceNetAppFilesProtectionSetting", "azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionSettings": "Microsoft.AzureResilienceManagement.ResourceProtectionSolutionSettings", + "azure.mgmt.resiliencemanagement.models.ResourceServiceBusProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceServiceBusProtectionSetting", "azure.mgmt.resiliencemanagement.models.ResourceSiteRecoveryProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceSiteRecoveryProtectionSetting", "azure.mgmt.resiliencemanagement.models.ResourceSiteRecoveryReprotectParams": "Microsoft.AzureResilienceManagement.ResourceSiteRecoveryReprotectParams", "azure.mgmt.resiliencemanagement.models.ResourceSiteRecoveryTestFailoverCleanupParams": "Microsoft.AzureResilienceManagement.ResourceSiteRecoveryTestFailoverCleanupParams", "azure.mgmt.resiliencemanagement.models.ResourceSiteRecoveryTestFailoverParams": "Microsoft.AzureResilienceManagement.ResourceSiteRecoveryTestFailoverParams", + "azure.mgmt.resiliencemanagement.models.ResourceStorageAccountProtectionSetting": "Microsoft.AzureResilienceManagement.ResourceStorageAccountProtectionSetting", "azure.mgmt.resiliencemanagement.models.ServiceLevelResource": "Microsoft.AzureResilienceManagement.ServiceLevelResource", "azure.mgmt.resiliencemanagement.models.SkuDetails": "Microsoft.AzureResilienceManagement.SkuDetails", "azure.mgmt.resiliencemanagement.models.SliAttentionStatus": "Microsoft.AzureResilienceManagement.SliAttentionStatus", @@ -112,12 +135,16 @@ "azure.mgmt.resiliencemanagement.models.SupportedVerbsForStage": "Microsoft.AzureResilienceManagement.SupportedVerbsForStage", "azure.mgmt.resiliencemanagement.models.SystemData": "Azure.ResourceManager.CommonTypes.SystemData", "azure.mgmt.resiliencemanagement.models.SystemMetadata": "Microsoft.AzureResilienceManagement.SystemMetadata", + "azure.mgmt.resiliencemanagement.models.TargetEnvironment": "Microsoft.AzureResilienceManagement.TargetEnvironment", + "azure.mgmt.resiliencemanagement.models.TargetResourceSpec": "Microsoft.AzureResilienceManagement.TargetResourceSpec", + "azure.mgmt.resiliencemanagement.models.TargetScope": "Microsoft.AzureResilienceManagement.TargetScope", "azure.mgmt.resiliencemanagement.models.TestFailoverCleanupRequest": "Microsoft.AzureResilienceManagement.TestFailoverCleanupRequest", "azure.mgmt.resiliencemanagement.models.TrackedResource": "Azure.ResourceManager.CommonTypes.TrackedResource", "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItem": "Microsoft.AzureResilienceManagement.UnifiedResilienceItem", "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemBillingInfo": "Microsoft.AzureResilienceManagement.UnifiedResilienceItemBillingInfo", "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemGoalRequirement": "Microsoft.AzureResilienceManagement.UnifiedResilienceItemGoalRequirement", "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemProperties": "Microsoft.AzureResilienceManagement.UnifiedResilienceItemProperties", + "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemRegionalResiliencyPosture": "Microsoft.AzureResilienceManagement.UnifiedResilienceItemRegionalResiliencyPosture", "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemResiliencyPosture": "Microsoft.AzureResilienceManagement.UnifiedResilienceItemResiliencyPosture", "azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemZonalResiliencyPosture": "Microsoft.AzureResilienceManagement.UnifiedResilienceItemZonalResiliencyPosture", "azure.mgmt.resiliencemanagement.models.UpdateGoalResourceRequest": "Microsoft.AzureResilienceManagement.UpdateGoalResourceRequest", @@ -132,11 +159,13 @@ "azure.mgmt.resiliencemanagement.models.ValidateForExecutionRequest": "Microsoft.AzureResilienceManagement.ValidateForExecutionRequest", "azure.mgmt.resiliencemanagement.models.ValidateForOperationRequest": "Microsoft.AzureResilienceManagement.ValidateForOperationRequest", "azure.mgmt.resiliencemanagement.models.ValidateForRecoveryOperationBaseResponse": "Microsoft.AzureResilienceManagement.ValidateForRecoveryOperationBaseResponse", + "azure.mgmt.resiliencemanagement.models.VmRecoveryConfig": "Microsoft.AzureResilienceManagement.VmRecoveryConfig", "azure.mgmt.resiliencemanagement.models.ZonalDrillProperties": "Microsoft.AzureResilienceManagement.ZonalDrillProperties", "azure.mgmt.resiliencemanagement.models.ZonalDrillResourceProperties": "Microsoft.AzureResilienceManagement.ZonalDrillResourceProperties", "azure.mgmt.resiliencemanagement.models.Origin": "Azure.ResourceManager.CommonTypes.Origin", "azure.mgmt.resiliencemanagement.models.ActionType": "Azure.ResourceManager.CommonTypes.ActionType", "azure.mgmt.resiliencemanagement.models.CreatedByType": "Azure.ResourceManager.CommonTypes.createdByType", + "azure.mgmt.resiliencemanagement.models.IsoDuration": "Microsoft.AzureResilienceManagement.IsoDuration", "azure.mgmt.resiliencemanagement.models.ProvisioningState": "Microsoft.AzureResilienceManagement.ProvisioningState", "azure.mgmt.resiliencemanagement.models.ExclusionState": "Microsoft.AzureResilienceManagement.ExclusionState", "azure.mgmt.resiliencemanagement.models.AttestationState": "Microsoft.AzureResilienceManagement.AttestationState", @@ -148,13 +177,25 @@ "azure.mgmt.resiliencemanagement.models.RecoveryPlanState": "Microsoft.AzureResilienceManagement.RecoveryPlanState", "azure.mgmt.resiliencemanagement.models.RecoveryGroupActionType": "Microsoft.AzureResilienceManagement.RecoveryGroupActionType", "azure.mgmt.resiliencemanagement.models.ManagedServiceIdentityType": "Azure.ResourceManager.CommonTypes.ManagedServiceIdentityType", + "azure.mgmt.resiliencemanagement.models.ResiliencyType": "Microsoft.AzureResilienceManagement.ResiliencyType", + "azure.mgmt.resiliencemanagement.models.WorkloadType": "Microsoft.AzureResilienceManagement.WorkloadType", "azure.mgmt.resiliencemanagement.models.RecoveryOperationStatus": "Microsoft.AzureResilienceManagement.RecoveryOperationStatus", + "azure.mgmt.resiliencemanagement.models.TargetProvisioningMode": "Microsoft.AzureResilienceManagement.TargetProvisioningMode", + "azure.mgmt.resiliencemanagement.models.CopyOptions": "Microsoft.AzureResilienceManagement.CopyOptions", + "azure.mgmt.resiliencemanagement.models.RecoveryType": "Microsoft.AzureResilienceManagement.RecoveryType", + "azure.mgmt.resiliencemanagement.models.RecoveryPointPolicyType": "Microsoft.AzureResilienceManagement.RecoveryPointPolicyType", + "azure.mgmt.resiliencemanagement.models.BackupType": "Microsoft.AzureResilienceManagement.BackupType", + "azure.mgmt.resiliencemanagement.models.RecoveryPointHealthStatus": "Microsoft.AzureResilienceManagement.RecoveryPointHealthStatus", "azure.mgmt.resiliencemanagement.models.ResourceInclusionState": "Microsoft.AzureResilienceManagement.ResourceInclusionState", + "azure.mgmt.resiliencemanagement.models.ResourceInclusionDisabledReason": "Microsoft.AzureResilienceManagement.ResourceInclusionDisabledReason", "azure.mgmt.resiliencemanagement.models.ResourceProtectionStatus": "Microsoft.AzureResilienceManagement.ResourceProtectionStatus", "azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType": "Microsoft.AzureResilienceManagement.ResourceProtectionSolutionType", + "azure.mgmt.resiliencemanagement.models.ReplicationMode": "Microsoft.AzureResilienceManagement.ReplicationMode", "azure.mgmt.resiliencemanagement.models.ResourceReplicationRole": "Microsoft.AzureResilienceManagement.ResourceReplicationRole", "azure.mgmt.resiliencemanagement.models.FailoverState": "Microsoft.AzureResilienceManagement.FailoverState", "azure.mgmt.resiliencemanagement.models.TestFailoverState": "Microsoft.AzureResilienceManagement.TestFailoverState", + "azure.mgmt.resiliencemanagement.models.ResourceProtectionState": "Microsoft.AzureResilienceManagement.ResourceProtectionState", + "azure.mgmt.resiliencemanagement.models.RecoveryResourceInclusionEligibility": "Microsoft.AzureResilienceManagement.RecoveryResourceInclusionEligibility", "azure.mgmt.resiliencemanagement.models.RecoveryOperationNames": "Microsoft.AzureResilienceManagement.RecoveryOperationNames", "azure.mgmt.resiliencemanagement.models.QualificationState": "Microsoft.AzureResilienceManagement.QualificationState", "azure.mgmt.resiliencemanagement.models.ResourceFeasibilityReviewType": "Microsoft.AzureResilienceManagement.ResourceFeasibilityReviewType", @@ -193,6 +234,9 @@ "azure.mgmt.resiliencemanagement.models.DrillResourceReadinessState": "Microsoft.AzureResilienceManagement.DrillResourceReadinessState", "azure.mgmt.resiliencemanagement.models.DrillResourceFaultState": "Microsoft.AzureResilienceManagement.DrillResourceFaultState", "azure.mgmt.resiliencemanagement.models.DrillResourceState": "Microsoft.AzureResilienceManagement.DrillResourceState", + "azure.mgmt.resiliencemanagement.models.FaultEligibility": "Microsoft.AzureResilienceManagement.FaultEligibility", + "azure.mgmt.resiliencemanagement.models.FaultIneligibleReason": "Microsoft.AzureResilienceManagement.FaultIneligibleReason", + "azure.mgmt.resiliencemanagement.models.RegionalResiliencyStatus": "Microsoft.AzureResilienceManagement.RegionalResiliencyStatus", "azure.mgmt.resiliencemanagement.models.HAStatus": "Microsoft.AzureResilienceManagement.HAStatus", "azure.mgmt.resiliencemanagement.models.AutoFailover": "Microsoft.AzureResilienceManagement.AutoFailover", "azure.mgmt.resiliencemanagement.models.UsagePlanType": "Microsoft.AzureResilienceManagement.UsagePlanType", @@ -230,6 +274,16 @@ "azure.mgmt.resiliencemanagement.aio.operations.RecoveryPlansOperations.begin_delete": "Microsoft.AzureResilienceManagement.RecoveryPlans.delete", "azure.mgmt.resiliencemanagement.operations.RecoveryPlansOperations.list": "Microsoft.AzureResilienceManagement.RecoveryPlans.list", "azure.mgmt.resiliencemanagement.aio.operations.RecoveryPlansOperations.list": "Microsoft.AzureResilienceManagement.RecoveryPlans.list", + "azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations.get": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.get", + "azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations.get": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.get", + "azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations.begin_create_or_update": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.createOrUpdate", + "azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations.begin_create_or_update": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.createOrUpdate", + "azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations.begin_update": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.update", + "azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations.begin_update": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.update", + "azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations.list": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.list", + "azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations.list": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.list", + "azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations.begin_delete": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.delete", + "azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations.begin_delete": "Microsoft.AzureResilienceManagement.RecoveryConfigProfiles.delete", "azure.mgmt.resiliencemanagement.operations.RecoveryPlanActionsOperations.begin_finalize": "Microsoft.AzureResilienceManagement.RecoveryPlanActions.finalize", "azure.mgmt.resiliencemanagement.aio.operations.RecoveryPlanActionsOperations.begin_finalize": "Microsoft.AzureResilienceManagement.RecoveryPlanActions.finalize", "azure.mgmt.resiliencemanagement.operations.RecoveryPlanActionsOperations.begin_update_resources": "Microsoft.AzureResilienceManagement.RecoveryPlanActions.updateResources", @@ -347,5 +401,5 @@ "azure.mgmt.resiliencemanagement.operations.EnrollmentsOperations.list": "Microsoft.AzureResilienceManagement.Enrollments.list", "azure.mgmt.resiliencemanagement.aio.operations.EnrollmentsOperations.list": "Microsoft.AzureResilienceManagement.Enrollments.list" }, - "CrossLanguageVersion": "94e34463be02" + "CrossLanguageVersion": "50ef131af84d" } \ No newline at end of file diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_client.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_client.py index 46d313c5ae6b..e469a9151d5f 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_client.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_client.py @@ -30,6 +30,7 @@ GoalResourcesOperations, OperationStatusOperations, Operations, + RecoveryConfigProfilesOperations, RecoveryJobResourcesOperations, RecoveryJobsOperations, RecoveryPlanActionsOperations, @@ -62,6 +63,9 @@ class ResilienceManagementClient: # pylint: disable=too-many-instance-attribute :vartype goal_resources: azure.mgmt.resiliencemanagement.operations.GoalResourcesOperations :ivar recovery_plans: RecoveryPlansOperations operations :vartype recovery_plans: azure.mgmt.resiliencemanagement.operations.RecoveryPlansOperations + :ivar recovery_config_profiles: RecoveryConfigProfilesOperations operations + :vartype recovery_config_profiles: + azure.mgmt.resiliencemanagement.operations.RecoveryConfigProfilesOperations :ivar recovery_plan_actions: RecoveryPlanActionsOperations operations :vartype recovery_plan_actions: azure.mgmt.resiliencemanagement.operations.RecoveryPlanActionsOperations @@ -98,9 +102,10 @@ class ResilienceManagementClient: # pylint: disable=too-many-instance-attribute :keyword cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :paramtype cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are "2026-10-01" - and None. Default value is None. If not set, the operation's default API version will be used. - Note that overriding this default value may result in unsupported behavior. + :keyword api_version: The API version to use for this operation. Known values are + "2026-11-30-preview" and None. Default value is None. If not set, the operation's default API + version will be used. Note that overriding this default value may result in unsupported + behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -162,6 +167,9 @@ def __init__( ) self.goal_resources = GoalResourcesOperations(self._client, self._config, self._serialize, self._deserialize) self.recovery_plans = RecoveryPlansOperations(self._client, self._config, self._serialize, self._deserialize) + self.recovery_config_profiles = RecoveryConfigProfilesOperations( + self._client, self._config, self._serialize, self._deserialize + ) self.recovery_plan_actions = RecoveryPlanActionsOperations( self._client, self._config, self._serialize, self._deserialize ) diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_configuration.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_configuration.py index c71684a2770b..8e23f8a1a354 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_configuration.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_configuration.py @@ -34,9 +34,10 @@ class ResilienceManagementClientConfiguration: # pylint: disable=too-many-insta :param cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :type cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are "2026-10-01" - and None. Default value is None. If not set, the operation's default API version will be used. - Note that overriding this default value may result in unsupported behavior. + :keyword api_version: The API version to use for this operation. Known values are + "2026-11-30-preview" and None. Default value is None. If not set, the operation's default API + version will be used. Note that overriding this default value may result in unsupported + behavior. :paramtype api_version: str """ @@ -48,7 +49,7 @@ def __init__( cloud_setting: Optional["AzureClouds"] = None, **kwargs: Any ) -> None: - api_version: str = kwargs.pop("api_version", "2026-10-01") + api_version: str = kwargs.pop("api_version", "2026-11-30-preview") if credential is None: raise ValueError("Parameter 'credential' must not be None.") diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_version.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_version.py index 0ec13ea52bbf..a1f432eddc4e 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_version.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "1.0.0" +VERSION = "1.1.0b1" diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_client.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_client.py index 1fca5fc618de..58e1b25372cc 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_client.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_client.py @@ -30,6 +30,7 @@ GoalResourcesOperations, OperationStatusOperations, Operations, + RecoveryConfigProfilesOperations, RecoveryJobResourcesOperations, RecoveryJobsOperations, RecoveryPlanActionsOperations, @@ -64,6 +65,9 @@ class ResilienceManagementClient: # pylint: disable=too-many-instance-attribute :vartype goal_resources: azure.mgmt.resiliencemanagement.aio.operations.GoalResourcesOperations :ivar recovery_plans: RecoveryPlansOperations operations :vartype recovery_plans: azure.mgmt.resiliencemanagement.aio.operations.RecoveryPlansOperations + :ivar recovery_config_profiles: RecoveryConfigProfilesOperations operations + :vartype recovery_config_profiles: + azure.mgmt.resiliencemanagement.aio.operations.RecoveryConfigProfilesOperations :ivar recovery_plan_actions: RecoveryPlanActionsOperations operations :vartype recovery_plan_actions: azure.mgmt.resiliencemanagement.aio.operations.RecoveryPlanActionsOperations @@ -101,9 +105,10 @@ class ResilienceManagementClient: # pylint: disable=too-many-instance-attribute :keyword cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :paramtype cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are "2026-10-01" - and None. Default value is None. If not set, the operation's default API version will be used. - Note that overriding this default value may result in unsupported behavior. + :keyword api_version: The API version to use for this operation. Known values are + "2026-11-30-preview" and None. Default value is None. If not set, the operation's default API + version will be used. Note that overriding this default value may result in unsupported + behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -167,6 +172,9 @@ def __init__( ) self.goal_resources = GoalResourcesOperations(self._client, self._config, self._serialize, self._deserialize) self.recovery_plans = RecoveryPlansOperations(self._client, self._config, self._serialize, self._deserialize) + self.recovery_config_profiles = RecoveryConfigProfilesOperations( + self._client, self._config, self._serialize, self._deserialize + ) self.recovery_plan_actions = RecoveryPlanActionsOperations( self._client, self._config, self._serialize, self._deserialize ) diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_configuration.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_configuration.py index 9b274f6665e5..aa9bd9a3f80b 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_configuration.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/_configuration.py @@ -34,9 +34,10 @@ class ResilienceManagementClientConfiguration: # pylint: disable=too-many-insta :param cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :type cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are "2026-10-01" - and None. Default value is None. If not set, the operation's default API version will be used. - Note that overriding this default value may result in unsupported behavior. + :keyword api_version: The API version to use for this operation. Known values are + "2026-11-30-preview" and None. Default value is None. If not set, the operation's default API + version will be used. Note that overriding this default value may result in unsupported + behavior. :paramtype api_version: str """ @@ -48,7 +49,7 @@ def __init__( cloud_setting: Optional["AzureClouds"] = None, **kwargs: Any ) -> None: - api_version: str = kwargs.pop("api_version", "2026-10-01") + api_version: str = kwargs.pop("api_version", "2026-11-30-preview") if credential is None: raise ValueError("Parameter 'credential' must not be None.") diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/__init__.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/__init__.py index 3591d1f2d1b8..41e9ac31f3d6 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/__init__.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/__init__.py @@ -17,6 +17,7 @@ from ._operations import GoalAssignmentsOperations # type: ignore from ._operations import GoalResourcesOperations # type: ignore from ._operations import RecoveryPlansOperations # type: ignore +from ._operations import RecoveryConfigProfilesOperations # type: ignore from ._operations import RecoveryPlanActionsOperations # type: ignore from ._operations import RecoveryResourcesOperations # type: ignore from ._operations import RecoveryJobsOperations # type: ignore @@ -39,6 +40,7 @@ "GoalAssignmentsOperations", "GoalResourcesOperations", "RecoveryPlansOperations", + "RecoveryConfigProfilesOperations", "RecoveryPlanActionsOperations", "RecoveryResourcesOperations", "RecoveryJobsOperations", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/_operations.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/_operations.py index 9310f9e3a567..1f127b695e0b 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/_operations.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/aio/operations/_operations.py @@ -77,6 +77,11 @@ build_goal_resources_list_request, build_operation_status_get_request, build_operations_list_request, + build_recovery_config_profiles_create_or_update_request, + build_recovery_config_profiles_delete_request, + build_recovery_config_profiles_get_request, + build_recovery_config_profiles_list_request, + build_recovery_config_profiles_update_request, build_recovery_job_resources_get_request, build_recovery_job_resources_list_request, build_recovery_jobs_cancel_request, @@ -144,7 +149,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list(self, **kwargs: Any) -> AsyncItemPaged["_models.Operation"]: """List the operations for the provider. @@ -262,7 +267,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "location", "operation_id", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get(self, location: str, operation_id: str, **kwargs: Any) -> _models.OperationStatusResult: """Returns the current status of an async operation. @@ -355,7 +360,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get(self, service_group_name: str, goal_assignment_name: str, **kwargs: Any) -> _models.GoalAssignment: """Gets a goal assignment. @@ -435,7 +440,7 @@ async def get(self, service_group_name: str, goal_assignment_name: str, **kwargs "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _create_or_update_initial( self, @@ -604,7 +609,7 @@ async def begin_create_or_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_create_or_update( self, @@ -685,7 +690,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _update_initial( self, @@ -854,7 +859,7 @@ async def begin_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_update( self, @@ -935,7 +940,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _update_goal_resources_initial( self, @@ -1104,7 +1109,7 @@ async def begin_update_goal_resources( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_update_goal_resources( self, @@ -1177,7 +1182,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _refresh_goal_resources_initial( self, service_group_name: str, goal_assignment_name: str, **kwargs: Any @@ -1246,7 +1251,7 @@ async def _refresh_goal_resources_initial( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_refresh_goal_resources( self, service_group_name: str, goal_assignment_name: str, **kwargs: Any @@ -1309,7 +1314,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _delete_initial( self, service_group_name: str, goal_assignment_name: str, **kwargs: Any @@ -1378,7 +1383,7 @@ async def _delete_initial( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_delete( self, service_group_name: str, goal_assignment_name: str, **kwargs: Any @@ -1448,7 +1453,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _recommend_capacity_initial( self, @@ -1620,7 +1625,7 @@ async def begin_recommend_capacity( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_recommend_capacity( self, @@ -1695,7 +1700,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -1832,7 +1837,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, goal_assignment_name: str, goal_resource_name: str, **kwargs: Any @@ -1919,7 +1924,7 @@ async def get( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, @@ -2057,7 +2062,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get(self, service_group_name: str, recovery_plan_name: str, **kwargs: Any) -> _models.RecoveryPlan: """Get a RecoveryPlan. @@ -2131,7 +2136,7 @@ async def get(self, service_group_name: str, recovery_plan_name: str, **kwargs: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _create_or_update_initial( self, @@ -2299,7 +2304,7 @@ async def begin_create_or_update( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_create_or_update( self, @@ -2381,7 +2386,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _update_initial( self, @@ -2547,7 +2552,7 @@ async def begin_update( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_update( self, @@ -2627,7 +2632,7 @@ def get_long_running_output(pipeline_response): @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _delete_initial( self, service_group_name: str, recovery_plan_name: str, **kwargs: Any @@ -2693,7 +2698,7 @@ async def _delete_initial( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_delete( self, service_group_name: str, recovery_plan_name: str, **kwargs: Any @@ -2756,7 +2761,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -2862,6 +2867,920 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) +class RecoveryConfigProfilesOperations: # pylint: disable=docstring-missing-param + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.resiliencemanagement.aio.ResilienceManagementClient`'s + :attr:`recovery_config_profiles` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ResilienceManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace_async + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def get( + self, service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any + ) -> _models.RecoveryConfigProfile: + """Gets a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :return: RecoveryConfigProfile. The RecoveryConfigProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.RecoveryConfigProfile] = kwargs.pop("cls", None) + + _request = build_recovery_config_profiles_get_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + if _stream: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.RecoveryConfigProfile, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def _create_or_update_initial( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(resource, (IOBase, bytes)): + _content = resource + else: + _content = json.dumps(resource, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_recovery_config_profiles_create_or_update_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: _models.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Required. + :type resource: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: _types.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Required. + :type resource: ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Required. + :type resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Is either a RecoveryConfigProfile type or a + IO[bytes] type. Required. + :type resource: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile or + ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile or IO[bytes] + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.RecoveryConfigProfile] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._create_or_update_initial( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + resource=resource, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.RecoveryConfigProfile, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.RecoveryConfigProfile].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.RecoveryConfigProfile]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def _update_initial( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(properties, (IOBase, bytes)): + _content = properties + else: + _content = json.dumps(properties, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_recovery_config_profiles_update_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: _models.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Required. + :type properties: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: _types.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Required. + :type properties: ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Required. + :type properties: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Is either a RecoveryConfigProfile + type or a IO[bytes] type. Required. + :type properties: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile or + ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile or IO[bytes] + :return: An instance of AsyncLROPoller that returns RecoveryConfigProfile. The + RecoveryConfigProfile is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.RecoveryConfigProfile] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._update_initial( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + properties=properties, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.RecoveryConfigProfile, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.RecoveryConfigProfile].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.RecoveryConfigProfile]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={"2026-11-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, + api_versions_list=["2026-11-30-preview"], + ) + def list( + self, service_group_name: str, recovery_plan_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.RecoveryConfigProfile"]: + """Lists recovery configuration profiles under a recovery plan. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :return: An iterator like instance of RecoveryConfigProfile + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.RecoveryConfigProfile]] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_recovery_config_profiles_list_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.RecoveryConfigProfile], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def _delete_initial( + self, service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_recovery_config_profiles_delete_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + async def begin_delete( + self, service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._delete_initial( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + class RecoveryPlanActionsOperations: # pylint: disable=docstring-missing-param,too-many-public-methods """ .. warning:: @@ -2886,7 +3805,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _finalize_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -2958,7 +3877,7 @@ async def _finalize_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_finalize( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -3044,7 +3963,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _update_resources_initial( self, @@ -3229,7 +4148,7 @@ async def begin_update_resources( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_update_resources( self, @@ -3322,7 +4241,7 @@ def get_long_running_output(pipeline_response): "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_operation_initial( self, @@ -3512,7 +4431,7 @@ async def begin_validate_for_operation( "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_operation( self, @@ -3611,7 +4530,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_failover_initial( self, @@ -3802,7 +4721,7 @@ async def begin_validate_for_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_failover( self, @@ -3891,7 +4810,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_failover_commit_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -3960,7 +4879,7 @@ async def _validate_for_failover_commit_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_failover_commit( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -4043,7 +4962,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_test_failover_initial( self, @@ -4234,7 +5153,7 @@ async def begin_validate_for_test_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_test_failover( self, @@ -4323,7 +5242,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_test_failover_cleanup_initial( # pylint: disable=name-too-long self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -4392,7 +5311,7 @@ async def _validate_for_test_failover_cleanup_initial( # pylint: disable=name-t params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_test_failover_cleanup( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -4475,7 +5394,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_reprotect_initial( self, @@ -4670,7 +5589,7 @@ async def begin_validate_for_reprotect( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_reprotect( self, @@ -4760,7 +5679,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _check_readiness_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -4832,7 +5751,7 @@ async def _check_readiness_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_check_readiness( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -4908,7 +5827,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _failover_initial( self, @@ -5096,7 +6015,7 @@ async def begin_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_failover( self, @@ -5184,7 +6103,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _failover_commit_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -5253,7 +6172,7 @@ async def _failover_commit_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_failover_commit( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -5335,7 +6254,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _reprotect_initial( self, @@ -5527,7 +6446,7 @@ async def begin_reprotect( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_reprotect( self, @@ -5623,7 +6542,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _test_failover_initial( self, @@ -5811,7 +6730,7 @@ async def begin_test_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_test_failover( self, @@ -5906,7 +6825,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _test_failover_cleanup_initial( self, @@ -6094,7 +7013,7 @@ async def begin_test_failover_cleanup( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_test_failover_cleanup( self, @@ -6209,7 +7128,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, recovery_plan_name: str, recovery_resource_name: str, **kwargs: Any @@ -6287,7 +7206,7 @@ async def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, recovery_plan_name: str, **kwargs: Any @@ -6421,7 +7340,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, recovery_plan_name: str, recovery_job_name: str, **kwargs: Any @@ -6499,7 +7418,7 @@ async def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, recovery_plan_name: str, **kwargs: Any @@ -6613,7 +7532,7 @@ async def get_next(next_link=None): "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _cancel_initial( self, @@ -6812,7 +7731,7 @@ async def begin_cancel( "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_cancel( self, @@ -6914,7 +7833,7 @@ def get_long_running_output(pipeline_response): "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _resume_initial( self, @@ -7116,7 +8035,7 @@ async def begin_resume( "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_resume( self, @@ -7218,7 +8137,7 @@ def get_long_running_output(pipeline_response): "recovery_job_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _retry_initial( self, @@ -7303,7 +8222,7 @@ async def _retry_initial( "recovery_job_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_retry( self, @@ -7419,7 +8338,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, @@ -7514,7 +8433,7 @@ async def get( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, recovery_plan_name: str, recovery_job_name: str, **kwargs: Any @@ -7643,7 +8562,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get(self, service_group_name: str, drill_name: str, **kwargs: Any) -> _models.Drill: """Get a Drill. @@ -7717,7 +8636,7 @@ async def get(self, service_group_name: str, drill_name: str, **kwargs: Any) -> params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _create_initial( self, @@ -7882,7 +8801,7 @@ async def begin_create( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_create( self, @@ -7963,7 +8882,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _update_initial( self, @@ -8126,7 +9045,7 @@ async def begin_update( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_update( self, @@ -8199,7 +9118,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _delete_initial(self, service_group_name: str, drill_name: str, **kwargs: Any) -> AsyncIterator[bytes]: error_map: MutableMapping = { @@ -8263,7 +9182,7 @@ async def _delete_initial(self, service_group_name: str, drill_name: str, **kwar @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_delete(self, service_group_name: str, drill_name: str, **kwargs: Any) -> AsyncLROPoller[None]: """Delete a Drill. @@ -8324,7 +9243,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -8440,7 +9359,7 @@ async def get_next(next_link=None): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _validate_for_execution_initial( self, @@ -8622,7 +9541,7 @@ async def begin_validate_for_execution( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_validate_for_execution( self, @@ -8709,7 +9628,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _start_initial( self, @@ -8891,7 +9810,7 @@ async def begin_start( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_start( self, @@ -8978,7 +9897,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _end_initial( self, @@ -9160,7 +10079,7 @@ async def begin_end( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_end( self, @@ -9240,7 +10159,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name", "content_type"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _add_or_update_resources_initial( self, @@ -9415,7 +10334,7 @@ async def begin_add_or_update_resources( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name", "content_type"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_add_or_update_resources( self, @@ -9493,7 +10412,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _resync_readiness_check_initial( self, service_group_name: str, drill_name: str, *, operation_id: str, **kwargs: Any @@ -9563,7 +10482,7 @@ async def _resync_readiness_check_initial( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_resync_readiness_check( self, service_group_name: str, drill_name: str, *, operation_id: str, **kwargs: Any @@ -9651,7 +10570,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "drill_resource_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, drill_name: str, drill_resource_name: str, **kwargs: Any @@ -9731,7 +10650,7 @@ async def get( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "drill_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, @@ -9871,7 +10790,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "drill_run_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, drill_name: str, drill_run_name: str, **kwargs: Any @@ -9949,7 +10868,7 @@ async def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list(self, service_group_name: str, drill_name: str, **kwargs: Any) -> AsyncItemPaged["_models.DrillRun"]: """List DrillRun resources by Drill. @@ -10062,7 +10981,7 @@ async def get_next(next_link=None): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _fail_over_initial( self, @@ -10260,7 +11179,7 @@ async def begin_fail_over( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_fail_over( self, @@ -10353,7 +11272,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _reprotect_initial( self, @@ -10551,7 +11470,7 @@ async def begin_reprotect( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_reprotect( self, @@ -10644,7 +11563,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _add_notes_initial( self, @@ -10838,7 +11757,7 @@ async def begin_add_notes( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_add_notes( self, @@ -10929,7 +11848,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _resume_initial( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -11009,7 +11928,7 @@ async def _resume_initial( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_resume( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -11088,7 +12007,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _mark_as_complete_initial( self, @@ -11282,7 +12201,7 @@ async def begin_mark_as_complete( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_mark_as_complete( self, @@ -11373,7 +12292,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _generate_report_initial( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -11453,7 +12372,7 @@ async def _generate_report_initial( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_generate_report( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -11541,7 +12460,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _list_report_download_url_initial( self, @@ -11744,7 +12663,7 @@ async def begin_list_report_download_url( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_list_report_download_url( self, @@ -11864,7 +12783,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, drill_name: str, drill_run_name: str, drill_run_resource_name: str, **kwargs: Any @@ -11947,7 +12866,7 @@ async def get( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "drill_run_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, drill_name: str, drill_run_name: str, **kwargs: Any @@ -12078,7 +12997,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "unified_resilience_item_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, service_group_name: str, unified_resilience_item_name: str, **kwargs: Any @@ -12153,7 +13072,7 @@ async def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -12284,7 +13203,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> _models.UsagePlan: """Get a UsagePlan. @@ -12367,7 +13286,7 @@ async def get(self, resource_group_name: str, usage_plan_name: str, **kwargs: An "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _create_or_update_initial( self, @@ -12543,7 +13462,7 @@ async def begin_create_or_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_create_or_update( self, @@ -12632,7 +13551,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _update_initial( self, @@ -12806,7 +13725,7 @@ async def begin_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_update( self, @@ -12888,7 +13807,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _delete_initial( self, resource_group_name: str, usage_plan_name: str, **kwargs: Any @@ -12957,7 +13876,7 @@ async def _delete_initial( params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_delete(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> AsyncLROPoller[None]: """Delete a UsagePlan. @@ -13019,7 +13938,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> AsyncItemPaged["_models.UsagePlan"]: """List UsagePlan resources by resource group. @@ -13122,7 +14041,7 @@ async def get_next(next_link=None): @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "subscription_id", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list_by_subscription(self, **kwargs: Any) -> AsyncItemPaged["_models.UsagePlan"]: """List UsagePlan resources by subscription ID. @@ -13250,7 +14169,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def get( self, resource_group_name: str, usage_plan_name: str, enrollment_name: str, **kwargs: Any @@ -13339,7 +14258,7 @@ async def get( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _create_or_update_initial( self, @@ -13527,7 +14446,7 @@ async def begin_create_or_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_create_or_update( self, @@ -13619,7 +14538,7 @@ def get_long_running_output(pipeline_response): "enrollment_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def _delete_initial( self, resource_group_name: str, usage_plan_name: str, enrollment_name: str, **kwargs: Any @@ -13695,7 +14614,7 @@ async def _delete_initial( "enrollment_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) async def begin_delete( self, resource_group_name: str, usage_plan_name: str, enrollment_name: str, **kwargs: Any @@ -13764,7 +14683,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, resource_group_name: str, usage_plan_name: str, **kwargs: Any diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/__init__.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/__init__.py index a3cecb7a22fa..a8a0a7093bc1 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/__init__.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/__init__.py @@ -21,6 +21,9 @@ AttentionReason, ChaosResourcePropertiesOfDrill, CustomFaultDetails, + CyberResiliencyGroupProperties, + CyberResiliencyPlanProperties, + CyberResiliencyResourceProperties, DiskReprotectInputDetails, Drill, DrillEndRequest, @@ -39,6 +42,7 @@ DrillStartRequest, DrillUpdate, DrillUpdateProperties, + EffectiveConfiguration, Enrollment, EnrollmentProperties, ErrorAdditionalInfo, @@ -50,6 +54,7 @@ FailoverRequestProperties, FaultDetails, FaultProperties, + FileShareRecoveryConfig, GoalAssignment, GoalAssignmentProperties, GoalAssignmentPropertiesOfDrill, @@ -58,6 +63,9 @@ GoalsData, HealthModelMonitoringProperties, IncludeOrUpdateResource, + InfrastructureResiliencyGroupProperties, + InfrastructureResiliencyPlanProperties, + InfrastructureResiliencyResourceProperties, JobErrorInfo, JobExtendedInfo, JobProperties, @@ -75,15 +83,20 @@ OperationDisplay, OperationQualificationDetails, OperationStatusResult, + ProtectedItemDetails, ProxyResource, RecommendCapacityRequest, RecoveryActionRequest, + RecoveryConfigProfile, + RecoveryConfigProfileAssociation, + RecoveryConfigProfileProperties, RecoveryGroup, RecoveryGroupActionSettings, RecoveryGroupBaseAction, RecoveryGroupCustomRunbookAction, RecoveryGroupManualAction, RecoveryGroupProperties, + RecoveryGroupResiliencyProperties, RecoveryGroupsSetting, RecoveryJob, RecoveryJobProperties, @@ -95,28 +108,37 @@ RecoveryPlanOperationStatus, RecoveryPlanProperties, RecoveryPlanPropertiesOfDrill, + RecoveryPlanResiliencyProperties, + RecoveryPointPolicy, RecoveryResource, RecoveryResourceProperties, RecoveryResourceQualification, + RecoveryResourceResiliencyProperties, RegionalDrillProperties, RegionalDrillResourceProperties, + RegionalObjectives, ReportStageStatus, ReprotectRequest, ReprotectRequestProperties, ResiliencyProperties, Resource, + ResourceAzureTemplateProtectionSetting, ResourceBaseProtectionSolutionSetting, + ResourceCosmosDBProtectionSetting, ResourceCrossZoneVmRecoveryProtectionSetting, ResourceCustomProtectionAction, ResourceCustomProtectionSetting, ResourceFeasibilityReview, ResourceLists, ResourceNativeProtectionSolutionSetting, + ResourceNetAppFilesProtectionSetting, ResourceProtectionSolutionSettings, + ResourceServiceBusProtectionSetting, ResourceSiteRecoveryProtectionSetting, ResourceSiteRecoveryReprotectParams, ResourceSiteRecoveryTestFailoverCleanupParams, ResourceSiteRecoveryTestFailoverParams, + ResourceStorageAccountProtectionSetting, ServiceLevelResource, SkuDetails, SliAttentionStatus, @@ -125,12 +147,16 @@ SupportedVerbsForStage, SystemData, SystemMetadata, + TargetEnvironment, + TargetResourceSpec, + TargetScope, TestFailoverCleanupRequest, TrackedResource, UnifiedResilienceItem, UnifiedResilienceItemBillingInfo, UnifiedResilienceItemGoalRequirement, UnifiedResilienceItemProperties, + UnifiedResilienceItemRegionalResiliencyPosture, UnifiedResilienceItemResiliencyPosture, UnifiedResilienceItemZonalResiliencyPosture, UpdateGoalResourceRequest, @@ -145,6 +171,8 @@ ValidateForExecutionRequest, ValidateForOperationRequest, ValidateForRecoveryOperationBaseResponse, + VmRecoveryConfig, + WorkloadConfig, ZonalDrillProperties, ZonalDrillResourceProperties, ) @@ -154,8 +182,10 @@ ActionType, AttestationState, AutoFailover, + BackupType, CommentType, ConfirmationStatus, + CopyOptions, CreatedByType, DrillAttestation, DrillMode, @@ -177,9 +207,12 @@ ExtensionObjectState, FailoverDirectionTypes, FailoverState, + FaultEligibility, + FaultIneligibleReason, ForceInclusionAndUpdate, HAStatus, InitialConfig, + IsoDuration, JobResourceType, JobStatus, JobTriggeredBy, @@ -197,21 +230,32 @@ RecoveryPlanExclusionReason, RecoveryPlanState, RecoveryPlanType, + RecoveryPointHealthStatus, + RecoveryPointPolicyType, + RecoveryResourceInclusionEligibility, + RecoveryType, + RegionalResiliencyStatus, RelativeResourceCompositionState, + ReplicationMode, + ResiliencyType, ResourceFeasibilityReviewStatus, ResourceFeasibilityReviewType, + ResourceInclusionDisabledReason, ResourceInclusionState, ResourceProtectionSolutionType, + ResourceProtectionState, ResourceProtectionStatus, ResourceReplicationRole, ResourceTypeCategories, SliType, SliTypeMatchState, SolutionDisplayName, + TargetProvisioningMode, TestFailoverState, UsagePlanType, UserConsent, VMPresent, + WorkloadType, ) from ._patch import __all__ as _patch_all from ._patch import * @@ -225,6 +269,9 @@ "AttentionReason", "ChaosResourcePropertiesOfDrill", "CustomFaultDetails", + "CyberResiliencyGroupProperties", + "CyberResiliencyPlanProperties", + "CyberResiliencyResourceProperties", "DiskReprotectInputDetails", "Drill", "DrillEndRequest", @@ -243,6 +290,7 @@ "DrillStartRequest", "DrillUpdate", "DrillUpdateProperties", + "EffectiveConfiguration", "Enrollment", "EnrollmentProperties", "ErrorAdditionalInfo", @@ -254,6 +302,7 @@ "FailoverRequestProperties", "FaultDetails", "FaultProperties", + "FileShareRecoveryConfig", "GoalAssignment", "GoalAssignmentProperties", "GoalAssignmentPropertiesOfDrill", @@ -262,6 +311,9 @@ "GoalsData", "HealthModelMonitoringProperties", "IncludeOrUpdateResource", + "InfrastructureResiliencyGroupProperties", + "InfrastructureResiliencyPlanProperties", + "InfrastructureResiliencyResourceProperties", "JobErrorInfo", "JobExtendedInfo", "JobProperties", @@ -279,15 +331,20 @@ "OperationDisplay", "OperationQualificationDetails", "OperationStatusResult", + "ProtectedItemDetails", "ProxyResource", "RecommendCapacityRequest", "RecoveryActionRequest", + "RecoveryConfigProfile", + "RecoveryConfigProfileAssociation", + "RecoveryConfigProfileProperties", "RecoveryGroup", "RecoveryGroupActionSettings", "RecoveryGroupBaseAction", "RecoveryGroupCustomRunbookAction", "RecoveryGroupManualAction", "RecoveryGroupProperties", + "RecoveryGroupResiliencyProperties", "RecoveryGroupsSetting", "RecoveryJob", "RecoveryJobProperties", @@ -299,28 +356,37 @@ "RecoveryPlanOperationStatus", "RecoveryPlanProperties", "RecoveryPlanPropertiesOfDrill", + "RecoveryPlanResiliencyProperties", + "RecoveryPointPolicy", "RecoveryResource", "RecoveryResourceProperties", "RecoveryResourceQualification", + "RecoveryResourceResiliencyProperties", "RegionalDrillProperties", "RegionalDrillResourceProperties", + "RegionalObjectives", "ReportStageStatus", "ReprotectRequest", "ReprotectRequestProperties", "ResiliencyProperties", "Resource", + "ResourceAzureTemplateProtectionSetting", "ResourceBaseProtectionSolutionSetting", + "ResourceCosmosDBProtectionSetting", "ResourceCrossZoneVmRecoveryProtectionSetting", "ResourceCustomProtectionAction", "ResourceCustomProtectionSetting", "ResourceFeasibilityReview", "ResourceLists", "ResourceNativeProtectionSolutionSetting", + "ResourceNetAppFilesProtectionSetting", "ResourceProtectionSolutionSettings", + "ResourceServiceBusProtectionSetting", "ResourceSiteRecoveryProtectionSetting", "ResourceSiteRecoveryReprotectParams", "ResourceSiteRecoveryTestFailoverCleanupParams", "ResourceSiteRecoveryTestFailoverParams", + "ResourceStorageAccountProtectionSetting", "ServiceLevelResource", "SkuDetails", "SliAttentionStatus", @@ -329,12 +395,16 @@ "SupportedVerbsForStage", "SystemData", "SystemMetadata", + "TargetEnvironment", + "TargetResourceSpec", + "TargetScope", "TestFailoverCleanupRequest", "TrackedResource", "UnifiedResilienceItem", "UnifiedResilienceItemBillingInfo", "UnifiedResilienceItemGoalRequirement", "UnifiedResilienceItemProperties", + "UnifiedResilienceItemRegionalResiliencyPosture", "UnifiedResilienceItemResiliencyPosture", "UnifiedResilienceItemZonalResiliencyPosture", "UpdateGoalResourceRequest", @@ -349,14 +419,18 @@ "ValidateForExecutionRequest", "ValidateForOperationRequest", "ValidateForRecoveryOperationBaseResponse", + "VmRecoveryConfig", + "WorkloadConfig", "ZonalDrillProperties", "ZonalDrillResourceProperties", "ActionTask", "ActionType", "AttestationState", "AutoFailover", + "BackupType", "CommentType", "ConfirmationStatus", + "CopyOptions", "CreatedByType", "DrillAttestation", "DrillMode", @@ -378,9 +452,12 @@ "ExtensionObjectState", "FailoverDirectionTypes", "FailoverState", + "FaultEligibility", + "FaultIneligibleReason", "ForceInclusionAndUpdate", "HAStatus", "InitialConfig", + "IsoDuration", "JobResourceType", "JobStatus", "JobTriggeredBy", @@ -398,21 +475,32 @@ "RecoveryPlanExclusionReason", "RecoveryPlanState", "RecoveryPlanType", + "RecoveryPointHealthStatus", + "RecoveryPointPolicyType", + "RecoveryResourceInclusionEligibility", + "RecoveryType", + "RegionalResiliencyStatus", "RelativeResourceCompositionState", + "ReplicationMode", + "ResiliencyType", "ResourceFeasibilityReviewStatus", "ResourceFeasibilityReviewType", + "ResourceInclusionDisabledReason", "ResourceInclusionState", "ResourceProtectionSolutionType", + "ResourceProtectionState", "ResourceProtectionStatus", "ResourceReplicationRole", "ResourceTypeCategories", "SliType", "SliTypeMatchState", "SolutionDisplayName", + "TargetProvisioningMode", "TestFailoverState", "UsagePlanType", "UserConsent", "VMPresent", + "WorkloadType", ] __all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_enums.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_enums.py index 71560d2275f5..e6092b41a60c 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_enums.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_enums.py @@ -22,7 +22,7 @@ class ActionTask(str, Enum, metaclass=CaseInsensitiveEnumMeta): class ActionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal + """Extensible enum. Indicates the action type. \"Internal\" refers to actions that are for internal only APIs. """ @@ -48,6 +48,18 @@ class AutoFailover(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Disable AutoFailover.""" +class BackupType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The backup mechanism used to select recovery points.""" + + STREAMING = "Streaming" + """Streaming backups, including full, differential, incremental, and other supported backup + categories.""" + LOG = "Log" + """Log backups that provide point-in-time recovery candidates.""" + SNAPSHOT = "Snapshot" + """Snapshot backups.""" + + class CommentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The type of user comment.""" @@ -70,6 +82,15 @@ class ConfirmationStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The high availability solution has been rejected by the user.""" +class CopyOptions(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The behavior when a copied file already exists.""" + + OVERWRITE = "Overwrite" + """Overwrite the existing file.""" + SKIP = "Skip" + """Skip the existing file.""" + + class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The kind of entity that created the resource.""" @@ -291,6 +312,30 @@ class FailoverState(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The resource is in reprotect pending state.""" +class FaultEligibility(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Normal fault eligibility of a drill resource, independent of inclusion and readiness.""" + + UNKNOWN = "Unknown" + """The available information is insufficient to determine normal fault eligibility.""" + ELIGIBLE = "Eligible" + """The resource satisfies the normal fault inclusion policy.""" + INELIGIBLE = "Ineligible" + """The resource does not satisfy the normal fault inclusion policy.""" + + +class FaultIneligibleReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Reason requiring attention for a resource that requires recovery-plan participation and has no + independent fault eligibility path. + """ + + RECOVERY_PLAN_NOT_CONFIGURED = "RecoveryPlanNotConfigured" + """The parent drill has no associated recovery plan required by the resource's normal fault + inclusion policy.""" + RESOURCE_NOT_INCLUDED_IN_RECOVERY_PLAN = "ResourceNotIncludedInRecoveryPlan" + """The associated recovery plan's complete membership collection was successfully read and the + resource is absent or explicitly Excluded.""" + + class ForceInclusionAndUpdate(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Enum for ForceInclusionAndUpdate.""" @@ -318,6 +363,19 @@ class InitialConfig(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Initial config complete.""" +class IsoDuration(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """ISO 8601 duration formats.""" + + PT15_M = "PT15M" + """15 minutes.""" + PT1_H = "PT1H" + """1 hour.""" + PT4_H = "PT4H" + """4 hours.""" + PT24_H = "PT24H" + """24 hours.""" + + class JobResourceType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """A job resource type indicates the kind of jobresource.""" @@ -393,7 +451,7 @@ class ManagedServiceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): class Origin(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit - logs UX. Default value is "user,system". + logs UX. Default value is \"user,system\". """ USER = "user" @@ -542,6 +600,62 @@ class RecoveryPlanType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """A recovery orchestration plan for regional resiliency.""" ZONAL = "Zonal" """A recovery orchestration plan for zonal resiliency.""" + CYBER_RECOVERY = "CyberRecovery" + """A recovery orchestration plan for cyber recovery into a clean-room environment.""" + + +class RecoveryPointHealthStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The health eligibility filter for discrete recovery points. This filter does not apply to log + or point-in-time recovery candidates. + """ + + HEALTHY_ONLY = "HealthyOnly" + """Include only recovery points with a Healthy threat status.""" + HEALTHY_AND_UNKNOWN = "HealthyAndUnknown" + """Include recovery points with Healthy, Unknown, unspecified, or NotAvailable threat statuses, + excluding Warning and UnHealthy.""" + ALL = "All" + """Include all threat statuses without health-based ordering.""" + + +class RecoveryPointPolicyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """A policy for selecting a recovery point.""" + + LATEST = "Latest" + """Use the latest available recovery point.""" + RANDOM = "Random" + """Use a random recovery point within the specified time bounds.""" + + +class RecoveryResourceInclusionEligibility(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Indicates whether a recovery resource can be included for the configured targets.""" + + CAN_BE_INCLUDED = "CanBeIncluded" + """The recovery resource can be included.""" + CANNOT_BE_INCLUDED = "CannotBeIncluded" + """The recovery resource cannot be included.""" + + +class RecoveryType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The supported workload recovery behavior.""" + + CREATE_NEW_VM = "CreateNewVM" + """Recovery creates a new virtual machine.""" + ALTERNATE_LOCATION = "AlternateLocation" + """Recovery targets an alternate location.""" + RESTORE_AS_DISKS = "RestoreAsDisks" + """Recovery restores the workload as disks.""" + RESTORE_AS_FILES = "RestoreAsFiles" + """Recovery restores the workload as files.""" + + +class RegionalResiliencyStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Regional resiliency posture reported by the selected protection solution.""" + + RESILIENT = "Resilient" + """The available protection-solution posture reports the resource as regionally resilient.""" + NOT_RESILIENT = "NotResilient" + """The available protection-solution posture reports the resource as not regionally resilient.""" class RelativeResourceCompositionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -553,6 +667,26 @@ class RelativeResourceCompositionState(str, Enum, metaclass=CaseInsensitiveEnumM """Resources out of sync.""" +class ReplicationMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Replication mode configured for a protected resource.""" + + NONE = "None" + """No replication mode is configured for the protected resource.""" + ACTIVE_ACTIVE = "ActiveActive" + """The resource is active in multiple locations at the same time.""" + ACTIVE_PASSIVE = "ActivePassive" + """The resource has one active location and one or more passive recovery locations.""" + + +class ResiliencyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Specifies the resiliency type for recovery plan properties.""" + + INFRASTRUCTURE_RESILIENCY = "InfrastructureResiliency" + """Infrastructure resiliency properties.""" + CYBER_RESILIENCY = "CyberResiliency" + """Cyber resiliency properties.""" + + class ResourceFeasibilityReviewStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Outcome of a resource feasibility review for a recovery resource.""" @@ -573,6 +707,15 @@ class ResourceFeasibilityReviewType(str, Enum, metaclass=CaseInsensitiveEnumMeta """SKU capacity availability check in the target region or zone.""" +class ResourceInclusionDisabledReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Reason why a recovery resource cannot be included in a recovery plan.""" + + RESOURCE_HIGHLY_AVAILABLE = "ResourceHighlyAvailable" + """The resource is highly available and does not require recovery-plan inclusion.""" + RESOURCE_ACTIVE_ACTIVE_PROTECTION = "ResourceActiveActiveProtection" + """The resource uses active-active protection.""" + + class ResourceInclusionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): """A state type that indicates inclusion of the resource with respect to the resiliency support.""" @@ -597,6 +740,32 @@ class ResourceProtectionSolutionType(str, Enum, metaclass=CaseInsensitiveEnumMet CUSTOM_RUNBOOK = "CustomRunbook" """Resource is not protected with native solution and using custom runbook automation scripts for recovery verbs.""" + AZURE_TEMPLATE = "AzureTemplate" + """Resource recovery is orchestrated by deploying an Azure Resource Manager template.""" + AZURE_STORAGE_ACCOUNT = "AzureStorageAccount" + """Resource is protected with Azure Storage account customer-managed failover.""" + AZURE_SERVICE_BUS = "AzureServiceBus" + """Resource is protected with Azure Service Bus geo-replication, where a premium namespace + replicates data to a secondary region and recovery promotes that secondary in place.""" + AZURE_NET_APP_FILES = "AzureNetAppFiles" + """Resource is protected with Azure NetApp Files cross-region replication, where recovery fails + over to the destination volume.""" + AZURE_COSMOS_DB = "AzureCosmosDB" + """Resource is protected with Azure Cosmos DB multiregion replication using customer-managed + failover, where recovery promotes a secondary region to the write region.""" + + +class ResourceProtectionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """A state type that indicates the protection status of a resource with an Azure solution for + Backup. + """ + + UNKNOWN = "Unknown" + """The protection status of the resource is unknown.""" + PROTECTED = "Protected" + """A state indicating that the resource is protected by the recovery solution.""" + NOT_PROTECTED = "NotProtected" + """A state indicating that the resource is not protected by any recovery solution.""" class ResourceProtectionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -662,6 +831,13 @@ class SolutionDisplayName(str, Enum, metaclass=CaseInsensitiveEnumMeta): """VM in multi-zone VMSS.""" +class TargetProvisioningMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """How a target resource is provisioned.""" + + EXISTING = "Existing" + """An existing target resource is used.""" + + class TestFailoverState(str, Enum, metaclass=CaseInsensitiveEnumMeta): """A state specific to the resource that helps identify its TestFailover state.""" @@ -694,3 +870,20 @@ class VMPresent(str, Enum, metaclass=CaseInsensitiveEnumMeta): """At least one VM is present.""" ABSENT = "Absent" """No VM present.""" + + +class WorkloadType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The workload protected by a recovery configuration profile.""" + + AZURE_VM = "AzureVm" + """An Azure virtual machine workload.""" + SQL_DATABASE_IN_AZURE_VM = "SqlDatabaseInAzureVm" + """A SQL database workload hosted in an Azure virtual machine.""" + SAP_HANA_IN_AZURE_VM = "SapHanaInAzureVm" + """An SAP HANA workload hosted in an Azure virtual machine.""" + SAP_ASE_IN_AZURE_VM = "SapAseInAzureVm" + """An SAP ASE workload hosted in an Azure virtual machine.""" + ORACLE_IN_AZURE_VM = "OracleInAzureVm" + """An Oracle workload hosted in an Azure virtual machine.""" + AZURE_FILE_SHARE = "AzureFileShare" + """An Azure Files workload.""" diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_models.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_models.py index 43b497d9b12a..7d283a658be4 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_models.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/models/_models.py @@ -12,7 +12,15 @@ from typing import Any, Literal, Mapping, Optional, TYPE_CHECKING, Union, overload from .._utils.model_base import Model as _Model, rest_discriminator, rest_field -from ._enums import DrillType, JobResourceType, JobType, RecoveryGroupActionType, ResourceProtectionSolutionType +from ._enums import ( + DrillType, + JobResourceType, + JobType, + RecoveryGroupActionType, + ResiliencyType, + ResourceProtectionSolutionType, + WorkloadType, +) if TYPE_CHECKING: from .. import models as _models @@ -577,6 +585,264 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class RecoveryGroupResiliencyProperties(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Resiliency-specific properties for a recovery orchestration group. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + CyberResiliencyGroupProperties, InfrastructureResiliencyGroupProperties + + :ivar resiliency_type: The resiliency type represented by these properties. Required. Known + values are: "InfrastructureResiliency" and "CyberResiliency". + :vartype resiliency_type: str or ~azure.mgmt.resiliencemanagement.models.ResiliencyType + """ + + __mapping__: dict[str, _Model] = {} + resiliency_type: str = rest_discriminator( + name="resiliencyType", visibility=["read", "create", "update", "delete", "query"] + ) + """The resiliency type represented by these properties. Required. Known values are: + \"InfrastructureResiliency\" and \"CyberResiliency\".""" + + @overload + def __init__( + self, + *, + resiliency_type: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class CyberResiliencyGroupProperties( + RecoveryGroupResiliencyProperties, discriminator="CyberResiliency" +): # pylint: disable=docstring-keyword-should-match-keyword-only + """Cyber resiliency properties for a recovery orchestration group. + + :ivar resiliency_type: The resiliency type represented by these properties. Required. Cyber + resiliency properties. + :vartype resiliency_type: str or ~azure.mgmt.resiliencemanagement.models.CYBER_RESILIENCY + :ivar recovery_config_profile_associations: Recovery configuration profiles associated by + workload type. + :vartype recovery_config_profile_associations: + list[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfileAssociation] + """ + + resiliency_type: Literal[ResiliencyType.CYBER_RESILIENCY] = rest_discriminator(name="resiliencyType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The resiliency type represented by these properties. Required. Cyber resiliency properties.""" + recovery_config_profile_associations: Optional[list["_models.RecoveryConfigProfileAssociation"]] = rest_field( + name="recoveryConfigProfileAssociations", visibility=["read", "create", "update", "delete", "query"] + ) + """Recovery configuration profiles associated by workload type.""" + + @overload + def __init__( + self, + *, + recovery_config_profile_associations: Optional[list["_models.RecoveryConfigProfileAssociation"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.resiliency_type = ResiliencyType.CYBER_RESILIENCY # type: ignore + + +class RecoveryPlanResiliencyProperties(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Resiliency-specific properties for a recovery plan. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + CyberResiliencyPlanProperties, InfrastructureResiliencyPlanProperties + + :ivar resiliency_type: The resiliency type represented by these properties. Required. Known + values are: "InfrastructureResiliency" and "CyberResiliency". + :vartype resiliency_type: str or ~azure.mgmt.resiliencemanagement.models.ResiliencyType + """ + + __mapping__: dict[str, _Model] = {} + resiliency_type: str = rest_discriminator( + name="resiliencyType", visibility=["read", "create", "update", "delete", "query"] + ) + """The resiliency type represented by these properties. Required. Known values are: + \"InfrastructureResiliency\" and \"CyberResiliency\".""" + + @overload + def __init__( + self, + *, + resiliency_type: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class CyberResiliencyPlanProperties( + RecoveryPlanResiliencyProperties, discriminator="CyberResiliency" +): # pylint: disable=docstring-keyword-should-match-keyword-only + """Cyber resiliency properties for a recovery plan. + + :ivar resiliency_type: The resiliency type represented by these properties. Required. Cyber + resiliency properties. + :vartype resiliency_type: str or ~azure.mgmt.resiliencemanagement.models.CYBER_RESILIENCY + :ivar target_environment: The required subscriptions and locations where recovery is targeted. + Required. + :vartype target_environment: ~azure.mgmt.resiliencemanagement.models.TargetEnvironment + """ + + resiliency_type: Literal[ResiliencyType.CYBER_RESILIENCY] = rest_discriminator(name="resiliencyType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The resiliency type represented by these properties. Required. Cyber resiliency properties.""" + target_environment: "_models.TargetEnvironment" = rest_field( + name="targetEnvironment", visibility=["read", "create", "update", "delete", "query"] + ) + """The required subscriptions and locations where recovery is targeted. Required.""" + + @overload + def __init__( + self, + *, + target_environment: "_models.TargetEnvironment", + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.resiliency_type = ResiliencyType.CYBER_RESILIENCY # type: ignore + + +class RecoveryResourceResiliencyProperties(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Resiliency-specific properties for a recovery resource. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + CyberResiliencyResourceProperties, InfrastructureResiliencyResourceProperties + + :ivar resiliency_type: The resiliency type represented by these properties. Required. Known + values are: "InfrastructureResiliency" and "CyberResiliency". + :vartype resiliency_type: str or ~azure.mgmt.resiliencemanagement.models.ResiliencyType + """ + + __mapping__: dict[str, _Model] = {} + resiliency_type: str = rest_discriminator( + name="resiliencyType", visibility=["read", "create", "update", "delete", "query"] + ) + """The resiliency type represented by these properties. Required. Known values are: + \"InfrastructureResiliency\" and \"CyberResiliency\".""" + + @overload + def __init__( + self, + *, + resiliency_type: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class CyberResiliencyResourceProperties( + RecoveryResourceResiliencyProperties, discriminator="CyberResiliency" +): # pylint: disable=docstring-keyword-should-match-keyword-only + """Cyber resiliency properties for a recovery resource. + + :ivar resiliency_type: The resiliency type represented by these properties. Required. Cyber + resiliency properties. + :vartype resiliency_type: str or ~azure.mgmt.resiliencemanagement.models.CYBER_RESILIENCY + :ivar workload_type: The workload type of the Azure resource linked to the recovery resource. + Known values are: "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", + "OracleInAzureVm", and "AzureFileShare". + :vartype workload_type: str or ~azure.mgmt.resiliencemanagement.models.WorkloadType + :ivar protected_item_details: The backup protection details for the protected items associated + with this resource. + :vartype protected_item_details: + list[~azure.mgmt.resiliencemanagement.models.ProtectedItemDetails] + :ivar membership_through_service_group_members: The service group member identifiers through + which this resource was discovered. + :vartype membership_through_service_group_members: list[str] + :ivar recovery_config_profile_id: The Azure resource identifier of the per-resource recovery + configuration profile override. + :vartype recovery_config_profile_id: str + :ivar inclusion_eligibility: The resource's eligibility for inclusion for the configured + targets. Known values are: "CanBeIncluded" and "CannotBeIncluded". + :vartype inclusion_eligibility: str or + ~azure.mgmt.resiliencemanagement.models.RecoveryResourceInclusionEligibility + """ + + resiliency_type: Literal[ResiliencyType.CYBER_RESILIENCY] = rest_discriminator(name="resiliencyType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The resiliency type represented by these properties. Required. Cyber resiliency properties.""" + workload_type: Optional[Union[str, "_models.WorkloadType"]] = rest_field(name="workloadType", visibility=["read"]) + """The workload type of the Azure resource linked to the recovery resource. Known values are: + \"AzureVm\", \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", + \"OracleInAzureVm\", and \"AzureFileShare\".""" + protected_item_details: Optional[list["_models.ProtectedItemDetails"]] = rest_field( + name="protectedItemDetails", visibility=["read"] + ) + """The backup protection details for the protected items associated with this resource.""" + membership_through_service_group_members: Optional[list[str]] = rest_field( + name="membershipThroughServiceGroupMembers", visibility=["read"] + ) + """The service group member identifiers through which this resource was discovered.""" + recovery_config_profile_id: Optional[str] = rest_field( + name="recoveryConfigProfileId", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure resource identifier of the per-resource recovery configuration profile override.""" + inclusion_eligibility: Optional[Union[str, "_models.RecoveryResourceInclusionEligibility"]] = rest_field( + name="inclusionEligibility", visibility=["read"] + ) + """The resource's eligibility for inclusion for the configured targets. Known values are: + \"CanBeIncluded\" and \"CannotBeIncluded\".""" + + @overload + def __init__( + self, + *, + recovery_config_profile_id: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.resiliency_type = ResiliencyType.CYBER_RESILIENCY # type: ignore + + class DiskReprotectInputDetails(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """Disk Reprotect Input Details. @@ -1078,8 +1344,9 @@ class DrillResourceProperties(_Model): # pylint: disable=docstring-keyword-shou :vartype recovery_plan_exclusion_reason: str or ~azure.mgmt.resiliencemanagement.models.RecoveryPlanExclusionReason :ivar resource_protection_solution_type: Protection Solution Type of the Drill resource. Known - values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", and - "CustomRunbook". + values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", "CustomRunbook", + "AzureTemplate", "AzureStorageAccount", "AzureServiceBus", "AzureNetAppFiles", and + "AzureCosmosDB". :vartype resource_protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType :ivar readiness_state: Readiness State of the Drill resource. Known values are: "Ready" and @@ -1109,6 +1376,19 @@ class DrillResourceProperties(_Model): # pylint: disable=docstring-keyword-shou :ivar drill_type: The discriminator for the Drill Resource object hierarchy. Matches the parent Drill type. Required. Known values are: "Zonal" and "Regional". :vartype drill_type: str or ~azure.mgmt.resiliencemanagement.models.DrillType + :ivar fault_eligibility: Normal fault eligibility for a drill resource. Currently populated for + regional resources only. Omitted until evaluated. Eligibility does not indicate inclusion or + readiness, and force inclusion does not change this value. Known values are: "Unknown", + "Eligible", and "Ineligible". + :vartype fault_eligibility: str or ~azure.mgmt.resiliencemanagement.models.FaultEligibility + :ivar fault_ineligible_reason: Reason the resource is ineligible under normal fault inclusion + policy. Currently populated for regional resources only. Contains the single applicable + recovery-plan reason when Ineligible. Omitted when Eligible, Unknown, or not yet evaluated. + Failed or incomplete recovery-plan reads do not establish non-inclusion. Binding and permission + errors are reported separately in attentionReason and error fields. Known values are: + "RecoveryPlanNotConfigured" and "ResourceNotIncludedInRecoveryPlan". + :vartype fault_ineligible_reason: str or + ~azure.mgmt.resiliencemanagement.models.FaultIneligibleReason """ __mapping__: dict[str, _Model] = {} @@ -1139,7 +1419,8 @@ class DrillResourceProperties(_Model): # pylint: disable=docstring-keyword-shou name="resourceProtectionSolutionType", visibility=["read"] ) """Protection Solution Type of the Drill resource. Known values are: \"None\", \"AzureNative\", - \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and \"CustomRunbook\".""" + \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", \"CustomRunbook\", \"AzureTemplate\", + \"AzureStorageAccount\", \"AzureServiceBus\", \"AzureNetAppFiles\", and \"AzureCosmosDB\".""" readiness_state: Optional[Union[str, "_models.DrillResourceReadinessState"]] = rest_field( name="readinessState", visibility=["read"] ) @@ -1178,6 +1459,22 @@ class DrillResourceProperties(_Model): # pylint: disable=docstring-keyword-shou drill_type: str = rest_discriminator(name="drillType", visibility=["read"]) """The discriminator for the Drill Resource object hierarchy. Matches the parent Drill type. Required. Known values are: \"Zonal\" and \"Regional\".""" + fault_eligibility: Optional[Union[str, "_models.FaultEligibility"]] = rest_field( + name="faultEligibility", visibility=["read"] + ) + """Normal fault eligibility for a drill resource. Currently populated for regional resources only. + Omitted until evaluated. Eligibility does not indicate inclusion or readiness, and force + inclusion does not change this value. Known values are: \"Unknown\", \"Eligible\", and + \"Ineligible\".""" + fault_ineligible_reason: Optional[Union[str, "_models.FaultIneligibleReason"]] = rest_field( + name="faultIneligibleReason", visibility=["read"] + ) + """Reason the resource is ineligible under normal fault inclusion policy. Currently populated for + regional resources only. Contains the single applicable recovery-plan reason when Ineligible. + Omitted when Eligible, Unknown, or not yet evaluated. Failed or incomplete recovery-plan reads + do not establish non-inclusion. Binding and permission errors are reported separately in + attentionReason and error fields. Known values are: \"RecoveryPlanNotConfigured\" and + \"ResourceNotIncludedInRecoveryPlan\".""" @overload def __init__( @@ -1469,6 +1766,9 @@ class DrillRunProperties( :vartype current_active_operation_id: str :ivar report: Summary of report generation for this Drill Run. :vartype report: ~azure.mgmt.resiliencemanagement.models.DrillReportSummary + :ivar recovery_time_objective: Recovery time objective for the drill run. Known values are: + "PT15M", "PT1H", "PT4H", and "PT24H". + :vartype recovery_time_objective: str or ~azure.mgmt.resiliencemanagement.models.IsoDuration """ job_type: Literal[JobType.DRILL_RUN] = rest_discriminator(name="jobType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore @@ -1490,6 +1790,11 @@ class DrillRunProperties( """The currently active operationID on this Drill Run. There can be only one active.""" report: Optional["_models.DrillReportSummary"] = rest_field(visibility=["read"]) """Summary of report generation for this Drill Run.""" + recovery_time_objective: Optional[Union[str, "_models.IsoDuration"]] = rest_field( + name="recoveryTimeObjective", visibility=["read"] + ) + """Recovery time objective for the drill run. Known values are: \"PT15M\", \"PT1H\", \"PT4H\", and + \"PT24H\".""" @overload def __init__( @@ -1914,6 +2219,17 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class EffectiveConfiguration(_Model): + """The effective, resolved recovery configuration. + + :ivar workload_config: The effective workload configuration. Required. + :vartype workload_config: ~azure.mgmt.resiliencemanagement.models.WorkloadConfig + """ + + workload_config: "_models.WorkloadConfig" = rest_field(name="workloadConfig", visibility=["read"]) + """The effective workload configuration. Required.""" + + class Enrollment(ProxyResource): # pylint: disable=docstring-keyword-should-match-keyword-only """An enrollment that links a usage plan to a service group. @@ -2316,6 +2632,111 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class WorkloadConfig(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Workload-specific recovery configuration. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + FileShareRecoveryConfig, VmRecoveryConfig + + :ivar workload_type: The workload type represented by this configuration. Required. Known + values are: "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", + "OracleInAzureVm", and "AzureFileShare". + :vartype workload_type: str or ~azure.mgmt.resiliencemanagement.models.WorkloadType + """ + + __mapping__: dict[str, _Model] = {} + workload_type: str = rest_discriminator( + name="workloadType", visibility=["read", "create", "update", "delete", "query"] + ) + """The workload type represented by this configuration. Required. Known values are: \"AzureVm\", + \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", \"OracleInAzureVm\", and + \"AzureFileShare\".""" + + @overload + def __init__( + self, + *, + workload_type: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class FileShareRecoveryConfig( + WorkloadConfig, discriminator="AzureFileShare" +): # pylint: disable=docstring-keyword-should-match-keyword-only + """Recovery configuration for an Azure Files workload. + + :ivar workload_type: The workload type represented by this configuration. Required. An Azure + Files workload. + :vartype workload_type: str or ~azure.mgmt.resiliencemanagement.models.AZURE_FILE_SHARE + :ivar target_name_prefix: The prefix used when naming recovered file shares. + :vartype target_name_prefix: str + :ivar storage_account: The target storage account. Required. + :vartype storage_account: ~azure.mgmt.resiliencemanagement.models.TargetResourceSpec + :ivar target_folder_path: The destination folder path in the target file share. + :vartype target_folder_path: str + :ivar identity: The system-assigned and/or user-assigned managed identities used for restore. + :vartype identity: ~azure.mgmt.resiliencemanagement.models.ManagedServiceIdentity + :ivar copy_options: The behavior when a copied file already exists. Known values are: + "Overwrite" and "Skip". + :vartype copy_options: str or ~azure.mgmt.resiliencemanagement.models.CopyOptions + """ + + workload_type: Literal[WorkloadType.AZURE_FILE_SHARE] = rest_discriminator(name="workloadType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The workload type represented by this configuration. Required. An Azure Files workload.""" + target_name_prefix: Optional[str] = rest_field( + name="targetNamePrefix", visibility=["read", "create", "update", "delete", "query"] + ) + """The prefix used when naming recovered file shares.""" + storage_account: "_models.TargetResourceSpec" = rest_field( + name="storageAccount", visibility=["read", "create", "update", "delete", "query"] + ) + """The target storage account. Required.""" + target_folder_path: Optional[str] = rest_field( + name="targetFolderPath", visibility=["read", "create", "update", "delete", "query"] + ) + """The destination folder path in the target file share.""" + identity: Optional["_models.ManagedServiceIdentity"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The system-assigned and/or user-assigned managed identities used for restore.""" + copy_options: Optional[Union[str, "_models.CopyOptions"]] = rest_field( + name="copyOptions", visibility=["read", "create", "update", "delete", "query"] + ) + """The behavior when a copied file already exists. Known values are: \"Overwrite\" and \"Skip\".""" + + @overload + def __init__( + self, + *, + storage_account: "_models.TargetResourceSpec", + target_name_prefix: Optional[str] = None, + target_folder_path: Optional[str] = None, + identity: Optional["_models.ManagedServiceIdentity"] = None, + copy_options: Optional[Union[str, "_models.CopyOptions"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.workload_type = WorkloadType.AZURE_FILE_SHARE # type: ignore + + class GoalAssignment(ProxyResource): # pylint: disable=docstring-keyword-should-match-keyword-only """A goal assignment resource in the Azure Resilience Management provider. @@ -2363,6 +2784,11 @@ class GoalAssignmentProperties(_Model): # pylint: disable=docstring-keyword-sho :ivar require_zonal_resiliency: Whether zonal resiliency is required for this goal assignment. Required. :vartype require_zonal_resiliency: bool + :ivar require_regional_resiliency: Whether regional resiliency is required for this goal + assignment. + :vartype require_regional_resiliency: bool + :ivar regional_objectives: Recovery objectives targeted for regional resiliency. + :vartype regional_objectives: ~azure.mgmt.resiliencemanagement.models.RegionalObjectives :ivar service_level_resources: List of service level resources. :vartype service_level_resources: list[~azure.mgmt.resiliencemanagement.models.ServiceLevelResource] @@ -2378,6 +2804,14 @@ class GoalAssignmentProperties(_Model): # pylint: disable=docstring-keyword-sho name="requireZonalResiliency", visibility=["read", "create", "update", "delete", "query"] ) """Whether zonal resiliency is required for this goal assignment. Required.""" + require_regional_resiliency: Optional[bool] = rest_field( + name="requireRegionalResiliency", visibility=["read", "create", "update", "delete", "query"] + ) + """Whether regional resiliency is required for this goal assignment.""" + regional_objectives: Optional["_models.RegionalObjectives"] = rest_field( + name="regionalObjectives", visibility=["read", "create", "update", "delete", "query"] + ) + """Recovery objectives targeted for regional resiliency.""" service_level_resources: Optional[list["_models.ServiceLevelResource"]] = rest_field( name="serviceLevelResources", visibility=["read", "create", "update", "delete", "query"] ) @@ -2396,6 +2830,8 @@ def __init__( self, *, require_zonal_resiliency: bool, + require_regional_resiliency: Optional[bool] = None, + regional_objectives: Optional["_models.RegionalObjectives"] = None, service_level_resources: Optional[list["_models.ServiceLevelResource"]] = None, ) -> None: ... @@ -2492,6 +2928,9 @@ class GoalResourceProperties(_Model): # pylint: disable=docstring-keyword-shoul :ivar zonal_resiliency: The zonal resiliency posture for the ARM resource, including participation, attestation, exclusion reason, and user confirmations. :vartype zonal_resiliency: ~azure.mgmt.resiliencemanagement.models.ResiliencyProperties + :ivar regional_resiliency: The regional resiliency posture for the ARM resource, including + participation, attestation, exclusion reason, and user confirmations. + :vartype regional_resiliency: ~azure.mgmt.resiliencemanagement.models.ResiliencyProperties :ivar provisioning_state: The provisioning state of the goal resource. Known values are: "Succeeded", "Failed", "Canceled", "Provisioning", "Updating", "Deleting", "Accepted", and "NeedsAttention". @@ -2505,6 +2944,11 @@ class GoalResourceProperties(_Model): # pylint: disable=docstring-keyword-shoul ) """The zonal resiliency posture for the ARM resource, including participation, attestation, exclusion reason, and user confirmations.""" + regional_resiliency: Optional["_models.ResiliencyProperties"] = rest_field( + name="regionalResiliency", visibility=["read", "create", "update", "delete", "query"] + ) + """The regional resiliency posture for the ARM resource, including participation, attestation, + exclusion reason, and user confirmations.""" provisioning_state: Optional[Union[str, "_models.ProvisioningState"]] = rest_field( name="provisioningState", visibility=["read"] ) @@ -2518,6 +2962,7 @@ def __init__( *, resource_arm_id: str, zonal_resiliency: Optional["_models.ResiliencyProperties"] = None, + regional_resiliency: Optional["_models.ResiliencyProperties"] = None, ) -> None: ... @overload @@ -2539,6 +2984,9 @@ class GoalsData(_Model): # pylint: disable=docstring-keyword-should-match-keywo :ivar zonal_resiliency: Zonal resiliency goal copied from the goal assignment. :vartype zonal_resiliency: ~azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemGoalRequirement + :ivar regional_resiliency: Regional resiliency goal copied from the goal assignment. + :vartype regional_resiliency: + ~azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemGoalRequirement """ assignment_id: str = rest_field(name="assignmentId", visibility=["read", "create", "update", "delete", "query"]) @@ -2547,6 +2995,10 @@ class GoalsData(_Model): # pylint: disable=docstring-keyword-should-match-keywo name="zonalResiliency", visibility=["read", "create", "update", "delete", "query"] ) """Zonal resiliency goal copied from the goal assignment.""" + regional_resiliency: Optional["_models.UnifiedResilienceItemGoalRequirement"] = rest_field( + name="regionalResiliency", visibility=["read", "create", "update", "delete", "query"] + ) + """Regional resiliency goal copied from the goal assignment.""" @overload def __init__( @@ -2554,6 +3006,7 @@ def __init__( *, assignment_id: str, zonal_resiliency: Optional["_models.UnifiedResilienceItemGoalRequirement"] = None, + regional_resiliency: Optional["_models.UnifiedResilienceItemGoalRequirement"] = None, ) -> None: ... @overload @@ -2640,48 +3093,144 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JobErrorInfo(_Model): - """Job Error information. +class InfrastructureResiliencyGroupProperties( + RecoveryGroupResiliencyProperties, discriminator="InfrastructureResiliency" +): + """Infrastructure resiliency properties for a recovery orchestration group. - :ivar error_code: A code representing the error. - :vartype error_code: str - :ivar error_message: A detailed message explaining the error. - :vartype error_message: str - :ivar recommendations: A list of recommendations to resolve the error. - :vartype recommendations: list[str] + :ivar resiliency_type: The resiliency type represented by these properties. Required. + Infrastructure resiliency properties. + :vartype resiliency_type: str or + ~azure.mgmt.resiliencemanagement.models.INFRASTRUCTURE_RESILIENCY """ - error_code: Optional[str] = rest_field(name="errorCode", visibility=["read"]) - """A code representing the error.""" - error_message: Optional[str] = rest_field(name="errorMessage", visibility=["read"]) - """A detailed message explaining the error.""" - recommendations: Optional[list[str]] = rest_field(visibility=["read"]) - """A list of recommendations to resolve the error.""" + resiliency_type: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] = rest_discriminator(name="resiliencyType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The resiliency type represented by these properties. Required. Infrastructure resiliency + properties.""" + @overload + def __init__( + self, + ) -> None: ... -class JobExtendedInfo(_Model): - """Additional information for job. + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ - :ivar tasks_list: List of tasks associated with this job. - :vartype tasks_list: list[~azure.mgmt.resiliencemanagement.models.JobTaskDetail] - :ivar dynamic_error_message: Non localized error message on job execution. - :vartype dynamic_error_message: str - """ + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.resiliency_type = ResiliencyType.INFRASTRUCTURE_RESILIENCY # type: ignore - tasks_list: Optional[list["_models.JobTaskDetail"]] = rest_field(name="tasksList", visibility=["read"]) - """List of tasks associated with this job.""" - dynamic_error_message: Optional[str] = rest_field(name="dynamicErrorMessage", visibility=["read"]) - """Non localized error message on job execution.""" +class InfrastructureResiliencyPlanProperties( + RecoveryPlanResiliencyProperties, discriminator="InfrastructureResiliency" +): + """Infrastructure resiliency properties for a recovery plan. -class JobRetryDetails(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only - """Job Retry Details. + :ivar resiliency_type: The resiliency type represented by these properties. Required. + Infrastructure resiliency properties. + :vartype resiliency_type: str or + ~azure.mgmt.resiliencemanagement.models.INFRASTRUCTURE_RESILIENCY + """ - :ivar status: The current status of the job execution. Known values are: "NotApplicable", - "NotStarted", "Pending", "InProgress", "Completed", "CompletedWithWarnings", "Failed", - "Skipped", "Cancelling", "Cancelled", and "Paused". - :vartype status: str or ~azure.mgmt.resiliencemanagement.models.JobStatus - :ivar start_time: The start time of the job execution. + resiliency_type: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] = rest_discriminator(name="resiliencyType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The resiliency type represented by these properties. Required. Infrastructure resiliency + properties.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.resiliency_type = ResiliencyType.INFRASTRUCTURE_RESILIENCY # type: ignore + + +class InfrastructureResiliencyResourceProperties( + RecoveryResourceResiliencyProperties, discriminator="InfrastructureResiliency" +): # pylint: disable=name-too-long + """Infrastructure resiliency properties for a recovery resource. + + :ivar resiliency_type: The resiliency type represented by these properties. Required. + Infrastructure resiliency properties. + :vartype resiliency_type: str or + ~azure.mgmt.resiliencemanagement.models.INFRASTRUCTURE_RESILIENCY + """ + + resiliency_type: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] = rest_discriminator(name="resiliencyType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The resiliency type represented by these properties. Required. Infrastructure resiliency + properties.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.resiliency_type = ResiliencyType.INFRASTRUCTURE_RESILIENCY # type: ignore + + +class JobErrorInfo(_Model): + """Job Error information. + + :ivar error_code: A code representing the error. + :vartype error_code: str + :ivar error_message: A detailed message explaining the error. + :vartype error_message: str + :ivar recommendations: A list of recommendations to resolve the error. + :vartype recommendations: list[str] + """ + + error_code: Optional[str] = rest_field(name="errorCode", visibility=["read"]) + """A code representing the error.""" + error_message: Optional[str] = rest_field(name="errorMessage", visibility=["read"]) + """A detailed message explaining the error.""" + recommendations: Optional[list[str]] = rest_field(visibility=["read"]) + """A list of recommendations to resolve the error.""" + + +class JobExtendedInfo(_Model): + """Additional information for job. + + :ivar tasks_list: List of tasks associated with this job. + :vartype tasks_list: list[~azure.mgmt.resiliencemanagement.models.JobTaskDetail] + :ivar dynamic_error_message: Non localized error message on job execution. + :vartype dynamic_error_message: str + """ + + tasks_list: Optional[list["_models.JobTaskDetail"]] = rest_field(name="tasksList", visibility=["read"]) + """List of tasks associated with this job.""" + dynamic_error_message: Optional[str] = rest_field(name="dynamicErrorMessage", visibility=["read"]) + """Non localized error message on job execution.""" + + +class JobRetryDetails(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Job Retry Details. + + :ivar status: The current status of the job execution. Known values are: "NotApplicable", + "NotStarted", "Pending", "InProgress", "Completed", "CompletedWithWarnings", "Failed", + "Skipped", "Cancelling", "Cancelled", and "Paused". + :vartype status: str or ~azure.mgmt.resiliencemanagement.models.JobStatus + :ivar start_time: The start time of the job execution. :vartype start_time: ~datetime.datetime :ivar end_time: The end time of the job execution. :vartype end_time: ~datetime.datetime @@ -2841,6 +3390,8 @@ class LastRunProperties(_Model): :ivar last_run_attestation: Attestation state of the last run of this Drill. Known values are: "Success" and "Failed". :vartype last_run_attestation: str or ~azure.mgmt.resiliencemanagement.models.DrillAttestation + :ivar last_run_recovery_time_actual: Actual recovery time of the last run of this Drill. + :vartype last_run_recovery_time_actual: ~datetime.timedelta """ last_run_time: Optional[datetime.datetime] = rest_field(name="lastRunTime", visibility=["read"], format="rfc3339") @@ -2855,6 +3406,10 @@ class LastRunProperties(_Model): name="lastRunAttestation", visibility=["read"] ) """Attestation state of the last run of this Drill. Known values are: \"Success\" and \"Failed\".""" + last_run_recovery_time_actual: Optional[datetime.timedelta] = rest_field( + name="lastRunRecoveryTimeActual", visibility=["read"] + ) + """Actual recovery time of the last run of this Drill.""" class ListReportDownloadUrlRequest(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only @@ -3262,6 +3817,44 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class ProtectedItemDetails(_Model): + """Backup protection details for a protected item. + + :ivar vault_resource_id: The Azure resource identifier of the backup vault protecting the item. + :vartype vault_resource_id: str + :ivar container_resource_id: The Azure resource identifier of the container for a + non-Azure-resource child. + :vartype container_resource_id: str + :ivar protected_item_id: The Azure resource identifier of the protected item in the backup + vault. + :vartype protected_item_id: str + :ivar protection_state: The current backup protection state of the item. Known values are: + "Unknown", "Protected", and "NotProtected". + :vartype protection_state: str or + ~azure.mgmt.resiliencemanagement.models.ResourceProtectionState + :ivar location: The location of the protected resource. + :vartype location: str + :ivar recovery_locations: The locations that support recovery of the protected item. + :vartype recovery_locations: list[str] + """ + + vault_resource_id: Optional[str] = rest_field(name="vaultResourceId", visibility=["read"]) + """The Azure resource identifier of the backup vault protecting the item.""" + container_resource_id: Optional[str] = rest_field(name="containerResourceId", visibility=["read"]) + """The Azure resource identifier of the container for a non-Azure-resource child.""" + protected_item_id: Optional[str] = rest_field(name="protectedItemId", visibility=["read"]) + """The Azure resource identifier of the protected item in the backup vault.""" + protection_state: Optional[Union[str, "_models.ResourceProtectionState"]] = rest_field( + name="protectionState", visibility=["read"] + ) + """The current backup protection state of the item. Known values are: \"Unknown\", \"Protected\", + and \"NotProtected\".""" + location: Optional[str] = rest_field(visibility=["read"]) + """The location of the protected resource.""" + recovery_locations: Optional[list[str]] = rest_field(name="recoveryLocations", visibility=["read"]) + """The locations that support recovery of the protected item.""" + + class RecommendCapacityRequest(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """Request body for the recommend capacity action. Provide specific resource IDs to evaluate, or pass an empty array to let the service automatically select non-resilient resources from the @@ -3324,6 +3917,168 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class RecoveryConfigProfile(ProxyResource): # pylint: disable=docstring-keyword-should-match-keyword-only + """A reusable, plan-scoped clean-room recovery configuration. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.resiliencemanagement.models.SystemData + :ivar properties: The resource-specific properties for this resource. + :vartype properties: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfileProperties + """ + + properties: Optional["_models.RecoveryConfigProfileProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The resource-specific properties for this resource.""" + + @overload + def __init__( + self, + *, + properties: Optional["_models.RecoveryConfigProfileProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class RecoveryConfigProfileAssociation(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Associates a workload type with a plan-scoped recovery configuration profile. + + :ivar workload_type: The workload type configured by the profile. Required. Known values are: + "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", "OracleInAzureVm", + and "AzureFileShare". + :vartype workload_type: str or ~azure.mgmt.resiliencemanagement.models.WorkloadType + :ivar recovery_config_profile_id: The Azure resource identifier of the plan-scoped recovery + configuration profile. Required. + :vartype recovery_config_profile_id: str + """ + + workload_type: Union[str, "_models.WorkloadType"] = rest_field( + name="workloadType", visibility=["read", "create", "update", "delete", "query"] + ) + """The workload type configured by the profile. Required. Known values are: \"AzureVm\", + \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", \"OracleInAzureVm\", and + \"AzureFileShare\".""" + recovery_config_profile_id: str = rest_field( + name="recoveryConfigProfileId", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure resource identifier of the plan-scoped recovery configuration profile. Required.""" + + @overload + def __init__( + self, + *, + workload_type: Union[str, "_models.WorkloadType"], + recovery_config_profile_id: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class RecoveryConfigProfileProperties(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Properties of a plan-scoped recovery configuration profile. + + :ivar workload_type: The workload type configured by this profile. This response-only value is + populated by the service from workloadConfig.workloadType. Required. Known values are: + "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", "OracleInAzureVm", + and "AzureFileShare". + :vartype workload_type: str or ~azure.mgmt.resiliencemanagement.models.WorkloadType + :ivar target_scope: The subscription and location targeted by this profile. Required. + :vartype target_scope: ~azure.mgmt.resiliencemanagement.models.TargetScope + :ivar workload_config: The workload-specific recovery configuration. Required. + :vartype workload_config: ~azure.mgmt.resiliencemanagement.models.WorkloadConfig + :ivar recovery_point_policy: Default recovery point selection. + :vartype recovery_point_policy: ~azure.mgmt.resiliencemanagement.models.RecoveryPointPolicy + :ivar provisioning_state: The provisioning state of the recovery configuration profile. Known + values are: "Succeeded", "Failed", "Canceled", "Provisioning", "Updating", "Deleting", + "Accepted", and "NeedsAttention". + :vartype provisioning_state: str or ~azure.mgmt.resiliencemanagement.models.ProvisioningState + :ivar needs_attention: Indicates whether the profile requires user attention. + :vartype needs_attention: bool + :ivar attention_reasons: Structured reasons that the profile requires attention. + :vartype attention_reasons: list[str] + :ivar effective_configuration: The effective profile configuration resolved at read time. + :vartype effective_configuration: + ~azure.mgmt.resiliencemanagement.models.EffectiveConfiguration + """ + + workload_type: Union[str, "_models.WorkloadType"] = rest_field(name="workloadType", visibility=["read"]) + """The workload type configured by this profile. This response-only value is populated by the + service from workloadConfig.workloadType. Required. Known values are: \"AzureVm\", + \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", \"OracleInAzureVm\", and + \"AzureFileShare\".""" + target_scope: "_models.TargetScope" = rest_field( + name="targetScope", visibility=["read", "create", "update", "delete", "query"] + ) + """The subscription and location targeted by this profile. Required.""" + workload_config: "_models.WorkloadConfig" = rest_field( + name="workloadConfig", visibility=["read", "create", "update", "delete", "query"] + ) + """The workload-specific recovery configuration. Required.""" + recovery_point_policy: Optional["_models.RecoveryPointPolicy"] = rest_field( + name="recoveryPointPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """Default recovery point selection.""" + provisioning_state: Optional[Union[str, "_models.ProvisioningState"]] = rest_field( + name="provisioningState", visibility=["read"] + ) + """The provisioning state of the recovery configuration profile. Known values are: \"Succeeded\", + \"Failed\", \"Canceled\", \"Provisioning\", \"Updating\", \"Deleting\", \"Accepted\", and + \"NeedsAttention\".""" + needs_attention: Optional[bool] = rest_field(name="needsAttention", visibility=["read"]) + """Indicates whether the profile requires user attention.""" + attention_reasons: Optional[list[str]] = rest_field(name="attentionReasons", visibility=["read"]) + """Structured reasons that the profile requires attention.""" + effective_configuration: Optional["_models.EffectiveConfiguration"] = rest_field( + name="effectiveConfiguration", visibility=["read"] + ) + """The effective profile configuration resolved at read time.""" + + @overload + def __init__( + self, + *, + target_scope: "_models.TargetScope", + workload_config: "_models.WorkloadConfig", + recovery_point_policy: Optional["_models.RecoveryPointPolicy"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class RecoveryGroup(ProxyResource): # pylint: disable=docstring-keyword-should-match-keyword-only """Represents a recovery orchestration group resource in the Azure Resilience Management provider namespace. @@ -3575,6 +4330,10 @@ class RecoveryGroupProperties(_Model): # pylint: disable=docstring-keyword-shou :vartype pre_actions: list[~azure.mgmt.resiliencemanagement.models.RecoveryGroupBaseAction] :ivar post_actions: Post-actions for the recovery orchestration group. :vartype post_actions: list[~azure.mgmt.resiliencemanagement.models.RecoveryGroupBaseAction] + :ivar resiliency_group_properties: Resiliency-specific properties for the recovery + orchestration group. + :vartype resiliency_group_properties: + ~azure.mgmt.resiliencemanagement.models.RecoveryGroupResiliencyProperties """ group_unique_id: str = rest_field(name="groupUniqueId", visibility=["read", "create", "update", "delete", "query"]) @@ -3591,6 +4350,10 @@ class RecoveryGroupProperties(_Model): # pylint: disable=docstring-keyword-shou name="postActions", visibility=["read", "create", "update", "delete", "query"] ) """Post-actions for the recovery orchestration group.""" + resiliency_group_properties: Optional["_models.RecoveryGroupResiliencyProperties"] = rest_field( + name="resiliencyGroupProperties", visibility=["read", "create", "update", "delete", "query"] + ) + """Resiliency-specific properties for the recovery orchestration group.""" @overload def __init__( @@ -3601,6 +4364,7 @@ def __init__( description: str, pre_actions: Optional[list["_models.RecoveryGroupBaseAction"]] = None, post_actions: Optional[list["_models.RecoveryGroupBaseAction"]] = None, + resiliency_group_properties: Optional["_models.RecoveryGroupResiliencyProperties"] = None, ) -> None: ... @overload @@ -3852,8 +4616,9 @@ class RecoveryJobResourceProperties( "NeedsAttention". :vartype provisioning_state: str or ~azure.mgmt.resiliencemanagement.models.ProvisioningState :ivar protection_solution_type: A setting that indicates the protection solution selected. - Known values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", and - "CustomRunbook". + Known values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", + "CustomRunbook", "AzureTemplate", "AzureStorageAccount", "AzureServiceBus", "AzureNetAppFiles", + and "AzureCosmosDB". :vartype protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType :ivar recovery_group_action_settings: The recovery action settings. @@ -3874,7 +4639,9 @@ class RecoveryJobResourceProperties( name="protectionSolutionType", visibility=["read"] ) """A setting that indicates the protection solution selected. Known values are: \"None\", - \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and \"CustomRunbook\".""" + \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", \"CustomRunbook\", + \"AzureTemplate\", \"AzureStorageAccount\", \"AzureServiceBus\", \"AzureNetAppFiles\", and + \"AzureCosmosDB\".""" recovery_group_action_settings: Optional["_models.RecoveryGroupActionSettings"] = rest_field( name="recoveryGroupActionSettings", visibility=["read"] ) @@ -4051,7 +4818,8 @@ class RecoveryPlanProperties(_Model): # pylint: disable=docstring-keyword-shoul "Accepted", and "NeedsAttention". :vartype provisioning_state: str or ~azure.mgmt.resiliencemanagement.models.ProvisioningState :ivar plan_type: The type of the recovery orchestration plan, which can be set during creation - but cannot be changed afterward. Required. Known values are: "Regional" and "Zonal". + but cannot be changed afterward. Required. Known values are: "Regional", "Zonal", and + "CyberRecovery". :vartype plan_type: str or ~azure.mgmt.resiliencemanagement.models.RecoveryPlanType :ivar plan_state: The current state of the recovery orchestration plan. Known values are: "UnderEdit", "Warning", and "Ready". @@ -4061,6 +4829,9 @@ class RecoveryPlanProperties(_Model): # pylint: disable=docstring-keyword-shoul :ivar recovery_groups_setting: Settings for the recovery orchestration groups associated with the recovery orchestration plan. Required. :vartype recovery_groups_setting: ~azure.mgmt.resiliencemanagement.models.RecoveryGroupsSetting + :ivar resiliency_plan_properties: Resiliency-specific properties for the recovery plan. + :vartype resiliency_plan_properties: + ~azure.mgmt.resiliencemanagement.models.RecoveryPlanResiliencyProperties :ivar latest_failover_status: The status of the most recent failover operation executed. :vartype latest_failover_status: ~azure.mgmt.resiliencemanagement.models.RecoveryPlanFailoverOperationStatus @@ -4079,7 +4850,7 @@ class RecoveryPlanProperties(_Model): # pylint: disable=docstring-keyword-shoul \"NeedsAttention\".""" plan_type: Union[str, "_models.RecoveryPlanType"] = rest_field(name="planType", visibility=["create"]) """The type of the recovery orchestration plan, which can be set during creation but cannot be - changed afterward. Required. Known values are: \"Regional\" and \"Zonal\".""" + changed afterward. Required. Known values are: \"Regional\", \"Zonal\", and \"CyberRecovery\".""" plan_state: Optional[Union[str, "_models.RecoveryPlanState"]] = rest_field(name="planState", visibility=["read"]) """The current state of the recovery orchestration plan. Known values are: \"UnderEdit\", \"Warning\", and \"Ready\".""" @@ -4092,6 +4863,10 @@ class RecoveryPlanProperties(_Model): # pylint: disable=docstring-keyword-shoul ) """Settings for the recovery orchestration groups associated with the recovery orchestration plan. Required.""" + resiliency_plan_properties: Optional["_models.RecoveryPlanResiliencyProperties"] = rest_field( + name="resiliencyPlanProperties", visibility=["read", "create", "update", "delete", "query"] + ) + """Resiliency-specific properties for the recovery plan.""" latest_failover_status: Optional["_models.RecoveryPlanFailoverOperationStatus"] = rest_field( name="latestFailoverStatus", visibility=["read"] ) @@ -4110,6 +4885,7 @@ def __init__( plan_type: Union[str, "_models.RecoveryPlanType"], plan_description: str, recovery_groups_setting: "_models.RecoveryGroupsSetting", + resiliency_plan_properties: Optional["_models.RecoveryPlanResiliencyProperties"] = None, ) -> None: ... @overload @@ -4161,6 +4937,94 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class RecoveryPointPolicy(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Default recovery point selection for a recovery configuration profile. + + :ivar type: The recovery point selection policy type. Required. Known values are: "Latest" and + "Random". + :vartype type: str or ~azure.mgmt.resiliencemanagement.models.RecoveryPointPolicyType + :ivar start_time: The inclusive lower time bound. Required with endTime for Random selection + when lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration. + :vartype start_time: ~datetime.datetime + :ivar end_time: The inclusive upper time bound. Required with startTime for Random selection + when lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration. + :vartype end_time: ~datetime.datetime + :ivar lookback_duration: A positive, fixed ISO 8601 duration for relative Random selection, + such as P10D or PT12H. Only days, hours, minutes, and seconds are supported; calendar-dependent + months and years are not supported. Mutually exclusive with startTime and endTime. The service + resolves the duration to absolute bounds at execution time without modifying the saved profile. + :vartype lookback_duration: ~datetime.timedelta + :ivar backup_type: The explicit, non-empty list of unique backup mechanisms to consider. Random + selection cannot include Log, even when other mechanisms are also selected. Required. + :vartype backup_type: list[str or ~azure.mgmt.resiliencemanagement.models.BackupType] + :ivar recovery_point_health_status: The health filter for discrete recovery points. Omission + means All. Log and point-in-time recovery candidates are not health-filtered. Known values are: + "HealthyOnly", "HealthyAndUnknown", and "All". + :vartype recovery_point_health_status: str or + ~azure.mgmt.resiliencemanagement.models.RecoveryPointHealthStatus + """ + + type: Union[str, "_models.RecoveryPointPolicyType"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The recovery point selection policy type. Required. Known values are: \"Latest\" and + \"Random\".""" + start_time: Optional[datetime.datetime] = rest_field( + name="startTime", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The inclusive lower time bound. Required with endTime for Random selection when + lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration.""" + end_time: Optional[datetime.datetime] = rest_field( + name="endTime", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The inclusive upper time bound. Required with startTime for Random selection when + lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration.""" + lookback_duration: Optional[datetime.timedelta] = rest_field( + name="lookbackDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """A positive, fixed ISO 8601 duration for relative Random selection, such as P10D or PT12H. Only + days, hours, minutes, and seconds are supported; calendar-dependent months and years are not + supported. Mutually exclusive with startTime and endTime. The service resolves the duration to + absolute bounds at execution time without modifying the saved profile.""" + backup_type: list[Union[str, "_models.BackupType"]] = rest_field( + name="backupType", visibility=["read", "create", "update", "delete", "query"] + ) + """The explicit, non-empty list of unique backup mechanisms to consider. Random selection cannot + include Log, even when other mechanisms are also selected. Required.""" + recovery_point_health_status: Optional[Union[str, "_models.RecoveryPointHealthStatus"]] = rest_field( + name="recoveryPointHealthStatus", visibility=["read", "create", "update", "delete", "query"] + ) + """The health filter for discrete recovery points. Omission means All. Log and point-in-time + recovery candidates are not health-filtered. Known values are: \"HealthyOnly\", + \"HealthyAndUnknown\", and \"All\".""" + + @overload + def __init__( + self, + *, + type: Union[str, "_models.RecoveryPointPolicyType"], + backup_type: list[Union[str, "_models.BackupType"]], + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + lookback_duration: Optional[datetime.timedelta] = None, + recovery_point_health_status: Optional[Union[str, "_models.RecoveryPointHealthStatus"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class RecoveryResource(ProxyResource): # pylint: disable=docstring-keyword-should-match-keyword-only """RecoveryPlan Resource a AzureResilienceProviderHub resource. @@ -4224,6 +5088,10 @@ class RecoveryResourceProperties(_Model): # pylint: disable=docstring-keyword-s :ivar inclusion_state: A state that indicates the resource status with respect to the recovery orchestration plan. Known values are: "Included" and "Excluded". :vartype inclusion_state: str or ~azure.mgmt.resiliencemanagement.models.ResourceInclusionState + :ivar inclusion_disabled_reasons: Reasons why inclusion of the resource in a recovery plan is + disabled. + :vartype inclusion_disabled_reasons: list[str or + ~azure.mgmt.resiliencemanagement.models.ResourceInclusionDisabledReason] :ivar needs_attention: Indicating if resource needs user attention and action, details will be found in attentionReasons. :vartype needs_attention: bool @@ -4240,7 +5108,8 @@ class RecoveryResourceProperties(_Model): # pylint: disable=docstring-keyword-s list[~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionSettings] :ivar selected_protection_solution_type: A setting that indicates the protection solution selected. Known values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", - and "CustomRunbook". + "CustomRunbook", "AzureTemplate", "AzureStorageAccount", "AzureServiceBus", "AzureNetAppFiles", + and "AzureCosmosDB". :vartype selected_protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType :ivar selected_protection_solution_setting: Resource protection solution settings of the @@ -4255,6 +5124,9 @@ class RecoveryResourceProperties(_Model): # pylint: disable=docstring-keyword-s :vartype associated_identity: ~azure.mgmt.resiliencemanagement.models.AssociatedIdentity :ivar error_details: Error details associated with the resource. :vartype error_details: ~azure.mgmt.resiliencemanagement.models.ErrorDetail + :ivar resiliency_resource_properties: Resiliency-specific properties for the recovery resource. + :vartype resiliency_resource_properties: + ~azure.mgmt.resiliencemanagement.models.RecoveryResourceResiliencyProperties """ recovery_resource_unique_id: str = rest_field( @@ -4280,6 +5152,10 @@ class RecoveryResourceProperties(_Model): # pylint: disable=docstring-keyword-s ) """A state that indicates the resource status with respect to the recovery orchestration plan. Known values are: \"Included\" and \"Excluded\".""" + inclusion_disabled_reasons: Optional[list[Union[str, "_models.ResourceInclusionDisabledReason"]]] = rest_field( + name="inclusionDisabledReasons", visibility=["read"] + ) + """Reasons why inclusion of the resource in a recovery plan is disabled.""" needs_attention: Optional[bool] = rest_field(name="needsAttention", visibility=["read"]) """Indicating if resource needs user attention and action, details will be found in attentionReasons.""" @@ -4300,7 +5176,9 @@ class RecoveryResourceProperties(_Model): # pylint: disable=docstring-keyword-s name="selectedProtectionSolutionType", visibility=["read", "create", "update", "delete", "query"] ) """A setting that indicates the protection solution selected. Known values are: \"None\", - \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and \"CustomRunbook\".""" + \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", \"CustomRunbook\", + \"AzureTemplate\", \"AzureStorageAccount\", \"AzureServiceBus\", \"AzureNetAppFiles\", and + \"AzureCosmosDB\".""" selected_protection_solution_setting: Optional["_models.ResourceBaseProtectionSolutionSetting"] = rest_field( name="selectedProtectionSolutionSetting", visibility=["read", "create", "update", "delete", "query"] ) @@ -4317,6 +5195,10 @@ class RecoveryResourceProperties(_Model): # pylint: disable=docstring-keyword-s on it.""" error_details: Optional["_models.ErrorDetail"] = rest_field(name="errorDetails", visibility=["read"]) """Error details associated with the resource.""" + resiliency_resource_properties: Optional["_models.RecoveryResourceResiliencyProperties"] = rest_field( + name="resiliencyResourceProperties", visibility=["read", "create", "update", "delete", "query"] + ) + """Resiliency-specific properties for the recovery resource.""" @overload def __init__( @@ -4328,6 +5210,7 @@ def __init__( selected_protection_solution_setting: Optional["_models.ResourceBaseProtectionSolutionSetting"] = None, recovery_group_id: Optional[str] = None, associated_identity: Optional["_models.AssociatedIdentity"] = None, + resiliency_resource_properties: Optional["_models.RecoveryResourceResiliencyProperties"] = None, ) -> None: ... @overload @@ -4491,8 +5374,9 @@ class RegionalDrillResourceProperties( :vartype recovery_plan_exclusion_reason: str or ~azure.mgmt.resiliencemanagement.models.RecoveryPlanExclusionReason :ivar resource_protection_solution_type: Protection Solution Type of the Drill resource. Known - values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", and - "CustomRunbook". + values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", "CustomRunbook", + "AzureTemplate", "AzureStorageAccount", "AzureServiceBus", "AzureNetAppFiles", and + "AzureCosmosDB". :vartype resource_protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType :ivar readiness_state: Readiness State of the Drill resource. Known values are: "Ready" and @@ -4519,14 +5403,60 @@ class RegionalDrillResourceProperties( :ivar provisioning_state: Provisioning state. Known values are: "Succeeded", "Failed", "Canceled", "Provisioning", "Updating", "Deleting", "Accepted", and "NeedsAttention". :vartype provisioning_state: str or ~azure.mgmt.resiliencemanagement.models.ProvisioningState + :ivar fault_eligibility: Normal fault eligibility for a drill resource. Currently populated for + regional resources only. Omitted until evaluated. Eligibility does not indicate inclusion or + readiness, and force inclusion does not change this value. Known values are: "Unknown", + "Eligible", and "Ineligible". + :vartype fault_eligibility: str or ~azure.mgmt.resiliencemanagement.models.FaultEligibility + :ivar fault_ineligible_reason: Reason the resource is ineligible under normal fault inclusion + policy. Currently populated for regional resources only. Contains the single applicable + recovery-plan reason when Ineligible. Omitted when Eligible, Unknown, or not yet evaluated. + Failed or incomplete recovery-plan reads do not establish non-inclusion. Binding and permission + errors are reported separately in attentionReason and error fields. Known values are: + "RecoveryPlanNotConfigured" and "ResourceNotIncludedInRecoveryPlan". + :vartype fault_ineligible_reason: str or + ~azure.mgmt.resiliencemanagement.models.FaultIneligibleReason :ivar drill_type: The discriminator for the Drill Resource object hierarchy. Matches the parent Drill type. Required. Regional Drill. :vartype drill_type: str or ~azure.mgmt.resiliencemanagement.models.REGIONAL + :ivar regional_resiliency_status: Regional resiliency status reported by the selected regional + protection solution. Resilient corresponds to an available true posture value; NotResilient + corresponds to an available false value. Omitted when the posture is unknown or unavailable; + unavailable data is not reported as NotResilient. Known values are: "Resilient" and + "NotResilient". + :vartype regional_resiliency_status: str or + ~azure.mgmt.resiliencemanagement.models.RegionalResiliencyStatus + :ivar replication_mode: Replication mode of the selected regional protection solution. Omitted + when no applicable mode is available. Known values are: "None", "ActiveActive", and + "ActivePassive". + :vartype replication_mode: str or ~azure.mgmt.resiliencemanagement.models.ReplicationMode + :ivar advisor_regional_recommendation_id: Azure resource ID of the matching regional Advisor + recommendation instance. The recommendation type is identified separately by + advisorRecommendationTypeId. Omitted when no matching recommendation exists. + :vartype advisor_regional_recommendation_id: str """ drill_type: Literal[DrillType.REGIONAL] = rest_discriminator(name="drillType", visibility=["read"]) # type: ignore """The discriminator for the Drill Resource object hierarchy. Matches the parent Drill type. Required. Regional Drill.""" + regional_resiliency_status: Optional[Union[str, "_models.RegionalResiliencyStatus"]] = rest_field( + name="regionalResiliencyStatus", visibility=["read"] + ) + """Regional resiliency status reported by the selected regional protection solution. Resilient + corresponds to an available true posture value; NotResilient corresponds to an available false + value. Omitted when the posture is unknown or unavailable; unavailable data is not reported as + NotResilient. Known values are: \"Resilient\" and \"NotResilient\".""" + replication_mode: Optional[Union[str, "_models.ReplicationMode"]] = rest_field( + name="replicationMode", visibility=["read"] + ) + """Replication mode of the selected regional protection solution. Omitted when no applicable mode + is available. Known values are: \"None\", \"ActiveActive\", and \"ActivePassive\".""" + advisor_regional_recommendation_id: Optional[str] = rest_field( + name="advisorRegionalRecommendationId", visibility=["read"] + ) + """Azure resource ID of the matching regional Advisor recommendation instance. The recommendation + type is identified separately by advisorRecommendationTypeId. Omitted when no matching + recommendation exists.""" @overload def __init__( @@ -4549,6 +5479,49 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: self.drill_type = DrillType.REGIONAL # type: ignore +class RegionalObjectives(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """Recovery objectives targeted by a goal assignment for regional resiliency. + + :ivar target_recovery_point_objective: Target regional recovery point objective. eg, PT15M for + 15 minutes. Required. Known values are: "PT15M", "PT1H", "PT4H", and "PT24H". + :vartype target_recovery_point_objective: str or + ~azure.mgmt.resiliencemanagement.models.IsoDuration + :ivar target_recovery_time_objective: Target regional recovery time objective. eg, PT1H for 1 + hour. Required. Known values are: "PT15M", "PT1H", "PT4H", and "PT24H". + :vartype target_recovery_time_objective: str or + ~azure.mgmt.resiliencemanagement.models.IsoDuration + """ + + target_recovery_point_objective: Union[str, "_models.IsoDuration"] = rest_field( + name="targetRecoveryPointObjective", visibility=["read", "create", "update", "delete", "query"] + ) + """Target regional recovery point objective. eg, PT15M for 15 minutes. Required. Known values are: + \"PT15M\", \"PT1H\", \"PT4H\", and \"PT24H\".""" + target_recovery_time_objective: Union[str, "_models.IsoDuration"] = rest_field( + name="targetRecoveryTimeObjective", visibility=["read", "create", "update", "delete", "query"] + ) + """Target regional recovery time objective. eg, PT1H for 1 hour. Required. Known values are: + \"PT15M\", \"PT1H\", \"PT4H\", and \"PT24H\".""" + + @overload + def __init__( + self, + *, + target_recovery_point_objective: Union[str, "_models.IsoDuration"], + target_recovery_time_objective: Union[str, "_models.IsoDuration"], + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class ReportStageStatus(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """Report generation status for a single Drill Run stage. @@ -4726,12 +5699,16 @@ class ResourceBaseProtectionSolutionSetting(_Model): # pylint: disable=docstrin orchestration plan. You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ResourceNativeProtectionSolutionSetting, ResourceSiteRecoveryProtectionSetting, - ResourceCrossZoneVmRecoveryProtectionSetting, ResourceCustomProtectionSetting + ResourceCosmosDBProtectionSetting, ResourceNativeProtectionSolutionSetting, + ResourceNetAppFilesProtectionSetting, ResourceServiceBusProtectionSetting, + ResourceSiteRecoveryProtectionSetting, ResourceStorageAccountProtectionSetting, + ResourceAzureTemplateProtectionSetting, ResourceCrossZoneVmRecoveryProtectionSetting, + ResourceCustomProtectionSetting :ivar protection_solution_type: A setting that indicates the resource protected with which recovery solution. Required. Known values are: "None", "AzureNative", "AzureSiteRecovery", - "CrossZoneVMRecovery", and "CustomRunbook". + "CrossZoneVMRecovery", "CustomRunbook", "AzureTemplate", "AzureStorageAccount", + "AzureServiceBus", "AzureNetAppFiles", and "AzureCosmosDB". :vartype protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType """ @@ -4741,8 +5718,9 @@ class ResourceBaseProtectionSolutionSetting(_Model): # pylint: disable=docstrin name="protectionSolutionType", visibility=["read", "create", "update", "delete", "query"] ) """A setting that indicates the resource protected with which recovery solution. Required. Known - values are: \"None\", \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and - \"CustomRunbook\".""" + values are: \"None\", \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", + \"CustomRunbook\", \"AzureTemplate\", \"AzureStorageAccount\", \"AzureServiceBus\", + \"AzureNetAppFiles\", and \"AzureCosmosDB\".""" @overload def __init__( @@ -4762,16 +5740,111 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ResourceCrossZoneVmRecoveryProtectionSetting( - ResourceBaseProtectionSolutionSetting, discriminator="CrossZoneVMRecovery" -): # pylint: disable=name-too-long,docstring-keyword-should-match-keyword-only - """Definition of recovery orchestration resource protection with cross-zone (zonally resilient) VM - recovery. +class ResourceAzureTemplateProtectionSetting( + ResourceBaseProtectionSolutionSetting, discriminator="AzureTemplate" +): # pylint: disable=docstring-keyword-should-match-keyword-only + """Definition of recovery orchestration resource protection using an Azure Resource Manager + template. - :ivar protection_solution_type: Required. Cross zone recovery enabled Azure VMs. + :ivar protection_solution_type: A setting that indicates Azure Resource Manager template-based + recovery. Required. Resource recovery is orchestrated by deploying an Azure Resource Manager + template. :vartype protection_solution_type: str or - ~azure.mgmt.resiliencemanagement.models.CROSS_ZONE_VM_RECOVERY - :ivar target_zone: Customer-requested logical target availability zone for zonal failover (a + ~azure.mgmt.resiliencemanagement.models.AZURE_TEMPLATE + :ivar template_spec_version_id: The Azure resource ID of the Template Spec version to deploy. + Required. + :vartype template_spec_version_id: str + :ivar deployment_scope: The Azure Resource Manager scope at which the recovery template is + deployed. Must be the subscription containing the protected resource, or a resource group + within it; deployments above subscription scope are not supported. Required. + :vartype deployment_scope: str + :ivar deployment_location: The location used to store deployment metadata. Required when + deploymentScope is a subscription. + :vartype deployment_location: str + """ + + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_TEMPLATE] = rest_discriminator(name="protectionSolutionType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """A setting that indicates Azure Resource Manager template-based recovery. Required. Resource + recovery is orchestrated by deploying an Azure Resource Manager template.""" + template_spec_version_id: str = rest_field( + name="templateSpecVersionId", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure resource ID of the Template Spec version to deploy. Required.""" + deployment_scope: str = rest_field( + name="deploymentScope", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure Resource Manager scope at which the recovery template is deployed. Must be the + subscription containing the protected resource, or a resource group within it; deployments + above subscription scope are not supported. Required.""" + deployment_location: Optional[str] = rest_field( + name="deploymentLocation", visibility=["read", "create", "update", "delete", "query"] + ) + """The location used to store deployment metadata. Required when deploymentScope is a + subscription.""" + + @overload + def __init__( + self, + *, + template_spec_version_id: str, + deployment_scope: str, + deployment_location: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.protection_solution_type = ResourceProtectionSolutionType.AZURE_TEMPLATE # type: ignore + + +class ResourceCosmosDBProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator="AzureCosmosDB"): + """Definition of recovery orchestration resource protection using Azure Cosmos DB. + + :ivar protection_solution_type: A setting that indicates Azure Cosmos DB protection. Required. + Resource is protected with Azure Cosmos DB multiregion replication using customer-managed + failover, where recovery promotes a secondary region to the write region. + :vartype protection_solution_type: str or + ~azure.mgmt.resiliencemanagement.models.AZURE_COSMOS_DB + """ + + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_COSMOS_DB] = rest_discriminator(name="protectionSolutionType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """A setting that indicates Azure Cosmos DB protection. Required. Resource is protected with Azure + Cosmos DB multiregion replication using customer-managed failover, where recovery promotes a + secondary region to the write region.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.protection_solution_type = ResourceProtectionSolutionType.AZURE_COSMOS_DB # type: ignore + + +class ResourceCrossZoneVmRecoveryProtectionSetting( + ResourceBaseProtectionSolutionSetting, discriminator="CrossZoneVMRecovery" +): # pylint: disable=name-too-long,docstring-keyword-should-match-keyword-only + """Definition of recovery orchestration resource protection with cross-zone (zonally resilient) VM + recovery. + + :ivar protection_solution_type: Required. Cross zone recovery enabled Azure VMs. + :vartype protection_solution_type: str or + ~azure.mgmt.resiliencemanagement.models.CROSS_ZONE_VM_RECOVERY + :ivar target_zone: Customer-requested logical target availability zone for zonal failover (a positive availability-zone id, e.g. "1", "2", "3"; additional zones are accepted where the region exposes them). Always optional; when omitted the service selects a healthy zone. Immutable per failover. @@ -5068,14 +6141,50 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: self.protection_solution_type = ResourceProtectionSolutionType.AZURE_NATIVE # type: ignore -class ResourceProtectionSolutionSettings(_Model): +class ResourceNetAppFilesProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator="AzureNetAppFiles"): + """Definition of recovery orchestration resource protection using Azure NetApp Files. + + :ivar protection_solution_type: A setting that indicates Azure NetApp Files protection. + Required. Resource is protected with Azure NetApp Files cross-region replication, where + recovery fails over to the destination volume. + :vartype protection_solution_type: str or + ~azure.mgmt.resiliencemanagement.models.AZURE_NET_APP_FILES + """ + + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_NET_APP_FILES] = rest_discriminator(name="protectionSolutionType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """A setting that indicates Azure NetApp Files protection. Required. Resource is protected with + Azure NetApp Files cross-region replication, where recovery fails over to the destination + volume.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.protection_solution_type = ResourceProtectionSolutionType.AZURE_NET_APP_FILES # type: ignore + + +class ResourceProtectionSolutionSettings(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """Definition of recovery resource resource protection solution settings. :ivar protection_solution_type: A setting that indicates the resource protected with which recovery solution. Known values are: "None", "AzureNative", "AzureSiteRecovery", - "CrossZoneVMRecovery", and "CustomRunbook". + "CrossZoneVMRecovery", "CustomRunbook", "AzureTemplate", "AzureStorageAccount", + "AzureServiceBus", "AzureNetAppFiles", and "AzureCosmosDB". :vartype protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType + :ivar replication_mode: Replication mode configured for the protected resource. Known values + are: "None", "ActiveActive", and "ActivePassive". + :vartype replication_mode: str or ~azure.mgmt.resiliencemanagement.models.ReplicationMode :ivar protection_status: A status that indicates the protection status of a resource with an Azure solution for regional or zonal recovery. Known values are: "Unknown", "Protected", "NotProtected", and "HighlyAvailable". @@ -5117,8 +6226,14 @@ class ResourceProtectionSolutionSettings(_Model): name="protectionSolutionType", visibility=["read"] ) """A setting that indicates the resource protected with which recovery solution. Known values are: - \"None\", \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and - \"CustomRunbook\".""" + \"None\", \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", \"CustomRunbook\", + \"AzureTemplate\", \"AzureStorageAccount\", \"AzureServiceBus\", \"AzureNetAppFiles\", and + \"AzureCosmosDB\".""" + replication_mode: Optional[Union[str, "_models.ReplicationMode"]] = rest_field( + name="replicationMode", visibility=["read", "create", "update", "delete", "query"] + ) + """Replication mode configured for the protected resource. Known values are: \"None\", + \"ActiveActive\", and \"ActivePassive\".""" protection_status: Optional[Union[str, "_models.ResourceProtectionStatus"]] = rest_field( name="protectionStatus", visibility=["read"] ) @@ -5161,6 +6276,55 @@ class ResourceProtectionSolutionSettings(_Model): """TestFailover state of the recovery orchestration resource. Known values are: \"None\" and \"TestFailoverCleanupPending\".""" + @overload + def __init__( + self, + *, + replication_mode: Optional[Union[str, "_models.ReplicationMode"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ResourceServiceBusProtectionSetting(ResourceBaseProtectionSolutionSetting, discriminator="AzureServiceBus"): + """Definition of recovery orchestration resource protection using Azure Service Bus. + + :ivar protection_solution_type: A setting that indicates Azure Service Bus protection. + Required. Resource is protected with Azure Service Bus geo-replication, where a premium + namespace replicates data to a secondary region and recovery promotes that secondary in place. + :vartype protection_solution_type: str or + ~azure.mgmt.resiliencemanagement.models.AZURE_SERVICE_BUS + """ + + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_SERVICE_BUS] = rest_discriminator(name="protectionSolutionType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """A setting that indicates Azure Service Bus protection. Required. Resource is protected with + Azure Service Bus geo-replication, where a premium namespace replicates data to a secondary + region and recovery promotes that secondary in place.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.protection_solution_type = ResourceProtectionSolutionType.AZURE_SERVICE_BUS # type: ignore + class ResourceSiteRecoveryProtectionSetting( ResourceBaseProtectionSolutionSetting, discriminator="AzureSiteRecovery" @@ -5311,6 +6475,38 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class ResourceStorageAccountProtectionSetting( + ResourceBaseProtectionSolutionSetting, discriminator="AzureStorageAccount" +): + """Definition of recovery orchestration resource protection using an Azure Storage account. + + :ivar protection_solution_type: A setting that indicates Azure Storage account protection. + Required. Resource is protected with Azure Storage account customer-managed failover. + :vartype protection_solution_type: str or + ~azure.mgmt.resiliencemanagement.models.AZURE_STORAGE_ACCOUNT + """ + + protection_solution_type: Literal[ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT] = rest_discriminator(name="protectionSolutionType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """A setting that indicates Azure Storage account protection. Required. Resource is protected with + Azure Storage account customer-managed failover.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.protection_solution_type = ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT # type: ignore + + class ServiceLevelResource(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """A service-level resource associated with a goal assignment. @@ -5687,6 +6883,141 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class TargetEnvironment(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """The target subscriptions and locations for cyber recovery. + + :ivar target_subscription_ids: The subscription identifiers available as recovery targets. + Required. + :vartype target_subscription_ids: list[str] + :ivar target_locations: The Azure locations available as recovery targets. Required. + :vartype target_locations: list[str] + """ + + target_subscription_ids: list[str] = rest_field( + name="targetSubscriptionIds", visibility=["read", "create", "update", "delete", "query"] + ) + """The subscription identifiers available as recovery targets. Required.""" + target_locations: list[str] = rest_field( + name="targetLocations", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure locations available as recovery targets. Required.""" + + @overload + def __init__( + self, + *, + target_subscription_ids: list[str], + target_locations: list[str], + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class TargetResourceSpec(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """A target resource required by a recovery workload. + + :ivar arm_resource_type: The full Azure resource type of the target. Supported types include + Microsoft.Resources/resourceGroups, Microsoft.Compute/virtualMachines, + Microsoft.Network/virtualNetworks, Microsoft.Network/virtualNetworks/subnets, + Microsoft.Storage/storageAccounts, Microsoft.Compute/diskEncryptionSets, + Microsoft.KeyVault/vaults, and Microsoft.Network/networkSecurityGroups. The service validates + supported target resource types. Required. + :vartype arm_resource_type: str + :ivar provisioning_mode: How the target resource is provisioned. "Existing" + :vartype provisioning_mode: str or + ~azure.mgmt.resiliencemanagement.models.TargetProvisioningMode + :ivar resource_id: The Azure resource identifier of the existing target. Required when + provisioningMode is Existing. + :vartype resource_id: str + :ivar depends_on: The target resources that this target depends on. + :vartype depends_on: list[str] + """ + + arm_resource_type: str = rest_field( + name="armResourceType", visibility=["read", "create", "update", "delete", "query"] + ) + """The full Azure resource type of the target. Supported types include + Microsoft.Resources/resourceGroups, Microsoft.Compute/virtualMachines, + Microsoft.Network/virtualNetworks, Microsoft.Network/virtualNetworks/subnets, + Microsoft.Storage/storageAccounts, Microsoft.Compute/diskEncryptionSets, + Microsoft.KeyVault/vaults, and Microsoft.Network/networkSecurityGroups. The service validates + supported target resource types. Required.""" + provisioning_mode: Optional[Union[str, "_models.TargetProvisioningMode"]] = rest_field( + name="provisioningMode", visibility=["read", "create", "update", "delete", "query"] + ) + """How the target resource is provisioned. \"Existing\"""" + resource_id: Optional[str] = rest_field( + name="resourceId", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure resource identifier of the existing target. Required when provisioningMode is + Existing.""" + depends_on: Optional[list[str]] = rest_field( + name="dependsOn", visibility=["read", "create", "update", "delete", "query"] + ) + """The target resources that this target depends on.""" + + @overload + def __init__( + self, + *, + arm_resource_type: str, + provisioning_mode: Optional[Union[str, "_models.TargetProvisioningMode"]] = None, + resource_id: Optional[str] = None, + depends_on: Optional[list[str]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class TargetScope(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only + """The subscription and location targeted by a recovery configuration profile. + + :ivar subscription_id: The target Azure subscription identifier. Required. + :vartype subscription_id: str + :ivar location: The target Azure location. Required. + :vartype location: str + """ + + subscription_id: str = rest_field(name="subscriptionId", visibility=["read", "create", "update", "delete", "query"]) + """The target Azure subscription identifier. Required.""" + location: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The target Azure location. Required.""" + + @overload + def __init__( + self, + *, + subscription_id: str, + location: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class TestFailoverCleanupRequest(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """TestFailoverCleanup post action request. @@ -5949,24 +7280,107 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class UnifiedResilienceItemRegionalResiliencyPosture( + _Model +): # pylint: disable=name-too-long,docstring-keyword-should-match-keyword-only + """Definition of the regional resiliency posture computed for the unified resilience item. + + :ivar enabled_resource_count: Count of resources that have regional resiliency enabled. + :vartype enabled_resource_count: int + :ivar not_enabled_resource_count: Count of resources that do not have regional resiliency + enabled. + :vartype not_enabled_resource_count: int + :ivar not_evaluated_resource_count: Count of resources that have not been evaluated for + regional resiliency. + :vartype not_evaluated_resource_count: int + :ivar user_confirmation_needed_count: Count of resources that require user confirmation for + regional resiliency. + :vartype user_confirmation_needed_count: int + :ivar evaluation_date_time: The date and time when the regional resiliency posture was last + evaluated. + :vartype evaluation_date_time: ~datetime.datetime + :ivar estimated_recovery_point_objective: The estimated recovery point objective computed for + the service group, expressed as an ISO 8601 duration. Known values are: "PT15M", "PT1H", + "PT4H", and "PT24H". + :vartype estimated_recovery_point_objective: str or + ~azure.mgmt.resiliencemanagement.models.IsoDuration + """ + + enabled_resource_count: Optional[int] = rest_field( + name="enabledResourceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """Count of resources that have regional resiliency enabled.""" + not_enabled_resource_count: Optional[int] = rest_field( + name="notEnabledResourceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """Count of resources that do not have regional resiliency enabled.""" + not_evaluated_resource_count: Optional[int] = rest_field( + name="notEvaluatedResourceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """Count of resources that have not been evaluated for regional resiliency.""" + user_confirmation_needed_count: Optional[int] = rest_field( + name="userConfirmationNeededCount", visibility=["read", "create", "update", "delete", "query"] + ) + """Count of resources that require user confirmation for regional resiliency.""" + evaluation_date_time: Optional[datetime.datetime] = rest_field( + name="evaluationDateTime", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The date and time when the regional resiliency posture was last evaluated.""" + estimated_recovery_point_objective: Optional[Union[str, "_models.IsoDuration"]] = rest_field( + name="estimatedRecoveryPointObjective", visibility=["read", "create", "update", "delete", "query"] + ) + """The estimated recovery point objective computed for the service group, expressed as an ISO 8601 + duration. Known values are: \"PT15M\", \"PT1H\", \"PT4H\", and \"PT24H\".""" + + @overload + def __init__( + self, + *, + enabled_resource_count: Optional[int] = None, + not_enabled_resource_count: Optional[int] = None, + not_evaluated_resource_count: Optional[int] = None, + user_confirmation_needed_count: Optional[int] = None, + evaluation_date_time: Optional[datetime.datetime] = None, + estimated_recovery_point_objective: Optional[Union[str, "_models.IsoDuration"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class UnifiedResilienceItemResiliencyPosture(_Model): # pylint: disable=docstring-keyword-should-match-keyword-only """Definition of the resiliency posture computed for the unified resilience item. :ivar zonal_resiliency: The zonal resiliency section of the resiliency posture. Required. :vartype zonal_resiliency: ~azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemZonalResiliencyPosture + :ivar regional_resiliency: The regional resiliency section of the resiliency posture. + :vartype regional_resiliency: + ~azure.mgmt.resiliencemanagement.models.UnifiedResilienceItemRegionalResiliencyPosture """ zonal_resiliency: "_models.UnifiedResilienceItemZonalResiliencyPosture" = rest_field( name="zonalResiliency", visibility=["read", "create", "update", "delete", "query"] ) """The zonal resiliency section of the resiliency posture. Required.""" + regional_resiliency: Optional["_models.UnifiedResilienceItemRegionalResiliencyPosture"] = rest_field( + name="regionalResiliency", visibility=["read", "create", "update", "delete", "query"] + ) + """The regional resiliency section of the resiliency posture.""" @overload def __init__( self, *, zonal_resiliency: "_models.UnifiedResilienceItemZonalResiliencyPosture", + regional_resiliency: Optional["_models.UnifiedResilienceItemRegionalResiliencyPosture"] = None, ) -> None: ... @overload @@ -6466,6 +7880,100 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class VmRecoveryConfig( + WorkloadConfig, discriminator="AzureVm" +): # pylint: disable=docstring-keyword-should-match-keyword-only + """Recovery configuration for an Azure virtual machine. + + :ivar recovery_type: The virtual machine recovery behavior. Defaults to creating a new virtual + machine. Known values are: "CreateNewVM", "AlternateLocation", "RestoreAsDisks", and + "RestoreAsFiles". + :vartype recovery_type: str or ~azure.mgmt.resiliencemanagement.models.RecoveryType + :ivar target_name_prefix: The prefix used when naming recovered virtual machines. + :vartype target_name_prefix: str + :ivar resource_group: The target resource group. Required. + :vartype resource_group: ~azure.mgmt.resiliencemanagement.models.TargetResourceSpec + :ivar virtual_network: The target virtual network. Required. + :vartype virtual_network: ~azure.mgmt.resiliencemanagement.models.TargetResourceSpec + :ivar subnet: The target subnet. Required. + :vartype subnet: ~azure.mgmt.resiliencemanagement.models.TargetResourceSpec + :ivar storage_account: The target storage account. Required. + :vartype storage_account: ~azure.mgmt.resiliencemanagement.models.TargetResourceSpec + :ivar workload_type: The workload type represented by this configuration. Required. An Azure + virtual machine workload. + :vartype workload_type: str or ~azure.mgmt.resiliencemanagement.models.AZURE_VM + :ivar disk_encryption_set: The target disk encryption set. + :vartype disk_encryption_set: ~azure.mgmt.resiliencemanagement.models.TargetResourceSpec + :ivar identity: The system-assigned and/or user-assigned managed identities used for restore. + :vartype identity: ~azure.mgmt.resiliencemanagement.models.ManagedServiceIdentity + :ivar zones: The target availability zones. + :vartype zones: list[str] + """ + + recovery_type: Optional[Union[str, "_models.RecoveryType"]] = rest_field( + name="recoveryType", visibility=["read", "create", "update", "delete", "query"] + ) + """The virtual machine recovery behavior. Defaults to creating a new virtual machine. Known values + are: \"CreateNewVM\", \"AlternateLocation\", \"RestoreAsDisks\", and \"RestoreAsFiles\".""" + target_name_prefix: Optional[str] = rest_field( + name="targetNamePrefix", visibility=["read", "create", "update", "delete", "query"] + ) + """The prefix used when naming recovered virtual machines.""" + resource_group: "_models.TargetResourceSpec" = rest_field( + name="resourceGroup", visibility=["read", "create", "update", "delete", "query"] + ) + """The target resource group. Required.""" + virtual_network: "_models.TargetResourceSpec" = rest_field( + name="virtualNetwork", visibility=["read", "create", "update", "delete", "query"] + ) + """The target virtual network. Required.""" + subnet: "_models.TargetResourceSpec" = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The target subnet. Required.""" + storage_account: "_models.TargetResourceSpec" = rest_field( + name="storageAccount", visibility=["read", "create", "update", "delete", "query"] + ) + """The target storage account. Required.""" + workload_type: Literal[WorkloadType.AZURE_VM] = rest_discriminator(name="workloadType", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The workload type represented by this configuration. Required. An Azure virtual machine + workload.""" + disk_encryption_set: Optional["_models.TargetResourceSpec"] = rest_field( + name="diskEncryptionSet", visibility=["read", "create", "update", "delete", "query"] + ) + """The target disk encryption set.""" + identity: Optional["_models.ManagedServiceIdentity"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The system-assigned and/or user-assigned managed identities used for restore.""" + zones: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The target availability zones.""" + + @overload + def __init__( + self, + *, + resource_group: "_models.TargetResourceSpec", + virtual_network: "_models.TargetResourceSpec", + subnet: "_models.TargetResourceSpec", + storage_account: "_models.TargetResourceSpec", + recovery_type: Optional[Union[str, "_models.RecoveryType"]] = None, + target_name_prefix: Optional[str] = None, + disk_encryption_set: Optional["_models.TargetResourceSpec"] = None, + identity: Optional["_models.ManagedServiceIdentity"] = None, + zones: Optional[list[str]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.workload_type = WorkloadType.AZURE_VM # type: ignore + + class ZonalDrillProperties( DrillProperties, discriminator="Zonal" ): # pylint: disable=docstring-keyword-should-match-keyword-only @@ -6584,8 +8092,9 @@ class ZonalDrillResourceProperties( :vartype recovery_plan_exclusion_reason: str or ~azure.mgmt.resiliencemanagement.models.RecoveryPlanExclusionReason :ivar resource_protection_solution_type: Protection Solution Type of the Drill resource. Known - values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", and - "CustomRunbook". + values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", "CustomRunbook", + "AzureTemplate", "AzureStorageAccount", "AzureServiceBus", "AzureNetAppFiles", and + "AzureCosmosDB". :vartype resource_protection_solution_type: str or ~azure.mgmt.resiliencemanagement.models.ResourceProtectionSolutionType :ivar readiness_state: Readiness State of the Drill resource. Known values are: "Ready" and @@ -6612,6 +8121,19 @@ class ZonalDrillResourceProperties( :ivar provisioning_state: Provisioning state. Known values are: "Succeeded", "Failed", "Canceled", "Provisioning", "Updating", "Deleting", "Accepted", and "NeedsAttention". :vartype provisioning_state: str or ~azure.mgmt.resiliencemanagement.models.ProvisioningState + :ivar fault_eligibility: Normal fault eligibility for a drill resource. Currently populated for + regional resources only. Omitted until evaluated. Eligibility does not indicate inclusion or + readiness, and force inclusion does not change this value. Known values are: "Unknown", + "Eligible", and "Ineligible". + :vartype fault_eligibility: str or ~azure.mgmt.resiliencemanagement.models.FaultEligibility + :ivar fault_ineligible_reason: Reason the resource is ineligible under normal fault inclusion + policy. Currently populated for regional resources only. Contains the single applicable + recovery-plan reason when Ineligible. Omitted when Eligible, Unknown, or not yet evaluated. + Failed or incomplete recovery-plan reads do not establish non-inclusion. Binding and permission + errors are reported separately in attentionReason and error fields. Known values are: + "RecoveryPlanNotConfigured" and "ResourceNotIncludedInRecoveryPlan". + :vartype fault_ineligible_reason: str or + ~azure.mgmt.resiliencemanagement.models.FaultIneligibleReason :ivar drill_type: The discriminator for the Drill Resource object hierarchy. Matches the parent Drill type. Required. Zonal Drill. :vartype drill_type: str or ~azure.mgmt.resiliencemanagement.models.ZONAL diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/__init__.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/__init__.py index 3591d1f2d1b8..41e9ac31f3d6 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/__init__.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/__init__.py @@ -17,6 +17,7 @@ from ._operations import GoalAssignmentsOperations # type: ignore from ._operations import GoalResourcesOperations # type: ignore from ._operations import RecoveryPlansOperations # type: ignore +from ._operations import RecoveryConfigProfilesOperations # type: ignore from ._operations import RecoveryPlanActionsOperations # type: ignore from ._operations import RecoveryResourcesOperations # type: ignore from ._operations import RecoveryJobsOperations # type: ignore @@ -39,6 +40,7 @@ "GoalAssignmentsOperations", "GoalResourcesOperations", "RecoveryPlansOperations", + "RecoveryConfigProfilesOperations", "RecoveryPlanActionsOperations", "RecoveryResourcesOperations", "RecoveryJobsOperations", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/_operations.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/_operations.py index ab0acfc178d6..93bd7af406a0 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/_operations.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/operations/_operations.py @@ -50,7 +50,7 @@ def build_operations_list_request(**kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -69,7 +69,7 @@ def build_operation_status_get_request(location: str, operation_id: str, **kwarg _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -96,7 +96,7 @@ def build_goal_assignments_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -124,7 +124,7 @@ def build_goal_assignments_create_or_update_request( # pylint: disable=name-too _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -154,7 +154,7 @@ def build_goal_assignments_update_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -184,7 +184,7 @@ def build_goal_assignments_update_goal_resources_request( # pylint: disable=nam _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -213,7 +213,7 @@ def build_goal_assignments_refresh_goal_resources_request( # pylint: disable=na _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -239,7 +239,7 @@ def build_goal_assignments_delete_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/goalAssignments/{goalAssignmentName}" path_format_arguments = { @@ -262,7 +262,7 @@ def build_goal_assignments_recommend_capacity_request( # pylint: disable=name-t _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -291,7 +291,7 @@ def build_goal_assignments_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -321,7 +321,7 @@ def build_goal_resources_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -354,7 +354,7 @@ def build_goal_resources_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -383,7 +383,7 @@ def build_recovery_plans_get_request(service_group_name: str, recovery_plan_name _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -411,7 +411,7 @@ def build_recovery_plans_create_or_update_request( # pylint: disable=name-too-l _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -439,7 +439,7 @@ def build_recovery_plans_update_request(service_group_name: str, recovery_plan_n _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -465,7 +465,7 @@ def build_recovery_plans_update_request(service_group_name: str, recovery_plan_n def build_recovery_plans_delete_request(service_group_name: str, recovery_plan_name: str, **kwargs: Any) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}" path_format_arguments = { @@ -487,7 +487,7 @@ def build_recovery_plans_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -511,13 +511,160 @@ def build_recovery_plans_list_request( return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) +def build_recovery_config_profiles_get_request( # pylint: disable=name-too-long + service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryConfigProfiles/{recoveryConfigProfileName}" + path_format_arguments = { + "serviceGroupName": _SERIALIZER.url("service_group_name", service_group_name, "str"), + "recoveryPlanName": _SERIALIZER.url("recovery_plan_name", recovery_plan_name, "str"), + "recoveryConfigProfileName": _SERIALIZER.url( + "recovery_config_profile_name", recovery_config_profile_name, "str" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_recovery_config_profiles_create_or_update_request( # pylint: disable=name-too-long + service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryConfigProfiles/{recoveryConfigProfileName}" + path_format_arguments = { + "serviceGroupName": _SERIALIZER.url("service_group_name", service_group_name, "str"), + "recoveryPlanName": _SERIALIZER.url("recovery_plan_name", recovery_plan_name, "str"), + "recoveryConfigProfileName": _SERIALIZER.url( + "recovery_config_profile_name", recovery_config_profile_name, "str" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_recovery_config_profiles_update_request( # pylint: disable=name-too-long + service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryConfigProfiles/{recoveryConfigProfileName}" + path_format_arguments = { + "serviceGroupName": _SERIALIZER.url("service_group_name", service_group_name, "str"), + "recoveryPlanName": _SERIALIZER.url("recovery_plan_name", recovery_plan_name, "str"), + "recoveryConfigProfileName": _SERIALIZER.url( + "recovery_config_profile_name", recovery_config_profile_name, "str" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_recovery_config_profiles_list_request( # pylint: disable=name-too-long + service_group_name: str, recovery_plan_name: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryConfigProfiles" + path_format_arguments = { + "serviceGroupName": _SERIALIZER.url("service_group_name", service_group_name, "str"), + "recoveryPlanName": _SERIALIZER.url("recovery_plan_name", recovery_plan_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_recovery_config_profiles_delete_request( # pylint: disable=name-too-long + service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any +) -> HttpRequest: + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) + # Construct URL + _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryConfigProfiles/{recoveryConfigProfileName}" + path_format_arguments = { + "serviceGroupName": _SERIALIZER.url("service_group_name", service_group_name, "str"), + "recoveryPlanName": _SERIALIZER.url("recovery_plan_name", recovery_plan_name, "str"), + "recoveryConfigProfileName": _SERIALIZER.url( + "recovery_config_profile_name", recovery_config_profile_name, "str" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + + def build_recovery_plan_actions_finalize_request( # pylint: disable=name-too-long service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/finalize" path_format_arguments = { @@ -543,7 +690,7 @@ def build_recovery_plan_actions_update_resources_request( # pylint: disable=nam _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -574,7 +721,7 @@ def build_recovery_plan_actions_validate_for_operation_request( # pylint: disab _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/validateForOperation" path_format_arguments = { @@ -602,7 +749,7 @@ def build_recovery_plan_actions_validate_for_failover_request( # pylint: disabl _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -632,7 +779,7 @@ def build_recovery_plan_actions_validate_for_failover_commit_request( # pylint: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -661,7 +808,7 @@ def build_recovery_plan_actions_validate_for_test_failover_request( # pylint: d _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -691,7 +838,7 @@ def build_recovery_plan_actions_validate_for_test_failover_cleanup_request( # p _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -720,7 +867,7 @@ def build_recovery_plan_actions_validate_for_reprotect_request( # pylint: disab _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -750,7 +897,7 @@ def build_recovery_plan_actions_check_readiness_request( # pylint: disable=name _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -779,7 +926,7 @@ def build_recovery_plan_actions_failover_request( # pylint: disable=name-too-lo _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -809,7 +956,7 @@ def build_recovery_plan_actions_failover_commit_request( # pylint: disable=name _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -838,7 +985,7 @@ def build_recovery_plan_actions_reprotect_request( # pylint: disable=name-too-l _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -869,7 +1016,7 @@ def build_recovery_plan_actions_test_failover_request( # pylint: disable=name-t _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -900,7 +1047,7 @@ def build_recovery_plan_actions_test_failover_cleanup_request( # pylint: disabl _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -930,7 +1077,7 @@ def build_recovery_resources_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -958,7 +1105,7 @@ def build_recovery_resources_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -985,7 +1132,7 @@ def build_recovery_jobs_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1011,7 +1158,7 @@ def build_recovery_jobs_list_request(service_group_name: str, recovery_plan_name _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1039,7 +1186,7 @@ def build_recovery_jobs_cancel_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryJobs/{recoveryJobName}/cancel" path_format_arguments = { @@ -1068,7 +1215,7 @@ def build_recovery_jobs_resume_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryJobs/{recoveryJobName}/resume" path_format_arguments = { @@ -1096,7 +1243,7 @@ def build_recovery_jobs_retry_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/recoveryPlans/{recoveryPlanName}/recoveryJobs/{recoveryJobName}/retry" path_format_arguments = { @@ -1126,7 +1273,7 @@ def build_recovery_job_resources_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1155,7 +1302,7 @@ def build_recovery_job_resources_list_request( # pylint: disable=name-too-long _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1181,7 +1328,7 @@ def build_drills_get_request(service_group_name: str, drill_name: str, **kwargs: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1207,7 +1354,7 @@ def build_drills_create_request(service_group_name: str, drill_name: str, **kwar _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1235,7 +1382,7 @@ def build_drills_update_request(service_group_name: str, drill_name: str, **kwar _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1261,7 +1408,7 @@ def build_drills_update_request(service_group_name: str, drill_name: str, **kwar def build_drills_delete_request(service_group_name: str, drill_name: str, **kwargs: Any) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/drills/{drillName}" path_format_arguments = { @@ -1283,7 +1430,7 @@ def build_drills_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1314,7 +1461,7 @@ def build_drills_validate_for_execution_request( # pylint: disable=name-too-lon _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1345,7 +1492,7 @@ def build_drills_start_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1376,7 +1523,7 @@ def build_drills_end_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1407,7 +1554,7 @@ def build_drills_add_or_update_resources_request( # pylint: disable=name-too-lo _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/drills/{drillName}/addOrUpdateResources" path_format_arguments = { @@ -1434,7 +1581,7 @@ def build_drills_resync_readiness_check_request( # pylint: disable=name-too-lon _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/providers/Microsoft.Management/serviceGroups/{serviceGroupName}/providers/Microsoft.AzureResilienceManagement/drills/{drillName}/resyncReadinessCheck" path_format_arguments = { @@ -1459,7 +1606,7 @@ def build_drill_resources_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1492,7 +1639,7 @@ def build_drill_resources_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1523,7 +1670,7 @@ def build_drill_runs_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1549,7 +1696,7 @@ def build_drill_runs_list_request(service_group_name: str, drill_name: str, **kw _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1577,7 +1724,7 @@ def build_drill_runs_fail_over_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1609,7 +1756,7 @@ def build_drill_runs_reprotect_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1641,7 +1788,7 @@ def build_drill_runs_add_notes_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1672,7 +1819,7 @@ def build_drill_runs_resume_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1702,7 +1849,7 @@ def build_drill_runs_mark_as_complete_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1733,7 +1880,7 @@ def build_drill_runs_generate_report_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1763,7 +1910,7 @@ def build_drill_runs_list_report_download_url_request( # pylint: disable=name-t _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1794,7 +1941,7 @@ def build_drill_run_resources_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1823,7 +1970,7 @@ def build_drill_run_resources_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1851,7 +1998,7 @@ def build_unified_resilience_items_get_request( # pylint: disable=name-too-long _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1880,7 +2027,7 @@ def build_unified_resilience_items_list_request( # pylint: disable=name-too-lon _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1910,7 +2057,7 @@ def build_usage_plans_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1939,7 +2086,7 @@ def build_usage_plans_create_or_update_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1970,7 +2117,7 @@ def build_usage_plans_update_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1999,7 +2146,7 @@ def build_usage_plans_delete_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureResilienceManagement/usagePlans/{usagePlanName}" path_format_arguments = { @@ -2022,7 +2169,7 @@ def build_usage_plans_list_by_resource_group_request( # pylint: disable=name-to _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -2049,7 +2196,7 @@ def build_usage_plans_list_by_subscription_request( # pylint: disable=name-too- _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -2075,7 +2222,7 @@ def build_enrollments_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -2105,7 +2252,7 @@ def build_enrollments_create_or_update_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -2135,7 +2282,7 @@ def build_enrollments_delete_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureResilienceManagement/usagePlans/{usagePlanName}/enrollments/{enrollmentName}" path_format_arguments = { @@ -2159,7 +2306,7 @@ def build_enrollments_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-11-30-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -2204,7 +2351,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list(self, **kwargs: Any) -> ItemPaged["_models.Operation"]: """List the operations for the provider. @@ -2321,7 +2468,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "location", "operation_id", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get(self, location: str, operation_id: str, **kwargs: Any) -> _models.OperationStatusResult: """Returns the current status of an async operation. @@ -2414,7 +2561,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get(self, service_group_name: str, goal_assignment_name: str, **kwargs: Any) -> _models.GoalAssignment: """Gets a goal assignment. @@ -2494,7 +2641,7 @@ def get(self, service_group_name: str, goal_assignment_name: str, **kwargs: Any) "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _create_or_update_initial( self, @@ -2663,7 +2810,7 @@ def begin_create_or_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_create_or_update( self, @@ -2744,7 +2891,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _update_initial( self, @@ -2913,7 +3060,7 @@ def begin_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_update( self, @@ -2994,7 +3141,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _update_goal_resources_initial( self, @@ -3163,7 +3310,7 @@ def begin_update_goal_resources( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_update_goal_resources( self, @@ -3236,7 +3383,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _refresh_goal_resources_initial( self, service_group_name: str, goal_assignment_name: str, **kwargs: Any @@ -3305,7 +3452,7 @@ def _refresh_goal_resources_initial( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_refresh_goal_resources( self, service_group_name: str, goal_assignment_name: str, **kwargs: Any @@ -3368,7 +3515,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _delete_initial(self, service_group_name: str, goal_assignment_name: str, **kwargs: Any) -> Iterator[bytes]: error_map: MutableMapping = { @@ -3435,7 +3582,7 @@ def _delete_initial(self, service_group_name: str, goal_assignment_name: str, ** @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "goal_assignment_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_delete(self, service_group_name: str, goal_assignment_name: str, **kwargs: Any) -> LROPoller[None]: """Deletes a goal assignment. @@ -3503,7 +3650,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _recommend_capacity_initial( self, @@ -3675,7 +3822,7 @@ def begin_recommend_capacity( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_recommend_capacity( self, @@ -3750,7 +3897,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -3886,7 +4033,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, service_group_name: str, goal_assignment_name: str, goal_resource_name: str, **kwargs: Any @@ -3973,7 +4120,7 @@ def get( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, @@ -4110,7 +4257,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get(self, service_group_name: str, recovery_plan_name: str, **kwargs: Any) -> _models.RecoveryPlan: """Get a RecoveryPlan. @@ -4184,7 +4331,7 @@ def get(self, service_group_name: str, recovery_plan_name: str, **kwargs: Any) - params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _create_or_update_initial( self, @@ -4349,7 +4496,7 @@ def begin_create_or_update( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_create_or_update( self, @@ -4430,7 +4577,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _update_initial( self, @@ -4593,7 +4740,7 @@ def begin_update( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_update( self, @@ -4672,7 +4819,7 @@ def get_long_running_output(pipeline_response): @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _delete_initial(self, service_group_name: str, recovery_plan_name: str, **kwargs: Any) -> Iterator[bytes]: error_map: MutableMapping = { @@ -4736,7 +4883,7 @@ def _delete_initial(self, service_group_name: str, recovery_plan_name: str, **kw @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_delete(self, service_group_name: str, recovery_plan_name: str, **kwargs: Any) -> LROPoller[None]: """Delete a RecoveryPlan. @@ -4797,7 +4944,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -4902,6 +5049,920 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) +class RecoveryConfigProfilesOperations: # pylint: disable=docstring-missing-param + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.resiliencemanagement.ResilienceManagementClient`'s + :attr:`recovery_config_profiles` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ResilienceManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def get( + self, service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any + ) -> _models.RecoveryConfigProfile: + """Gets a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :return: RecoveryConfigProfile. The RecoveryConfigProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.RecoveryConfigProfile] = kwargs.pop("cls", None) + + _request = build_recovery_config_profiles_get_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.RecoveryConfigProfile, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def _create_or_update_initial( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(resource, (IOBase, bytes)): + _content = resource + else: + _content = json.dumps(resource, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_recovery_config_profiles_create_or_update_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: _models.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Required. + :type resource: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: _types.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Required. + :type resource: ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Required. + :type resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def begin_create_or_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + resource: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Creates or replaces a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param resource: Resource create parameters. Is either a RecoveryConfigProfile type or a + IO[bytes] type. Required. + :type resource: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile or + ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile or IO[bytes] + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.RecoveryConfigProfile] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._create_or_update_initial( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + resource=resource, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.RecoveryConfigProfile, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.RecoveryConfigProfile].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.RecoveryConfigProfile]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def _update_initial( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(properties, (IOBase, bytes)): + _content = properties + else: + _content = json.dumps(properties, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_recovery_config_profiles_update_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: _models.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Required. + :type properties: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: _types.RecoveryConfigProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Required. + :type properties: ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Required. + :type properties: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def begin_update( + self, + service_group_name: str, + recovery_plan_name: str, + recovery_config_profile_name: str, + properties: Union[_models.RecoveryConfigProfile, _types.RecoveryConfigProfile, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.RecoveryConfigProfile]: + """Updates a recovery configuration profile. Omitted fields remain unchanged. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :param properties: The resource properties to be updated. Is either a RecoveryConfigProfile + type or a IO[bytes] type. Required. + :type properties: ~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile or + ~azure.mgmt.resiliencemanagement.types.RecoveryConfigProfile or IO[bytes] + :return: An instance of LROPoller that returns RecoveryConfigProfile. The RecoveryConfigProfile + is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.RecoveryConfigProfile] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._update_initial( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + properties=properties, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.RecoveryConfigProfile, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.RecoveryConfigProfile].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.RecoveryConfigProfile]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={"2026-11-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, + api_versions_list=["2026-11-30-preview"], + ) + def list( + self, service_group_name: str, recovery_plan_name: str, **kwargs: Any + ) -> ItemPaged["_models.RecoveryConfigProfile"]: + """Lists recovery configuration profiles under a recovery plan. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :return: An iterator like instance of RecoveryConfigProfile + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.resiliencemanagement.models.RecoveryConfigProfile] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.RecoveryConfigProfile]] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_recovery_config_profiles_list_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.RecoveryConfigProfile], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def _delete_initial( + self, service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_recovery_config_profiles_delete_request( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + @api_version_validation( + method_added_on="2026-11-30-preview", + params_added_on={ + "2026-11-30-preview": [ + "service_group_name", + "api_version", + "recovery_plan_name", + "recovery_config_profile_name", + ] + }, + api_versions_list=["2026-11-30-preview"], + ) + def begin_delete( + self, service_group_name: str, recovery_plan_name: str, recovery_config_profile_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a recovery configuration profile. + + :param service_group_name: The name of the service group. Required. + :type service_group_name: str + :param recovery_plan_name: The name of the recovery orchestration plan. Required. + :type recovery_plan_name: str + :param recovery_config_profile_name: The name of the recovery configuration profile. Required. + :type recovery_config_profile_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + service_group_name=service_group_name, + recovery_plan_name=recovery_plan_name, + recovery_config_profile_name=recovery_config_profile_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + class RecoveryPlanActionsOperations: # pylint: disable=docstring-missing-param,too-many-public-methods """ .. warning:: @@ -4926,7 +5987,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _finalize_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -4998,7 +6059,7 @@ def _finalize_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_finalize( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -5084,7 +6145,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _update_resources_initial( self, @@ -5269,7 +6330,7 @@ def begin_update_resources( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_update_resources( self, @@ -5362,7 +6423,7 @@ def get_long_running_output(pipeline_response): "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_operation_initial( self, @@ -5552,7 +6613,7 @@ def begin_validate_for_operation( "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_operation( self, @@ -5651,7 +6712,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_failover_initial( self, @@ -5842,7 +6903,7 @@ def begin_validate_for_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_failover( self, @@ -5931,7 +6992,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_failover_commit_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -6000,7 +7061,7 @@ def _validate_for_failover_commit_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_failover_commit( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -6083,7 +7144,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_test_failover_initial( self, @@ -6274,7 +7335,7 @@ def begin_validate_for_test_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_test_failover( self, @@ -6363,7 +7424,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_test_failover_cleanup_initial( # pylint: disable=name-too-long self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -6432,7 +7493,7 @@ def _validate_for_test_failover_cleanup_initial( # pylint: disable=name-too-lon params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_test_failover_cleanup( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -6515,7 +7576,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_reprotect_initial( self, @@ -6710,7 +7771,7 @@ def begin_validate_for_reprotect( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_reprotect( self, @@ -6800,7 +7861,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _check_readiness_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -6872,7 +7933,7 @@ def _check_readiness_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_check_readiness( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -6948,7 +8009,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _failover_initial( self, @@ -7136,7 +8197,7 @@ def begin_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_failover( self, @@ -7224,7 +8285,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _failover_commit_initial( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -7293,7 +8354,7 @@ def _failover_commit_initial( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "recovery_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_failover_commit( self, service_group_name: str, recovery_plan_name: str, *, operation_id: str, **kwargs: Any @@ -7375,7 +8436,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _reprotect_initial( self, @@ -7567,7 +8628,7 @@ def begin_reprotect( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_reprotect( self, @@ -7663,7 +8724,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _test_failover_initial( self, @@ -7851,7 +8912,7 @@ def begin_test_failover( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_test_failover( self, @@ -7946,7 +9007,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _test_failover_cleanup_initial( self, @@ -8134,7 +9195,7 @@ def begin_test_failover_cleanup( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_test_failover_cleanup( self, @@ -8249,7 +9310,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, service_group_name: str, recovery_plan_name: str, recovery_resource_name: str, **kwargs: Any @@ -8327,7 +9388,7 @@ def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, recovery_plan_name: str, **kwargs: Any @@ -8460,7 +9521,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, service_group_name: str, recovery_plan_name: str, recovery_job_name: str, **kwargs: Any @@ -8538,7 +9599,7 @@ def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "recovery_plan_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list(self, service_group_name: str, recovery_plan_name: str, **kwargs: Any) -> ItemPaged["_models.RecoveryJob"]: """List RecoveryJob resources by RecoveryPlan. @@ -8649,7 +9710,7 @@ def get_next(next_link=None): "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _cancel_initial( self, @@ -8848,7 +9909,7 @@ def begin_cancel( "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_cancel( self, @@ -8950,7 +10011,7 @@ def get_long_running_output(pipeline_response): "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _resume_initial( self, @@ -9152,7 +10213,7 @@ def begin_resume( "content_type", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_resume( self, @@ -9254,7 +10315,7 @@ def get_long_running_output(pipeline_response): "recovery_job_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _retry_initial( self, @@ -9339,7 +10400,7 @@ def _retry_initial( "recovery_job_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_retry( self, @@ -9455,7 +10516,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, @@ -9550,7 +10611,7 @@ def get( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, recovery_plan_name: str, recovery_job_name: str, **kwargs: Any @@ -9679,7 +10740,7 @@ def __init__(self, *args, **kwargs) -> None: @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get(self, service_group_name: str, drill_name: str, **kwargs: Any) -> _models.Drill: """Get a Drill. @@ -9753,7 +10814,7 @@ def get(self, service_group_name: str, drill_name: str, **kwargs: Any) -> _model params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _create_initial( self, @@ -9918,7 +10979,7 @@ def begin_create( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_create( self, @@ -9999,7 +11060,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _update_initial( self, @@ -10162,7 +11223,7 @@ def begin_update( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "content_type", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_update( self, @@ -10235,7 +11296,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _delete_initial(self, service_group_name: str, drill_name: str, **kwargs: Any) -> Iterator[bytes]: error_map: MutableMapping = { @@ -10299,7 +11360,7 @@ def _delete_initial(self, service_group_name: str, drill_name: str, **kwargs: An @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_delete(self, service_group_name: str, drill_name: str, **kwargs: Any) -> LROPoller[None]: """Delete a Drill. @@ -10360,7 +11421,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -10476,7 +11537,7 @@ def get_next(next_link=None): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _validate_for_execution_initial( self, @@ -10658,7 +11719,7 @@ def begin_validate_for_execution( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_validate_for_execution( self, @@ -10745,7 +11806,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _start_initial( self, @@ -10927,7 +11988,7 @@ def begin_start( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_start( self, @@ -11014,7 +12075,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _end_initial( self, @@ -11196,7 +12257,7 @@ def begin_end( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_end( self, @@ -11276,7 +12337,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name", "content_type"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _add_or_update_resources_initial( self, @@ -11451,7 +12512,7 @@ def begin_add_or_update_resources( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name", "content_type"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_add_or_update_resources( self, @@ -11529,7 +12590,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _resync_readiness_check_initial( self, service_group_name: str, drill_name: str, *, operation_id: str, **kwargs: Any @@ -11599,7 +12660,7 @@ def _resync_readiness_check_initial( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "operation_id", "drill_name"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_resync_readiness_check( self, service_group_name: str, drill_name: str, *, operation_id: str, **kwargs: Any @@ -11687,7 +12748,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "drill_resource_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, service_group_name: str, drill_name: str, drill_resource_name: str, **kwargs: Any @@ -11767,7 +12828,7 @@ def get( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "drill_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, @@ -11906,7 +12967,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "drill_run_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get(self, service_group_name: str, drill_name: str, drill_run_name: str, **kwargs: Any) -> _models.DrillRun: """Get a DrillRun. @@ -11982,7 +13043,7 @@ def get(self, service_group_name: str, drill_name: str, drill_run_name: str, **k @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list(self, service_group_name: str, drill_name: str, **kwargs: Any) -> ItemPaged["_models.DrillRun"]: """List DrillRun resources by Drill. @@ -12094,7 +13155,7 @@ def get_next(next_link=None): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _fail_over_initial( self, @@ -12292,7 +13353,7 @@ def begin_fail_over( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_fail_over( self, @@ -12385,7 +13446,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _reprotect_initial( self, @@ -12583,7 +13644,7 @@ def begin_reprotect( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_reprotect( self, @@ -12676,7 +13737,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _add_notes_initial( self, @@ -12870,7 +13931,7 @@ def begin_add_notes( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_add_notes( self, @@ -12961,7 +14022,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _resume_initial( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -13041,7 +14102,7 @@ def _resume_initial( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_resume( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -13120,7 +14181,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _mark_as_complete_initial( self, @@ -13314,7 +14375,7 @@ def begin_mark_as_complete( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_mark_as_complete( self, @@ -13405,7 +14466,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _generate_report_initial( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -13485,7 +14546,7 @@ def _generate_report_initial( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_generate_report( self, service_group_name: str, drill_name: str, drill_run_name: str, *, operation_id: str, **kwargs: Any @@ -13573,7 +14634,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _list_report_download_url_initial( self, @@ -13776,7 +14837,7 @@ def begin_list_report_download_url( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_list_report_download_url( self, @@ -13896,7 +14957,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, service_group_name: str, drill_name: str, drill_run_name: str, drill_run_resource_name: str, **kwargs: Any @@ -13979,7 +15040,7 @@ def get( params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "drill_name", "drill_run_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, drill_name: str, drill_run_name: str, **kwargs: Any @@ -14109,7 +15170,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["service_group_name", "api_version", "unified_resilience_item_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, service_group_name: str, unified_resilience_item_name: str, **kwargs: Any @@ -14184,7 +15245,7 @@ def get( @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["service_group_name", "api_version", "skip_token", "top", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list( self, service_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any @@ -14315,7 +15376,7 @@ def __init__(self, *args, **kwargs) -> None: params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> _models.UsagePlan: """Get a UsagePlan. @@ -14398,7 +15459,7 @@ def get(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _create_or_update_initial( self, @@ -14574,7 +15635,7 @@ def begin_create_or_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_create_or_update( self, @@ -14663,7 +15724,7 @@ def get_long_running_output(pipeline_response): "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _update_initial( self, @@ -14837,7 +15898,7 @@ def begin_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_update( self, @@ -14919,7 +15980,7 @@ def get_long_running_output(pipeline_response): params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _delete_initial(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> Iterator[bytes]: error_map: MutableMapping = { @@ -14986,7 +16047,7 @@ def _delete_initial(self, resource_group_name: str, usage_plan_name: str, **kwar params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_delete(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> LROPoller[None]: """Delete a UsagePlan. @@ -15048,7 +16109,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.UsagePlan"]: """List UsagePlan resources by resource group. @@ -15150,7 +16211,7 @@ def get_next(next_link=None): @api_version_validation( method_added_on="2026-09-30-preview", params_added_on={"2026-09-30-preview": ["api_version", "subscription_id", "accept"]}, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list_by_subscription(self, **kwargs: Any) -> ItemPaged["_models.UsagePlan"]: """List UsagePlan resources by subscription ID. @@ -15277,7 +16338,7 @@ def __init__(self, *args, **kwargs) -> None: "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def get( self, resource_group_name: str, usage_plan_name: str, enrollment_name: str, **kwargs: Any @@ -15366,7 +16427,7 @@ def get( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _create_or_update_initial( self, @@ -15554,7 +16615,7 @@ def begin_create_or_update( "accept", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_create_or_update( self, @@ -15646,7 +16707,7 @@ def get_long_running_output(pipeline_response): "enrollment_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def _delete_initial( self, resource_group_name: str, usage_plan_name: str, enrollment_name: str, **kwargs: Any @@ -15722,7 +16783,7 @@ def _delete_initial( "enrollment_name", ] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def begin_delete( self, resource_group_name: str, usage_plan_name: str, enrollment_name: str, **kwargs: Any @@ -15791,7 +16852,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- params_added_on={ "2026-09-30-preview": ["api_version", "subscription_id", "resource_group_name", "usage_plan_name", "accept"] }, - api_versions_list=["2026-09-30-preview", "2026-10-01"], + api_versions_list=["2026-09-30-preview", "2026-10-01", "2026-10-31-preview", "2026-11-30-preview"], ) def list(self, resource_group_name: str, usage_plan_name: str, **kwargs: Any) -> ItemPaged["_models.Enrollment"]: """List Enrollments by Usage Plan. diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/types.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/types.py index d9cafce4de4c..36e025fab403 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/types.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/azure/mgmt/resiliencemanagement/types.py @@ -10,13 +10,21 @@ from typing import Any, Literal, Optional, TYPE_CHECKING, Union from typing_extensions import Required, TypedDict -from .models._enums import DrillType, RecoveryGroupActionType, ResourceProtectionSolutionType +from .models._enums import ( + DrillType, + RecoveryGroupActionType, + ResiliencyType, + ResourceProtectionSolutionType, + WorkloadType, +) if TYPE_CHECKING: from .models import ( AttestationState, AutoFailover, + BackupType, ConfirmationStatus, + CopyOptions, CreatedByType, DrillAttestation, DrillMode, @@ -32,6 +40,7 @@ FailoverState, ForceInclusionAndUpdate, InitialConfig, + IsoDuration, JobStatus, ManagedServiceIdentityType, ProvisioningState, @@ -42,14 +51,22 @@ RecoveryOperationStatus, RecoveryPlanState, RecoveryPlanType, + RecoveryPointHealthStatus, + RecoveryPointPolicyType, + RecoveryResourceInclusionEligibility, + RecoveryType, RelativeResourceCompositionState, + ReplicationMode, + ResourceInclusionDisabledReason, ResourceInclusionState, + ResourceProtectionState, ResourceProtectionStatus, ResourceReplicationRole, ResourceTypeCategories, SliType, SliTypeMatchState, SolutionDisplayName, + TargetProvisioningMode, TestFailoverState, UsagePlanType, UserConsent, @@ -346,6 +363,81 @@ class CustomFaultDetails(TypedDict, total=False): """ID of ARM resource used for automation (e.g. Automation runbook URL). Required.""" +class CyberResiliencyGroupProperties(TypedDict, total=False): + """Cyber resiliency properties for a recovery orchestration group. + + :ivar resiliencyType: The resiliency type represented by these properties. Required. Cyber + resiliency properties. + :vartype resiliencyType: Literal[ResiliencyType.CYBER_RESILIENCY] + :ivar recoveryConfigProfileAssociations: Recovery configuration profiles associated by workload + type. + :vartype recoveryConfigProfileAssociations: list["RecoveryConfigProfileAssociation"] + """ + + resiliencyType: Required[Literal[ResiliencyType.CYBER_RESILIENCY]] + """The resiliency type represented by these properties. Required. Cyber resiliency properties.""" + recoveryConfigProfileAssociations: list["RecoveryConfigProfileAssociation"] + """Recovery configuration profiles associated by workload type.""" + + +class CyberResiliencyPlanProperties(TypedDict, total=False): + """Cyber resiliency properties for a recovery plan. + + :ivar resiliencyType: The resiliency type represented by these properties. Required. Cyber + resiliency properties. + :vartype resiliencyType: Literal[ResiliencyType.CYBER_RESILIENCY] + :ivar targetEnvironment: The required subscriptions and locations where recovery is targeted. + Required. + :vartype targetEnvironment: "TargetEnvironment" + """ + + resiliencyType: Required[Literal[ResiliencyType.CYBER_RESILIENCY]] + """The resiliency type represented by these properties. Required. Cyber resiliency properties.""" + targetEnvironment: Required["TargetEnvironment"] + """The required subscriptions and locations where recovery is targeted. Required.""" + + +class CyberResiliencyResourceProperties(TypedDict, total=False): + """Cyber resiliency properties for a recovery resource. + + :ivar resiliencyType: The resiliency type represented by these properties. Required. Cyber + resiliency properties. + :vartype resiliencyType: Literal[ResiliencyType.CYBER_RESILIENCY] + :ivar workloadType: The workload type of the Azure resource linked to the recovery resource. + Known values are: "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", + "OracleInAzureVm", and "AzureFileShare". + :vartype workloadType: Union[str, "WorkloadType"] + :ivar protectedItemDetails: The backup protection details for the protected items associated + with this resource. + :vartype protectedItemDetails: list["ProtectedItemDetails"] + :ivar membershipThroughServiceGroupMembers: The service group member identifiers through which + this resource was discovered. + :vartype membershipThroughServiceGroupMembers: list[str] + :ivar recoveryConfigProfileId: The Azure resource identifier of the per-resource recovery + configuration profile override. + :vartype recoveryConfigProfileId: str + :ivar inclusionEligibility: The resource's eligibility for inclusion for the configured + targets. Known values are: "CanBeIncluded" and "CannotBeIncluded". + :vartype inclusionEligibility: Union[str, "RecoveryResourceInclusionEligibility"] + """ + + resiliencyType: Required[Literal[ResiliencyType.CYBER_RESILIENCY]] + """The resiliency type represented by these properties. Required. Cyber resiliency properties.""" + workloadType: Union[str, "WorkloadType"] + """The workload type of the Azure resource linked to the recovery resource. Known values are: + \"AzureVm\", \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", + \"OracleInAzureVm\", and \"AzureFileShare\".""" + protectedItemDetails: list["ProtectedItemDetails"] + """The backup protection details for the protected items associated with this resource.""" + membershipThroughServiceGroupMembers: list[str] + """The service group member identifiers through which this resource was discovered.""" + recoveryConfigProfileId: str + """The Azure resource identifier of the per-resource recovery configuration profile override.""" + inclusionEligibility: Union[str, "RecoveryResourceInclusionEligibility"] + """The resource's eligibility for inclusion for the configured targets. Known values are: + \"CanBeIncluded\" and \"CannotBeIncluded\".""" + + class DiskReprotectInputDetails(TypedDict, total=False): """Disk Reprotect Input Details. @@ -564,6 +656,17 @@ class DrillUpdateProperties(TypedDict, total=False): array is the new desired state.""" +class EffectiveConfiguration(TypedDict, total=False): + """The effective, resolved recovery configuration. + + :ivar workloadConfig: The effective workload configuration. Required. + :vartype workloadConfig: "WorkloadConfig" + """ + + workloadConfig: Required["WorkloadConfig"] + """The effective workload configuration. Required.""" + + class Enrollment(ProxyResource): """An enrollment that links a usage plan to a service group. @@ -765,6 +868,39 @@ class FaultProperties(TypedDict, total=False): """Custom Fault Details selected by user.""" +class FileShareRecoveryConfig(TypedDict, total=False): + """Recovery configuration for an Azure Files workload. + + :ivar workloadType: The workload type represented by this configuration. Required. An Azure + Files workload. + :vartype workloadType: Literal[WorkloadType.AZURE_FILE_SHARE] + :ivar targetNamePrefix: The prefix used when naming recovered file shares. + :vartype targetNamePrefix: str + :ivar storageAccount: The target storage account. Required. + :vartype storageAccount: "TargetResourceSpec" + :ivar targetFolderPath: The destination folder path in the target file share. + :vartype targetFolderPath: str + :ivar identity: The system-assigned and/or user-assigned managed identities used for restore. + :vartype identity: "ManagedServiceIdentity" + :ivar copyOptions: The behavior when a copied file already exists. Known values are: + "Overwrite" and "Skip". + :vartype copyOptions: Union[str, "CopyOptions"] + """ + + workloadType: Required[Literal[WorkloadType.AZURE_FILE_SHARE]] + """The workload type represented by this configuration. Required. An Azure Files workload.""" + targetNamePrefix: str + """The prefix used when naming recovered file shares.""" + storageAccount: Required["TargetResourceSpec"] + """The target storage account. Required.""" + targetFolderPath: str + """The destination folder path in the target file share.""" + identity: "ManagedServiceIdentity" + """The system-assigned and/or user-assigned managed identities used for restore.""" + copyOptions: Union[str, "CopyOptions"] + """The behavior when a copied file already exists. Known values are: \"Overwrite\" and \"Skip\".""" + + class GoalAssignment(ProxyResource): """A goal assignment resource in the Azure Resilience Management provider. @@ -793,6 +929,11 @@ class GoalAssignmentProperties(TypedDict, total=False): :ivar requireZonalResiliency: Whether zonal resiliency is required for this goal assignment. Required. :vartype requireZonalResiliency: bool + :ivar requireRegionalResiliency: Whether regional resiliency is required for this goal + assignment. + :vartype requireRegionalResiliency: bool + :ivar regionalObjectives: Recovery objectives targeted for regional resiliency. + :vartype regionalObjectives: "RegionalObjectives" :ivar serviceLevelResources: List of service level resources. :vartype serviceLevelResources: list["ServiceLevelResource"] :ivar provisioningState: The provisioning state of the goal assignment. Known values are: @@ -805,6 +946,10 @@ class GoalAssignmentProperties(TypedDict, total=False): requireZonalResiliency: Required[bool] """Whether zonal resiliency is required for this goal assignment. Required.""" + requireRegionalResiliency: bool + """Whether regional resiliency is required for this goal assignment.""" + regionalObjectives: "RegionalObjectives" + """Recovery objectives targeted for regional resiliency.""" serviceLevelResources: list["ServiceLevelResource"] """List of service level resources.""" provisioningState: Union[str, "ProvisioningState"] @@ -861,6 +1006,9 @@ class GoalResourceProperties(TypedDict, total=False): :ivar zonalResiliency: The zonal resiliency posture for the ARM resource, including participation, attestation, exclusion reason, and user confirmations. :vartype zonalResiliency: "ResiliencyProperties" + :ivar regionalResiliency: The regional resiliency posture for the ARM resource, including + participation, attestation, exclusion reason, and user confirmations. + :vartype regionalResiliency: "ResiliencyProperties" :ivar provisioningState: The provisioning state of the goal resource. Known values are: "Succeeded", "Failed", "Canceled", "Provisioning", "Updating", "Deleting", "Accepted", and "NeedsAttention". @@ -872,6 +1020,9 @@ class GoalResourceProperties(TypedDict, total=False): zonalResiliency: "ResiliencyProperties" """The zonal resiliency posture for the ARM resource, including participation, attestation, exclusion reason, and user confirmations.""" + regionalResiliency: "ResiliencyProperties" + """The regional resiliency posture for the ARM resource, including participation, attestation, + exclusion reason, and user confirmations.""" provisioningState: Union[str, "ProvisioningState"] """The provisioning state of the goal resource. Known values are: \"Succeeded\", \"Failed\", \"Canceled\", \"Provisioning\", \"Updating\", \"Deleting\", \"Accepted\", and @@ -913,6 +1064,45 @@ class IncludeOrUpdateResource(TypedDict, total=False): """Fault properties.""" +class InfrastructureResiliencyGroupProperties(TypedDict, total=False): + """Infrastructure resiliency properties for a recovery orchestration group. + + :ivar resiliencyType: The resiliency type represented by these properties. Required. + Infrastructure resiliency properties. + :vartype resiliencyType: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + """ + + resiliencyType: Required[Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY]] + """The resiliency type represented by these properties. Required. Infrastructure resiliency + properties.""" + + +class InfrastructureResiliencyPlanProperties(TypedDict, total=False): + """Infrastructure resiliency properties for a recovery plan. + + :ivar resiliencyType: The resiliency type represented by these properties. Required. + Infrastructure resiliency properties. + :vartype resiliencyType: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + """ + + resiliencyType: Required[Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY]] + """The resiliency type represented by these properties. Required. Infrastructure resiliency + properties.""" + + +class InfrastructureResiliencyResourceProperties(TypedDict, total=False): # pylint: disable=name-too-long + """Infrastructure resiliency properties for a recovery resource. + + :ivar resiliencyType: The resiliency type represented by these properties. Required. + Infrastructure resiliency properties. + :vartype resiliencyType: Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY] + """ + + resiliencyType: Required[Literal[ResiliencyType.INFRASTRUCTURE_RESILIENCY]] + """The resiliency type represented by these properties. Required. Infrastructure resiliency + properties.""" + + class LastRunProperties(TypedDict, total=False): """Definition of Last Run properties. @@ -927,6 +1117,8 @@ class LastRunProperties(TypedDict, total=False): :ivar lastRunAttestation: Attestation state of the last run of this Drill. Known values are: "Success" and "Failed". :vartype lastRunAttestation: Union[str, "DrillAttestation"] + :ivar lastRunRecoveryTimeActual: Actual recovery time of the last run of this Drill. + :vartype lastRunRecoveryTimeActual: str """ lastRunTime: str @@ -939,6 +1131,8 @@ class LastRunProperties(TypedDict, total=False): """Timespan of the last run of this Drill.""" lastRunAttestation: Union[str, "DrillAttestation"] """Attestation state of the last run of this Drill. Known values are: \"Success\" and \"Failed\".""" + lastRunRecoveryTimeActual: str + """Actual recovery time of the last run of this Drill.""" class ListReportDownloadUrlRequest(TypedDict, total=False): @@ -1029,6 +1223,40 @@ class MonitoringPropertiesOfDrill(TypedDict, total=False): for service group and its resources.""" +class ProtectedItemDetails(TypedDict, total=False): + """Backup protection details for a protected item. + + :ivar vaultResourceId: The Azure resource identifier of the backup vault protecting the item. + :vartype vaultResourceId: str + :ivar containerResourceId: The Azure resource identifier of the container for a + non-Azure-resource child. + :vartype containerResourceId: str + :ivar protectedItemId: The Azure resource identifier of the protected item in the backup vault. + :vartype protectedItemId: str + :ivar protectionState: The current backup protection state of the item. Known values are: + "Unknown", "Protected", and "NotProtected". + :vartype protectionState: Union[str, "ResourceProtectionState"] + :ivar location: The location of the protected resource. + :vartype location: str + :ivar recoveryLocations: The locations that support recovery of the protected item. + :vartype recoveryLocations: list[str] + """ + + vaultResourceId: str + """The Azure resource identifier of the backup vault protecting the item.""" + containerResourceId: str + """The Azure resource identifier of the container for a non-Azure-resource child.""" + protectedItemId: str + """The Azure resource identifier of the protected item in the backup vault.""" + protectionState: Union[str, "ResourceProtectionState"] + """The current backup protection state of the item. Known values are: \"Unknown\", \"Protected\", + and \"NotProtected\".""" + location: str + """The location of the protected resource.""" + recoveryLocations: list[str] + """The locations that support recovery of the protected item.""" + + class RecommendCapacityRequest(TypedDict, total=False): """Request body for the recommend capacity action. Provide specific resource IDs to evaluate, or pass an empty array to let the service automatically select non-resilient resources from the @@ -1057,6 +1285,97 @@ class RecoveryActionRequest(TypedDict, total=False): """User-provided input for the action.""" +class RecoveryConfigProfile(ProxyResource): + """A reusable, plan-scoped clean-room recovery configuration. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar systemData: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype systemData: "SystemData" + :ivar properties: The resource-specific properties for this resource. + :vartype properties: "RecoveryConfigProfileProperties" + """ + + properties: "RecoveryConfigProfileProperties" + """The resource-specific properties for this resource.""" + + +class RecoveryConfigProfileAssociation(TypedDict, total=False): + """Associates a workload type with a plan-scoped recovery configuration profile. + + :ivar workloadType: The workload type configured by the profile. Required. Known values are: + "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", "OracleInAzureVm", + and "AzureFileShare". + :vartype workloadType: Union[str, "WorkloadType"] + :ivar recoveryConfigProfileId: The Azure resource identifier of the plan-scoped recovery + configuration profile. Required. + :vartype recoveryConfigProfileId: str + """ + + workloadType: Required[Union[str, "WorkloadType"]] + """The workload type configured by the profile. Required. Known values are: \"AzureVm\", + \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", \"OracleInAzureVm\", and + \"AzureFileShare\".""" + recoveryConfigProfileId: Required[str] + """The Azure resource identifier of the plan-scoped recovery configuration profile. Required.""" + + +class RecoveryConfigProfileProperties(TypedDict, total=False): + """Properties of a plan-scoped recovery configuration profile. + + :ivar workloadType: The workload type configured by this profile. This response-only value is + populated by the service from workloadConfig.workloadType. Required. Known values are: + "AzureVm", "SqlDatabaseInAzureVm", "SapHanaInAzureVm", "SapAseInAzureVm", "OracleInAzureVm", + and "AzureFileShare". + :vartype workloadType: Union[str, "WorkloadType"] + :ivar targetScope: The subscription and location targeted by this profile. Required. + :vartype targetScope: "TargetScope" + :ivar workloadConfig: The workload-specific recovery configuration. Required. + :vartype workloadConfig: "WorkloadConfig" + :ivar recoveryPointPolicy: Default recovery point selection. + :vartype recoveryPointPolicy: "RecoveryPointPolicy" + :ivar provisioningState: The provisioning state of the recovery configuration profile. Known + values are: "Succeeded", "Failed", "Canceled", "Provisioning", "Updating", "Deleting", + "Accepted", and "NeedsAttention". + :vartype provisioningState: Union[str, "ProvisioningState"] + :ivar needsAttention: Indicates whether the profile requires user attention. + :vartype needsAttention: bool + :ivar attentionReasons: Structured reasons that the profile requires attention. + :vartype attentionReasons: list[str] + :ivar effectiveConfiguration: The effective profile configuration resolved at read time. + :vartype effectiveConfiguration: "EffectiveConfiguration" + """ + + workloadType: Required[Union[str, "WorkloadType"]] + """The workload type configured by this profile. This response-only value is populated by the + service from workloadConfig.workloadType. Required. Known values are: \"AzureVm\", + \"SqlDatabaseInAzureVm\", \"SapHanaInAzureVm\", \"SapAseInAzureVm\", \"OracleInAzureVm\", and + \"AzureFileShare\".""" + targetScope: Required["TargetScope"] + """The subscription and location targeted by this profile. Required.""" + workloadConfig: Required["WorkloadConfig"] + """The workload-specific recovery configuration. Required.""" + recoveryPointPolicy: "RecoveryPointPolicy" + """Default recovery point selection.""" + provisioningState: Union[str, "ProvisioningState"] + """The provisioning state of the recovery configuration profile. Known values are: \"Succeeded\", + \"Failed\", \"Canceled\", \"Provisioning\", \"Updating\", \"Deleting\", \"Accepted\", and + \"NeedsAttention\".""" + needsAttention: bool + """Indicates whether the profile requires user attention.""" + attentionReasons: list[str] + """Structured reasons that the profile requires attention.""" + effectiveConfiguration: "EffectiveConfiguration" + """The effective profile configuration resolved at read time.""" + + class RecoveryGroup(ProxyResource): """Represents a recovery orchestration group resource in the Azure Resilience Management provider namespace. @@ -1166,6 +1485,9 @@ class RecoveryGroupProperties(TypedDict, total=False): :vartype preActions: list["RecoveryGroupBaseAction"] :ivar postActions: Post-actions for the recovery orchestration group. :vartype postActions: list["RecoveryGroupBaseAction"] + :ivar resiliencyGroupProperties: Resiliency-specific properties for the recovery orchestration + group. + :vartype resiliencyGroupProperties: "RecoveryGroupResiliencyProperties" """ groupUniqueId: Required[str] @@ -1178,6 +1500,8 @@ class RecoveryGroupProperties(TypedDict, total=False): """Pre-actions for the recovery orchestration group.""" postActions: list["RecoveryGroupBaseAction"] """Post-actions for the recovery orchestration group.""" + resiliencyGroupProperties: "RecoveryGroupResiliencyProperties" + """Resiliency-specific properties for the recovery orchestration group.""" class RecoveryGroupsSetting(TypedDict, total=False): @@ -1285,7 +1609,8 @@ class RecoveryPlanProperties(TypedDict, total=False): "Accepted", and "NeedsAttention". :vartype provisioningState: Union[str, "ProvisioningState"] :ivar planType: The type of the recovery orchestration plan, which can be set during creation - but cannot be changed afterward. Required. Known values are: "Regional" and "Zonal". + but cannot be changed afterward. Required. Known values are: "Regional", "Zonal", and + "CyberRecovery". :vartype planType: Union[str, "RecoveryPlanType"] :ivar planState: The current state of the recovery orchestration plan. Known values are: "UnderEdit", "Warning", and "Ready". @@ -1295,6 +1620,8 @@ class RecoveryPlanProperties(TypedDict, total=False): :ivar recoveryGroupsSetting: Settings for the recovery orchestration groups associated with the recovery orchestration plan. Required. :vartype recoveryGroupsSetting: "RecoveryGroupsSetting" + :ivar resiliencyPlanProperties: Resiliency-specific properties for the recovery plan. + :vartype resiliencyPlanProperties: "RecoveryPlanResiliencyProperties" :ivar latestFailoverStatus: The status of the most recent failover operation executed. :vartype latestFailoverStatus: "RecoveryPlanFailoverOperationStatus" :ivar latestValidationStatus: The status of the most recent validation performed. @@ -1309,7 +1636,7 @@ class RecoveryPlanProperties(TypedDict, total=False): \"NeedsAttention\".""" planType: Required[Union[str, "RecoveryPlanType"]] """The type of the recovery orchestration plan, which can be set during creation but cannot be - changed afterward. Required. Known values are: \"Regional\" and \"Zonal\".""" + changed afterward. Required. Known values are: \"Regional\", \"Zonal\", and \"CyberRecovery\".""" planState: Union[str, "RecoveryPlanState"] """The current state of the recovery orchestration plan. Known values are: \"UnderEdit\", \"Warning\", and \"Ready\".""" @@ -1318,6 +1645,8 @@ class RecoveryPlanProperties(TypedDict, total=False): recoveryGroupsSetting: Required["RecoveryGroupsSetting"] """Settings for the recovery orchestration groups associated with the recovery orchestration plan. Required.""" + resiliencyPlanProperties: "RecoveryPlanResiliencyProperties" + """Resiliency-specific properties for the recovery plan.""" latestFailoverStatus: "RecoveryPlanFailoverOperationStatus" """The status of the most recent failover operation executed.""" latestValidationStatus: "RecoveryPlanOperationStatus" @@ -1345,6 +1674,59 @@ class RecoveryPlanPropertiesOfDrill(TypedDict, total=False): """Excluded resource count in RecoveryPlan.""" +class RecoveryPointPolicy(TypedDict, total=False): + """Default recovery point selection for a recovery configuration profile. + + :ivar type: The recovery point selection policy type. Required. Known values are: "Latest" and + "Random". + :vartype type: Union[str, "RecoveryPointPolicyType"] + :ivar startTime: The inclusive lower time bound. Required with endTime for Random selection + when lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration. + :vartype startTime: str + :ivar endTime: The inclusive upper time bound. Required with startTime for Random selection + when lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration. + :vartype endTime: str + :ivar lookbackDuration: A positive, fixed ISO 8601 duration for relative Random selection, such + as P10D or PT12H. Only days, hours, minutes, and seconds are supported; calendar-dependent + months and years are not supported. Mutually exclusive with startTime and endTime. The service + resolves the duration to absolute bounds at execution time without modifying the saved profile. + :vartype lookbackDuration: str + :ivar backupType: The explicit, non-empty list of unique backup mechanisms to consider. Random + selection cannot include Log, even when other mechanisms are also selected. Required. + :vartype backupType: list[Union[str, "BackupType"]] + :ivar recoveryPointHealthStatus: The health filter for discrete recovery points. Omission means + All. Log and point-in-time recovery candidates are not health-filtered. Known values are: + "HealthyOnly", "HealthyAndUnknown", and "All". + :vartype recoveryPointHealthStatus: Union[str, "RecoveryPointHealthStatus"] + """ + + type: Required[Union[str, "RecoveryPointPolicyType"]] + """The recovery point selection policy type. Required. Known values are: \"Latest\" and + \"Random\".""" + startTime: str + """The inclusive lower time bound. Required with endTime for Random selection when + lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration.""" + endTime: str + """The inclusive upper time bound. Required with startTime for Random selection when + lookbackDuration is omitted; optional for Latest selection. Mutually exclusive with + lookbackDuration.""" + lookbackDuration: str + """A positive, fixed ISO 8601 duration for relative Random selection, such as P10D or PT12H. Only + days, hours, minutes, and seconds are supported; calendar-dependent months and years are not + supported. Mutually exclusive with startTime and endTime. The service resolves the duration to + absolute bounds at execution time without modifying the saved profile.""" + backupType: Required[list[Union[str, "BackupType"]]] + """The explicit, non-empty list of unique backup mechanisms to consider. Random selection cannot + include Log, even when other mechanisms are also selected. Required.""" + recoveryPointHealthStatus: Union[str, "RecoveryPointHealthStatus"] + """The health filter for discrete recovery points. Omission means All. Log and point-in-time + recovery candidates are not health-filtered. Known values are: \"HealthyOnly\", + \"HealthyAndUnknown\", and \"All\".""" + + class RecoveryResource(ProxyResource): """RecoveryPlan Resource a AzureResilienceProviderHub resource. @@ -1389,6 +1771,9 @@ class RecoveryResourceProperties(TypedDict, total=False): :ivar inclusionState: A state that indicates the resource status with respect to the recovery orchestration plan. Known values are: "Included" and "Excluded". :vartype inclusionState: Union[str, "ResourceInclusionState"] + :ivar inclusionDisabledReasons: Reasons why inclusion of the resource in a recovery plan is + disabled. + :vartype inclusionDisabledReasons: list[Union[str, "ResourceInclusionDisabledReason"]] :ivar needsAttention: Indicating if resource needs user attention and action, details will be found in attentionReasons. :vartype needsAttention: bool @@ -1403,7 +1788,8 @@ class RecoveryResourceProperties(TypedDict, total=False): :vartype resourceProtectionSolutions: list["ResourceProtectionSolutionSettings"] :ivar selectedProtectionSolutionType: A setting that indicates the protection solution selected. Known values are: "None", "AzureNative", "AzureSiteRecovery", "CrossZoneVMRecovery", - and "CustomRunbook". + "CustomRunbook", "AzureTemplate", "AzureStorageAccount", "AzureServiceBus", "AzureNetAppFiles", + and "AzureCosmosDB". :vartype selectedProtectionSolutionType: Union[str, "ResourceProtectionSolutionType"] :ivar selectedProtectionSolutionSetting: Resource protection solution settings of the protection solutions recovery orchestration resource is protected with. @@ -1416,6 +1802,8 @@ class RecoveryResourceProperties(TypedDict, total=False): :vartype associatedIdentity: "AssociatedIdentity" :ivar errorDetails: Error details associated with the resource. :vartype errorDetails: "ErrorDetail" + :ivar resiliencyResourceProperties: Resiliency-specific properties for the recovery resource. + :vartype resiliencyResourceProperties: "RecoveryResourceResiliencyProperties" """ recoveryResourceUniqueId: Required[str] @@ -1435,6 +1823,8 @@ class RecoveryResourceProperties(TypedDict, total=False): inclusionState: Union[str, "ResourceInclusionState"] """A state that indicates the resource status with respect to the recovery orchestration plan. Known values are: \"Included\" and \"Excluded\".""" + inclusionDisabledReasons: list[Union[str, "ResourceInclusionDisabledReason"]] + """Reasons why inclusion of the resource in a recovery plan is disabled.""" needsAttention: bool """Indicating if resource needs user attention and action, details will be found in attentionReasons.""" @@ -1449,7 +1839,9 @@ class RecoveryResourceProperties(TypedDict, total=False): protected.""" selectedProtectionSolutionType: Union[str, "ResourceProtectionSolutionType"] """A setting that indicates the protection solution selected. Known values are: \"None\", - \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and \"CustomRunbook\".""" + \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", \"CustomRunbook\", + \"AzureTemplate\", \"AzureStorageAccount\", \"AzureServiceBus\", \"AzureNetAppFiles\", and + \"AzureCosmosDB\".""" selectedProtectionSolutionSetting: "ResourceBaseProtectionSolutionSetting" """Resource protection solution settings of the protection solutions recovery orchestration resource is protected with.""" @@ -1460,6 +1852,8 @@ class RecoveryResourceProperties(TypedDict, total=False): on it.""" errorDetails: "ErrorDetail" """Error details associated with the resource.""" + resiliencyResourceProperties: "RecoveryResourceResiliencyProperties" + """Resiliency-specific properties for the recovery resource.""" class RegionalDrillProperties(TypedDict, total=False): @@ -1552,6 +1946,25 @@ class RegionalDrillProperties(TypedDict, total=False): """The discriminator for the Drill object hierarchy. Required. Regional Drill.""" +class RegionalObjectives(TypedDict, total=False): + """Recovery objectives targeted by a goal assignment for regional resiliency. + + :ivar targetRecoveryPointObjective: Target regional recovery point objective. eg, PT15M for 15 + minutes. Required. Known values are: "PT15M", "PT1H", "PT4H", and "PT24H". + :vartype targetRecoveryPointObjective: Union[str, "IsoDuration"] + :ivar targetRecoveryTimeObjective: Target regional recovery time objective. eg, PT1H for 1 + hour. Required. Known values are: "PT15M", "PT1H", "PT4H", and "PT24H". + :vartype targetRecoveryTimeObjective: Union[str, "IsoDuration"] + """ + + targetRecoveryPointObjective: Required[Union[str, "IsoDuration"]] + """Target regional recovery point objective. eg, PT15M for 15 minutes. Required. Known values are: + \"PT15M\", \"PT1H\", \"PT4H\", and \"PT24H\".""" + targetRecoveryTimeObjective: Required[Union[str, "IsoDuration"]] + """Target regional recovery time objective. eg, PT1H for 1 hour. Required. Known values are: + \"PT15M\", \"PT1H\", \"PT4H\", and \"PT24H\".""" + + class ReprotectRequest(TypedDict, total=False): """Reprotect post action request. @@ -1606,6 +2019,55 @@ class ResiliencyProperties(TypedDict, total=False): """User confirmations for resiliency solutions recommended for the ARM resource.""" +class ResourceAzureTemplateProtectionSetting(TypedDict, total=False): + """Definition of recovery orchestration resource protection using an Azure Resource Manager + template. + + :ivar protectionSolutionType: A setting that indicates Azure Resource Manager template-based + recovery. Required. Resource recovery is orchestrated by deploying an Azure Resource Manager + template. + :vartype protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_TEMPLATE] + :ivar templateSpecVersionId: The Azure resource ID of the Template Spec version to deploy. + Required. + :vartype templateSpecVersionId: str + :ivar deploymentScope: The Azure Resource Manager scope at which the recovery template is + deployed. Must be the subscription containing the protected resource, or a resource group + within it; deployments above subscription scope are not supported. Required. + :vartype deploymentScope: str + :ivar deploymentLocation: The location used to store deployment metadata. Required when + deploymentScope is a subscription. + :vartype deploymentLocation: str + """ + + protectionSolutionType: Required[Literal[ResourceProtectionSolutionType.AZURE_TEMPLATE]] + """A setting that indicates Azure Resource Manager template-based recovery. Required. Resource + recovery is orchestrated by deploying an Azure Resource Manager template.""" + templateSpecVersionId: Required[str] + """The Azure resource ID of the Template Spec version to deploy. Required.""" + deploymentScope: Required[str] + """The Azure Resource Manager scope at which the recovery template is deployed. Must be the + subscription containing the protected resource, or a resource group within it; deployments + above subscription scope are not supported. Required.""" + deploymentLocation: str + """The location used to store deployment metadata. Required when deploymentScope is a + subscription.""" + + +class ResourceCosmosDBProtectionSetting(TypedDict, total=False): + """Definition of recovery orchestration resource protection using Azure Cosmos DB. + + :ivar protectionSolutionType: A setting that indicates Azure Cosmos DB protection. Required. + Resource is protected with Azure Cosmos DB multiregion replication using customer-managed + failover, where recovery promotes a secondary region to the write region. + :vartype protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_COSMOS_DB] + """ + + protectionSolutionType: Required[Literal[ResourceProtectionSolutionType.AZURE_COSMOS_DB]] + """A setting that indicates Azure Cosmos DB protection. Required. Resource is protected with Azure + Cosmos DB multiregion replication using customer-managed failover, where recovery promotes a + secondary region to the write region.""" + + class ResourceCrossZoneVmRecoveryProtectionSetting(TypedDict, total=False): # pylint: disable=name-too-long """Definition of recovery orchestration resource protection with cross-zone (zonally resilient) VM recovery. @@ -1715,13 +2177,32 @@ class ResourceNativeProtectionSolutionSetting(TypedDict, total=False): Resource is protected with the Azure native solution provided by the native Azure service.""" +class ResourceNetAppFilesProtectionSetting(TypedDict, total=False): + """Definition of recovery orchestration resource protection using Azure NetApp Files. + + :ivar protectionSolutionType: A setting that indicates Azure NetApp Files protection. Required. + Resource is protected with Azure NetApp Files cross-region replication, where recovery fails + over to the destination volume. + :vartype protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_NET_APP_FILES] + """ + + protectionSolutionType: Required[Literal[ResourceProtectionSolutionType.AZURE_NET_APP_FILES]] + """A setting that indicates Azure NetApp Files protection. Required. Resource is protected with + Azure NetApp Files cross-region replication, where recovery fails over to the destination + volume.""" + + class ResourceProtectionSolutionSettings(TypedDict, total=False): """Definition of recovery resource resource protection solution settings. :ivar protectionSolutionType: A setting that indicates the resource protected with which recovery solution. Known values are: "None", "AzureNative", "AzureSiteRecovery", - "CrossZoneVMRecovery", and "CustomRunbook". + "CrossZoneVMRecovery", "CustomRunbook", "AzureTemplate", "AzureStorageAccount", + "AzureServiceBus", "AzureNetAppFiles", and "AzureCosmosDB". :vartype protectionSolutionType: Union[str, "ResourceProtectionSolutionType"] + :ivar replicationMode: Replication mode configured for the protected resource. Known values + are: "None", "ActiveActive", and "ActivePassive". + :vartype replicationMode: Union[str, "ReplicationMode"] :ivar protectionStatus: A status that indicates the protection status of a resource with an Azure solution for regional or zonal recovery. Known values are: "Unknown", "Protected", "NotProtected", and "HighlyAvailable". @@ -1759,8 +2240,12 @@ class ResourceProtectionSolutionSettings(TypedDict, total=False): protectionSolutionType: Union[str, "ResourceProtectionSolutionType"] """A setting that indicates the resource protected with which recovery solution. Known values are: - \"None\", \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", and - \"CustomRunbook\".""" + \"None\", \"AzureNative\", \"AzureSiteRecovery\", \"CrossZoneVMRecovery\", \"CustomRunbook\", + \"AzureTemplate\", \"AzureStorageAccount\", \"AzureServiceBus\", \"AzureNetAppFiles\", and + \"AzureCosmosDB\".""" + replicationMode: Union[str, "ReplicationMode"] + """Replication mode configured for the protected resource. Known values are: \"None\", + \"ActiveActive\", and \"ActivePassive\".""" protectionStatus: Union[str, "ResourceProtectionStatus"] """A status that indicates the protection status of a resource with an Azure solution for regional or zonal recovery. Known values are: \"Unknown\", \"Protected\", \"NotProtected\", and @@ -1796,6 +2281,21 @@ class ResourceProtectionSolutionSettings(TypedDict, total=False): \"TestFailoverCleanupPending\".""" +class ResourceServiceBusProtectionSetting(TypedDict, total=False): + """Definition of recovery orchestration resource protection using Azure Service Bus. + + :ivar protectionSolutionType: A setting that indicates Azure Service Bus protection. Required. + Resource is protected with Azure Service Bus geo-replication, where a premium namespace + replicates data to a secondary region and recovery promotes that secondary in place. + :vartype protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_SERVICE_BUS] + """ + + protectionSolutionType: Required[Literal[ResourceProtectionSolutionType.AZURE_SERVICE_BUS]] + """A setting that indicates Azure Service Bus protection. Required. Resource is protected with + Azure Service Bus geo-replication, where a premium namespace replicates data to a secondary + region and recovery promotes that secondary in place.""" + + class ResourceSiteRecoveryProtectionSetting(TypedDict, total=False): """Definition of recovery orchestration resource protection with azure site recovery. @@ -1855,6 +2355,19 @@ class ResourceSiteRecoveryTestFailoverParams(TypedDict, total=False): """The Azure network resource is which will be used for test failover virtual machine.""" +class ResourceStorageAccountProtectionSetting(TypedDict, total=False): + """Definition of recovery orchestration resource protection using an Azure Storage account. + + :ivar protectionSolutionType: A setting that indicates Azure Storage account protection. + Required. Resource is protected with Azure Storage account customer-managed failover. + :vartype protectionSolutionType: Literal[ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT] + """ + + protectionSolutionType: Required[Literal[ResourceProtectionSolutionType.AZURE_STORAGE_ACCOUNT]] + """A setting that indicates Azure Storage account protection. Required. Resource is protected with + Azure Storage account customer-managed failover.""" + + class ServiceLevelResource(TypedDict, total=False): """A service-level resource associated with a goal assignment. @@ -2000,6 +2513,72 @@ class SystemMetadata(TypedDict, total=False): """An indication whether a intrested resource type is present in drill resource.""" +class TargetEnvironment(TypedDict, total=False): + """The target subscriptions and locations for cyber recovery. + + :ivar targetSubscriptionIds: The subscription identifiers available as recovery targets. + Required. + :vartype targetSubscriptionIds: list[str] + :ivar targetLocations: The Azure locations available as recovery targets. Required. + :vartype targetLocations: list[str] + """ + + targetSubscriptionIds: Required[list[str]] + """The subscription identifiers available as recovery targets. Required.""" + targetLocations: Required[list[str]] + """The Azure locations available as recovery targets. Required.""" + + +class TargetResourceSpec(TypedDict, total=False): + """A target resource required by a recovery workload. + + :ivar armResourceType: The full Azure resource type of the target. Supported types include + Microsoft.Resources/resourceGroups, Microsoft.Compute/virtualMachines, + Microsoft.Network/virtualNetworks, Microsoft.Network/virtualNetworks/subnets, + Microsoft.Storage/storageAccounts, Microsoft.Compute/diskEncryptionSets, + Microsoft.KeyVault/vaults, and Microsoft.Network/networkSecurityGroups. The service validates + supported target resource types. Required. + :vartype armResourceType: str + :ivar provisioningMode: How the target resource is provisioned. "Existing" + :vartype provisioningMode: Union[str, "TargetProvisioningMode"] + :ivar resourceId: The Azure resource identifier of the existing target. Required when + provisioningMode is Existing. + :vartype resourceId: str + :ivar dependsOn: The target resources that this target depends on. + :vartype dependsOn: list[str] + """ + + armResourceType: Required[str] + """The full Azure resource type of the target. Supported types include + Microsoft.Resources/resourceGroups, Microsoft.Compute/virtualMachines, + Microsoft.Network/virtualNetworks, Microsoft.Network/virtualNetworks/subnets, + Microsoft.Storage/storageAccounts, Microsoft.Compute/diskEncryptionSets, + Microsoft.KeyVault/vaults, and Microsoft.Network/networkSecurityGroups. The service validates + supported target resource types. Required.""" + provisioningMode: Union[str, "TargetProvisioningMode"] + """How the target resource is provisioned. \"Existing\"""" + resourceId: str + """The Azure resource identifier of the existing target. Required when provisioningMode is + Existing.""" + dependsOn: list[str] + """The target resources that this target depends on.""" + + +class TargetScope(TypedDict, total=False): + """The subscription and location targeted by a recovery configuration profile. + + :ivar subscriptionId: The target Azure subscription identifier. Required. + :vartype subscriptionId: str + :ivar location: The target Azure location. Required. + :vartype location: str + """ + + subscriptionId: Required[str] + """The target Azure subscription identifier. Required.""" + location: Required[str] + """The target Azure location. Required.""" + + class TestFailoverCleanupRequest(TypedDict, total=False): """TestFailoverCleanup post action request. @@ -2211,6 +2790,58 @@ class ValidateForOperationRequest(TypedDict, total=False): \"Reprotect\", \"TestFailover\", and \"TestFailoverCleanup\".""" +class VmRecoveryConfig(TypedDict, total=False): + """Recovery configuration for an Azure virtual machine. + + :ivar recoveryType: The virtual machine recovery behavior. Defaults to creating a new virtual + machine. Known values are: "CreateNewVM", "AlternateLocation", "RestoreAsDisks", and + "RestoreAsFiles". + :vartype recoveryType: Union[str, "RecoveryType"] + :ivar targetNamePrefix: The prefix used when naming recovered virtual machines. + :vartype targetNamePrefix: str + :ivar resourceGroup: The target resource group. Required. + :vartype resourceGroup: "TargetResourceSpec" + :ivar virtualNetwork: The target virtual network. Required. + :vartype virtualNetwork: "TargetResourceSpec" + :ivar subnet: The target subnet. Required. + :vartype subnet: "TargetResourceSpec" + :ivar storageAccount: The target storage account. Required. + :vartype storageAccount: "TargetResourceSpec" + :ivar workloadType: The workload type represented by this configuration. Required. An Azure + virtual machine workload. + :vartype workloadType: Literal[WorkloadType.AZURE_VM] + :ivar diskEncryptionSet: The target disk encryption set. + :vartype diskEncryptionSet: "TargetResourceSpec" + :ivar identity: The system-assigned and/or user-assigned managed identities used for restore. + :vartype identity: "ManagedServiceIdentity" + :ivar zones: The target availability zones. + :vartype zones: list[str] + """ + + recoveryType: Union[str, "RecoveryType"] + """The virtual machine recovery behavior. Defaults to creating a new virtual machine. Known values + are: \"CreateNewVM\", \"AlternateLocation\", \"RestoreAsDisks\", and \"RestoreAsFiles\".""" + targetNamePrefix: str + """The prefix used when naming recovered virtual machines.""" + resourceGroup: Required["TargetResourceSpec"] + """The target resource group. Required.""" + virtualNetwork: Required["TargetResourceSpec"] + """The target virtual network. Required.""" + subnet: Required["TargetResourceSpec"] + """The target subnet. Required.""" + storageAccount: Required["TargetResourceSpec"] + """The target storage account. Required.""" + workloadType: Required[Literal[WorkloadType.AZURE_VM]] + """The workload type represented by this configuration. Required. An Azure virtual machine + workload.""" + diskEncryptionSet: "TargetResourceSpec" + """The target disk encryption set.""" + identity: "ManagedServiceIdentity" + """The system-assigned and/or user-assigned managed identities used for restore.""" + zones: list[str] + """The target availability zones.""" + + class ZonalDrillProperties(TypedDict, total=False): """Definition of Zonal Drill properties. @@ -2307,11 +2938,22 @@ class ZonalDrillProperties(TypedDict, total=False): values are: \"Present\" and \"Absent\".""" +RecoveryGroupResiliencyProperties = Union[CyberResiliencyGroupProperties, InfrastructureResiliencyGroupProperties] +RecoveryPlanResiliencyProperties = Union[CyberResiliencyPlanProperties, InfrastructureResiliencyPlanProperties] +RecoveryResourceResiliencyProperties = Union[ + CyberResiliencyResourceProperties, InfrastructureResiliencyResourceProperties +] DrillProperties = Union[RegionalDrillProperties, ZonalDrillProperties] +WorkloadConfig = Union[FileShareRecoveryConfig, VmRecoveryConfig] RecoveryGroupBaseAction = Union[RecoveryGroupCustomRunbookAction, RecoveryGroupManualAction] ResourceBaseProtectionSolutionSetting = Union[ + ResourceCosmosDBProtectionSetting, ResourceNativeProtectionSolutionSetting, + ResourceNetAppFilesProtectionSetting, + ResourceServiceBusProtectionSetting, ResourceSiteRecoveryProtectionSetting, + ResourceStorageAccountProtectionSetting, + ResourceAzureTemplateProtectionSetting, ResourceCrossZoneVmRecoveryProtectionSetting, ResourceCustomProtectionSetting, ] diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_maximum_set_gen.py index 98bd3f7aa63a..dc54a0fad376 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/DrillResources_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillResources_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_regional.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_regional.py new file mode 100644 index 000000000000..f84bed3e0f89 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_get_regional.py @@ -0,0 +1,43 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python drill_resources_get_regional.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.drill_resources.get( + service_group_name="sampleServiceGroupName", + drill_name="regionalDrill", + drill_resource_name="b6378181-9dc0-4a43-8e09-97a8b08aabaa", + ) + print(response) + + +# x-ms-original-file: 2026-11-30-preview/DrillResources_Get_Regional.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_maximum_set_gen.py index 725eb8ccea15..e0465b918d80 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/DrillResources_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillResources_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_regional.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_regional.py new file mode 100644 index 000000000000..4cbbb529c505 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_resources_list_regional.py @@ -0,0 +1,43 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python drill_resources_list_regional.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.drill_resources.list( + service_group_name="sampleServiceGroupName", + drill_name="regionalDrill", + ) + for item in response: + print(item) + + +# x-ms-original-file: 2026-11-30-preview/DrillResources_List_Regional.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_get_maximum_set_gen.py index 79d98abbf635..3bc3465b8844 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_get_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/DrillRunResources_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRunResources_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_list_maximum_set_gen.py index 5d17331b8839..38ff59e40c78 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_run_resources_list_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/DrillRunResources_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRunResources_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_add_notes_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_add_notes_maximum_set_gen.py index 254014baf609..6bbcfc9086e8 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_add_notes_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_add_notes_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/DrillRuns_AddNotes_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_AddNotes_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_fail_over_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_fail_over_maximum_set_gen.py index ad28055b7488..4935e35edc02 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_fail_over_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_fail_over_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/DrillRuns_FailOver_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_FailOver_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_generate_report_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_generate_report_maximum_set_gen.py index ea438be878b1..8fec0695cc73 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_generate_report_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_generate_report_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/DrillRuns_GenerateReport_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_GenerateReport_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_get_maximum_set_gen.py index 70709020a7d7..eabe237a4adb 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_get_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/DrillRuns_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_maximum_set_gen.py index bad7253f2e5d..48f82c0646b6 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/DrillRuns_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_report_download_url_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_report_download_url_maximum_set_gen.py index 2dc1a4140f72..83c23e327449 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_report_download_url_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_list_report_download_url_maximum_set_gen.py @@ -40,6 +40,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/DrillRuns_ListReportDownloadUrl_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_ListReportDownloadUrl_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_mark_as_complete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_mark_as_complete_maximum_set_gen.py index 313341a2dc52..e2441b5c9385 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_mark_as_complete_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_mark_as_complete_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/DrillRuns_MarkAsComplete_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_MarkAsComplete_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_reprotect_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_reprotect_maximum_set_gen.py index 73481f644ff5..82c279773f95 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_reprotect_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_reprotect_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/DrillRuns_Reprotect_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_Reprotect_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_resume_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_resume_maximum_set_gen.py index 6a3fe20e3a31..519165840b25 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_resume_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drill_runs_resume_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/DrillRuns_Resume_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/DrillRuns_Resume_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_add_or_update_resources_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_add_or_update_resources_maximum_set_gen.py index a8760ac8c1cb..1dd4a14b23f7 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_add_or_update_resources_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_add_or_update_resources_maximum_set_gen.py @@ -89,6 +89,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_AddOrUpdateResources_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_AddOrUpdateResources_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_create_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_create_maximum_set_gen.py index a11903af3854..3da7696fe64d 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_create_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_create_maximum_set_gen.py @@ -52,7 +52,7 @@ def main(): "resourceGroup": "customDrillResourceGroup", "subscription": "4e88bed3-114f-443d-9975-28f64122ec5e", }, - "drillType": "Zonal", + "drillType": "DrillProperties", "executionReadinessState": "Ready", "executionState": "NotRunning", "goalAssignmentProperties": { @@ -105,6 +105,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/Drills_Create_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_Create_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_delete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_delete_maximum_set_gen.py index 8cde787a88d5..6c8f78452552 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_delete_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_delete_maximum_set_gen.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_Delete_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_Delete_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_end_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_end_maximum_set_gen.py index f09d5ad4b617..ec3be476a133 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_end_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_end_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_End_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_End_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_get_maximum_set_gen.py index 564a623b3cba..554612cc11aa 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_get_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/Drills_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_list_maximum_set_gen.py index b71d921037c4..b80ddb5ccb4c 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_list_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/Drills_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_resync_readiness_check_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_resync_readiness_check_maximum_set_gen.py index 194ca6c21422..028e5cbba1d0 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_resync_readiness_check_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_resync_readiness_check_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_ResyncReadinessCheck_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_ResyncReadinessCheck_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_start_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_start_maximum_set_gen.py index 51497c72d17b..201872aca619 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_start_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_start_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_Start_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_Start_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_update_maximum_set_gen.py index 330ea86f6afc..a4f93e5d8799 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_update_maximum_set_gen.py @@ -91,6 +91,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_Update_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_Update_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_validate_for_execution_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_validate_for_execution_maximum_set_gen.py index 8eb62ae3743e..f40888b9147b 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_validate_for_execution_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/drills_validate_for_execution_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Drills_ValidateForExecution_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Drills_ValidateForExecution_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_create_or_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_create_or_update_maximum_set_gen.py index ba39aae269ce..e49d84281729 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_create_or_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_create_or_update_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/Enrollments_CreateOrUpdate_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Enrollments_CreateOrUpdate_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_delete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_delete_maximum_set_gen.py index 00a8c1b982bb..0d3a786e022c 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_delete_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_delete_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/Enrollments_Delete_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Enrollments_Delete_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_get_maximum_set_gen.py index 1034b05c2b03..3b07bab9e108 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_get_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/Enrollments_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Enrollments_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_list_maximum_set_gen.py index 292786d03fdc..14a0d27a6be2 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/enrollments_list_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/Enrollments_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Enrollments_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_maximum_set_gen.py index 140d8667ff33..e081c8efbf3e 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_maximum_set_gen.py @@ -32,10 +32,12 @@ def main(): ) client.goal_assignments.begin_create_or_update( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", resource={ "properties": { + "regionalObjectives": {"targetRecoveryPointObjective": "PT15M", "targetRecoveryTimeObjective": "PT1H"}, + "requireRegionalResiliency": True, "requireZonalResiliency": True, "serviceLevelResources": [ { @@ -47,6 +49,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_CreateOrUpdate_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_CreateOrUpdate_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_minimum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_minimum_set_gen.py index 4806e6a7c609..8c857a765b48 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_minimum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_create_or_update_minimum_set_gen.py @@ -31,12 +31,12 @@ def main(): ) client.goal_assignments.begin_create_or_update( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", resource={"properties": {"requireZonalResiliency": True}}, ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_CreateOrUpdate_MinimumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_CreateOrUpdate_MinimumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_delete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_delete_maximum_set_gen.py index 21156885270e..c665b9fbfdc4 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_delete_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_delete_maximum_set_gen.py @@ -31,11 +31,11 @@ def main(): ) client.goal_assignments.begin_delete( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_Delete_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_Delete_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_get_maximum_set_gen.py index 85580b272e6f..edafb22a77d5 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_get_maximum_set_gen.py @@ -31,12 +31,12 @@ def main(): ) response = client.goal_assignments.get( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", ) print(response) -# x-ms-original-file: 2026-10-01/GoalAssignments_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_maximum_set_gen.py index 61ff0fdce7a4..c8c863b36a49 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_maximum_set_gen.py @@ -31,12 +31,12 @@ def main(): ) response = client.goal_assignments.list( - service_group_name="production-sg", + service_group_name="zldmpkvqzifygkqau", ) for item in response: print(item) -# x-ms-original-file: 2026-10-01/GoalAssignments_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_minimum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_minimum_set_gen.py index 53d87b692cb5..aad3e188844a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_minimum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_list_minimum_set_gen.py @@ -31,12 +31,12 @@ def main(): ) response = client.goal_assignments.list( - service_group_name="production-sg", + service_group_name="sg1", ) for item in response: print(item) -# x-ms-original-file: 2026-10-01/GoalAssignments_List_MinimumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_List_MinimumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_recommend_capacity_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_recommend_capacity_maximum_set_gen.py index d652ad11b587..aea911a2c63a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_recommend_capacity_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_recommend_capacity_maximum_set_gen.py @@ -32,8 +32,8 @@ def main(): ) client.goal_assignments.begin_recommend_capacity( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", body={ "resourceIds": [ "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRg/providers/Microsoft.Compute/virtualMachines/vm1", @@ -43,6 +43,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_RecommendCapacity_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_RecommendCapacity_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_refresh_goal_resources_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_refresh_goal_resources_maximum_set_gen.py index 335d4a0a040c..1cf8726d3d1f 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_refresh_goal_resources_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_refresh_goal_resources_maximum_set_gen.py @@ -31,11 +31,11 @@ def main(): ) client.goal_assignments.begin_refresh_goal_resources( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_RefreshGoalResources_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_RefreshGoalResources_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_goal_resources_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_goal_resources_maximum_set_gen.py index 3b93a6e3fac9..8aa9087af31e 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_goal_resources_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_goal_resources_maximum_set_gen.py @@ -32,18 +32,26 @@ def main(): ) client.goal_assignments.begin_update_goal_resources( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", body={ "resources": [ { "properties": { + "regionalResiliency": { + "attestationStatus": "ManuallyAttested", + "goalParticipation": "Excluded", + }, "resourceArmId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVirtualMachine", "zonalResiliency": {"attestationStatus": "ManuallyAttested", "goalParticipation": "Excluded"}, } }, { "properties": { + "regionalResiliency": { + "attestationStatus": "ManuallyAttested", + "goalParticipation": "Excluded", + }, "resourceArmId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVirtualMachine1", "zonalResiliency": {"attestationStatus": "ManuallyAttested", "goalParticipation": "Excluded"}, } @@ -53,6 +61,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_UpdateGoalResources_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_UpdateGoalResources_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_maximum_set_gen.py index 3d238ba3f994..dc0db6a94119 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_assignments_update_maximum_set_gen.py @@ -32,10 +32,12 @@ def main(): ) client.goal_assignments.begin_update( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", properties={ "properties": { + "regionalObjectives": {"targetRecoveryPointObjective": "PT15M", "targetRecoveryTimeObjective": "PT1H"}, + "requireRegionalResiliency": True, "requireZonalResiliency": True, "serviceLevelResources": [ { @@ -47,6 +49,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/GoalAssignments_Update_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalAssignments_Update_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_complete_example.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_complete_example.py index 8f219c1f2a34..3d7c6dd0d9be 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_complete_example.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_complete_example.py @@ -32,12 +32,12 @@ def main(): response = client.goal_resources.get( service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", - goal_resource_name="primary-vm", + goal_assignment_name="resiliencyGoalAssignment", + goal_resource_name="web-app-resource", ) print(response) -# x-ms-original-file: 2026-10-01/GoalResources_Get_Complete_Example.json +# x-ms-original-file: 2026-11-30-preview/GoalResources_Get_Complete_Example.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_maximum_set_gen.py index fe061f86ba2a..a44ac65defed 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_maximum_set_gen.py @@ -31,13 +31,13 @@ def main(): ) response = client.goal_resources.get( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", - goal_resource_name="primary-vm", + service_group_name="umyghwnfpzsgrhpczizcn", + goal_assignment_name="ga1", + goal_resource_name="gr1", ) print(response) -# x-ms-original-file: 2026-10-01/GoalResources_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalResources_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_minimum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_minimum_set_gen.py index 758124763469..f09ea590a417 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_minimum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_get_minimum_set_gen.py @@ -31,13 +31,13 @@ def main(): ) response = client.goal_resources.get( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", - goal_resource_name="primary-vm", + service_group_name="sg1", + goal_assignment_name="ga1", + goal_resource_name="gr1", ) print(response) -# x-ms-original-file: 2026-10-01/GoalResources_Get_MinimumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalResources_Get_MinimumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_list_maximum_set_gen.py index e7f04868f060..1a2018642aef 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/goal_resources_list_maximum_set_gen.py @@ -31,13 +31,13 @@ def main(): ) response = client.goal_resources.list( - service_group_name="production-sg", - goal_assignment_name="zonal-resiliency-goal", + service_group_name="sg1", + goal_assignment_name="ga1", ) for item in response: print(item) -# x-ms-original-file: 2026-10-01/GoalResources_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/GoalResources_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operation_status_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operation_status_get_maximum_set_gen.py index 0bdbff36cbf8..c7cf2ae187b2 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operation_status_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operation_status_get_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/OperationStatus_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/OperationStatus_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_maximum_set_gen.py index 15ce78446bbe..09981be486f5 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_maximum_set_gen.py @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/Operations_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Operations_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_minimum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_minimum_set_gen.py index c3dac0d7dec7..4ab8e6ece5c3 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_minimum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/operations_list_minimum_set_gen.py @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/Operations_List_MinimumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/Operations_List_MinimumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_create_or_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_create_or_update_maximum_set_gen.py new file mode 100644 index 000000000000..e1b2f21e9e72 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_create_or_update_maximum_set_gen.py @@ -0,0 +1,83 @@ +# pylint: disable=line-too-long,useless-suppression +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_config_profiles_create_or_update_maximum_set_gen.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_config_profiles.begin_create_or_update( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + recovery_config_profile_name="azure-vm-default", + resource={ + "properties": { + "recoveryPointPolicy": { + "backupType": ["Snapshot"], + "endTime": "2026-09-28T04:00:00Z", + "recoveryPointHealthStatus": "HealthyAndUnknown", + "startTime": "2026-09-27T04:00:00Z", + "type": "Latest", + }, + "targetScope": {"location": "eastus2", "subscriptionId": "12345678-1234-1234-1234-123456789012"}, + "workloadConfig": { + "recoveryType": "CreateNewVM", + "resourceGroup": { + "armResourceType": "Microsoft.Resources/resourceGroups", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg", + }, + "storageAccount": { + "armResourceType": "Microsoft.Storage/storageAccounts", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Storage/storageAccounts/cyberrecoverystorage", + }, + "subnet": { + "armResourceType": "Microsoft.Network/virtualNetworks/subnets", + "dependsOn": ["targetVirtualNetwork"], + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Network/virtualNetworks/cyber-recovery-vnet/subnets/default", + }, + "targetNamePrefix": "cr-", + "virtualNetwork": { + "armResourceType": "Microsoft.Network/virtualNetworks", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Network/virtualNetworks/cyber-recovery-vnet", + }, + "workloadType": "AzureVm", + "zones": ["1", "2"], + }, + } + }, + ).result() + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryConfigProfiles_CreateOrUpdate_MaximumSet_Gen.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_delete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_delete_maximum_set_gen.py new file mode 100644 index 000000000000..8f86ebe96b7b --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_delete_maximum_set_gen.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_config_profiles_delete_maximum_set_gen.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + client.recovery_config_profiles.begin_delete( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + recovery_config_profile_name="azure-vm-default", + ).result() + + +# x-ms-original-file: 2026-11-30-preview/RecoveryConfigProfiles_Delete_MaximumSet_Gen.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_get_maximum_set_gen.py new file mode 100644 index 000000000000..3bd06e399b00 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_get_maximum_set_gen.py @@ -0,0 +1,43 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_config_profiles_get_maximum_set_gen.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_config_profiles.get( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + recovery_config_profile_name="azure-vm-default", + ) + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryConfigProfiles_Get_MaximumSet_Gen.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_list_maximum_set_gen.py new file mode 100644 index 000000000000..517981e60b96 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_list_maximum_set_gen.py @@ -0,0 +1,43 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_config_profiles_list_maximum_set_gen.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_config_profiles.list( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + ) + for item in response: + print(item) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryConfigProfiles_List_MaximumSet_Gen.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_update.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_update.py new file mode 100644 index 000000000000..7f6143ed5a05 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_update.py @@ -0,0 +1,72 @@ +# pylint: disable=line-too-long,useless-suppression +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_config_profiles_update.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_config_profiles.begin_update( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + recovery_config_profile_name="azure-vm-default", + properties={ + "properties": { + "workloadConfig": { + "resourceGroup": { + "armResourceType": "Microsoft.Resources/resourceGroups", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg", + }, + "storageAccount": { + "armResourceType": "Microsoft.Storage/storageAccounts", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Storage/storageAccounts/cyberrecoverystorage", + }, + "subnet": { + "armResourceType": "Microsoft.Network/virtualNetworks/subnets", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Network/virtualNetworks/cyber-recovery-vnet/subnets/default", + }, + "targetNamePrefix": "updated-cr-", + "virtualNetwork": { + "armResourceType": "Microsoft.Network/virtualNetworks", + "provisioningMode": "Existing", + "resourceId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Network/virtualNetworks/cyber-recovery-vnet", + }, + "workloadType": "AzureVm", + } + } + }, + ).result() + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryConfigProfiles_Update.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_update_sql_database.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_update_sql_database.py new file mode 100644 index 000000000000..0188ee675e39 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_config_profiles_update_sql_database.py @@ -0,0 +1,63 @@ +# pylint: disable=line-too-long,useless-suppression +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_config_profiles_update_sql_database.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_config_profiles.begin_update( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + recovery_config_profile_name="sql-database-default", + properties={ + "properties": { + "recoveryPointPolicy": { + "backupType": ["Streaming", "Snapshot"], + "lookbackDuration": "P10D", + "recoveryPointHealthStatus": "HealthyOnly", + "type": "Random", + }, + "workloadConfig": { + "instanceName": "MSSQLSERVER", + "isNonRecoverable": False, + "overwriteOption": 2, + "targetDirectoryForFileRestore": "D:\\SQLRestore\\Files", + "targetVaultId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.RecoveryServices/vaults/sql-vault", + "targetVirtualMachineId": "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.Compute/virtualMachines/sql-target", + "workloadType": "SqlDatabaseInAzureVm", + }, + } + }, + ).result() + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryConfigProfiles_Update_SqlDatabase.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_get_maximum_set_gen.py index 8cc7a70be194..1468b5393710 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_get_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryJobResources_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobResources_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_list_maximum_set_gen.py index 3b419e9c7861..d986e326e3de 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_job_resources_list_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/RecoveryJobResources_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobResources_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_cancel_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_cancel_maximum_set_gen.py index a21ac9d5a52d..13cca2d9d3ba 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_cancel_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_cancel_maximum_set_gen.py @@ -40,6 +40,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryJobs_Cancel_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobs_Cancel_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_get_maximum_set_gen.py index 46c381a94744..f7f94666934c 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_get_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryJobs_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobs_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_list_maximum_set_gen.py index ee361869be51..c206a30f7909 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_list_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/RecoveryJobs_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobs_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_resume_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_resume_maximum_set_gen.py index 8326f5884c75..a46ba7940992 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_resume_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_resume_maximum_set_gen.py @@ -40,6 +40,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryJobs_Resume_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobs_Resume_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_retry_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_retry_maximum_set_gen.py index b3fc8e7c3e1d..37016a8aa3f6 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_retry_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_jobs_retry_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryJobs_Retry_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryJobs_Retry_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_check_readiness_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_check_readiness_maximum_set_gen.py index 836d1c7c7dcb..8e96e861b327 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_check_readiness_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_check_readiness_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_CheckReadiness_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_CheckReadiness_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_commit_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_commit_maximum_set_gen.py index 840e4de077eb..7675a354a74b 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_commit_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_commit_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_FailoverCommit_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_FailoverCommit_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_maximum_set_gen.py index cbde51e168bc..b9f0ea7e3399 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_failover_maximum_set_gen.py @@ -49,6 +49,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_Failover_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_Failover_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_finalize_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_finalize_maximum_set_gen.py index 9cda41138535..c5a3cfd7b67f 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_finalize_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_finalize_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_Finalize_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_Finalize_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_reprotect_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_reprotect_maximum_set_gen.py index f7ff1a2743a2..1a68d774e5b3 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_reprotect_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_reprotect_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_Reprotect_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_Reprotect_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_cleanup_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_cleanup_maximum_set_gen.py index d63c40f7385a..97ab2c0b27c5 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_cleanup_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_cleanup_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_TestFailoverCleanup_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_TestFailoverCleanup_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_maximum_set_gen.py index 83c37bdbdb74..98449b118340 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_test_failover_maximum_set_gen.py @@ -49,6 +49,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_TestFailover_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_TestFailover_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_update_resources_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_update_resources_maximum_set_gen.py index cf261c9b9873..cf6e71fc960a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_update_resources_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_update_resources_maximum_set_gen.py @@ -61,6 +61,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_UpdateResources_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_UpdateResources_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_commit_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_commit_maximum_set_gen.py index d78e4ffecf61..65d2fececd14 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_commit_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_commit_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_ValidateForFailoverCommit_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_ValidateForFailoverCommit_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_maximum_set_gen.py index 91a87588e768..77ae6546938a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_failover_maximum_set_gen.py @@ -42,6 +42,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_ValidateForFailover_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_ValidateForFailover_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_operation_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_operation_maximum_set_gen.py index cf3f3312d698..3e8ce47cd12a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_operation_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_operation_maximum_set_gen.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_ValidateForOperation_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_ValidateForOperation_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_reprotect_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_reprotect_maximum_set_gen.py index 7bcdbc5c2f1b..10b1c2934ad0 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_reprotect_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_reprotect_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_ValidateForReprotect_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_ValidateForReprotect_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_cleanup_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_cleanup_maximum_set_gen.py index a4436ff19f06..06f8c1bc1f52 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_cleanup_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_cleanup_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_ValidateForTestFailoverCleanup_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_ValidateForTestFailoverCleanup_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_maximum_set_gen.py index 20c9d0a19387..c2a54e0932c5 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plan_actions_validate_for_test_failover_maximum_set_gen.py @@ -42,6 +42,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlanActions_ValidateForTestFailover_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlanActions_ValidateForTestFailover_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_cyber_recovery.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_cyber_recovery.py new file mode 100644 index 000000000000..74a9b22fbbd1 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_cyber_recovery.py @@ -0,0 +1,89 @@ +# pylint: disable=line-too-long,useless-suppression +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_plans_create_or_update_cyber_recovery.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_plans.begin_create_or_update( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + resource={ + "identity": { + "type": "UserAssigned", + "userAssignedIdentities": { + "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/cyber-recovery-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cyber-recovery-identity": {} + }, + }, + "properties": { + "planDescription": "Cyber recovery plan", + "planType": "CyberRecovery", + "recoveryGroupsSetting": { + "additionalGroups": [ + { + "properties": { + "description": "Tier 1 applications", + "groupUniqueId": "5d3c2b1a-8e7f-4a6b-9c0d-1e2f3a4b5c6d", + "orderId": 1, + "resiliencyGroupProperties": { + "recoveryConfigProfileAssociations": [ + { + "recoveryConfigProfileId": "/providers/Microsoft.Management/serviceGroups/contoso-service-group/providers/Microsoft.AzureResilienceManagement/recoveryPlans/cyber-plan/recoveryConfigProfiles/azure-vm-default", + "workloadType": "AzureVm", + } + ], + "resiliencyType": "CyberResiliency", + }, + } + } + ], + "defaultGroup": { + "properties": { + "description": "Foundation services", + "groupUniqueId": "b7e2a1c4-9f3b-4e2d-8c6a-2f7e4d1b5a9f", + "orderId": 0, + } + }, + }, + "resiliencyPlanProperties": { + "resiliencyType": "CyberResiliency", + "targetEnvironment": { + "targetLocations": ["eastus2"], + "targetSubscriptionIds": ["12345678-1234-1234-1234-123456789012"], + }, + }, + }, + }, + ).result() + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_CreateOrUpdate_CyberRecovery.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_maximum_set_gen.py index aaf48ab45506..7430af98bd25 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_create_or_update_maximum_set_gen.py @@ -540,6 +540,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlans_CreateOrUpdate_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_CreateOrUpdate_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_delete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_delete_maximum_set_gen.py index acb83dd1f271..4f9c8f15d499 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_delete_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_delete_maximum_set_gen.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/RecoveryPlans_Delete_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_Delete_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_cyber_recovery.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_cyber_recovery.py new file mode 100644 index 000000000000..4a4fae2a92e6 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_cyber_recovery.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_plans_get_cyber_recovery.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_plans.get( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + ) + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_Get_CyberRecovery.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_maximum_set_gen.py index d4022807e877..a09fc1316e0d 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_get_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlans_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_list_maximum_set_gen.py index 3486aa49960e..dbd1b97ec98f 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_list_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/RecoveryPlans_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_cyber_recovery.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_cyber_recovery.py new file mode 100644 index 000000000000..09750609b5d8 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_cyber_recovery.py @@ -0,0 +1,54 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-resiliencemanagement +# USAGE + python recovery_plans_update_cyber_recovery.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = ResilienceManagementClient( + credential=DefaultAzureCredential(), + subscription_id="SUBSCRIPTION_ID", + ) + + response = client.recovery_plans.begin_update( + service_group_name="contoso-service-group", + recovery_plan_name="cyber-plan", + properties={ + "properties": { + "planDescription": "Updated cyber plan", + "resiliencyPlanProperties": { + "resiliencyType": "CyberResiliency", + "targetEnvironment": { + "targetLocations": ["eastus2"], + "targetSubscriptionIds": ["12345678-1234-1234-1234-123456789012"], + }, + }, + } + }, + ).result() + print(response) + + +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_Update_CyberRecovery.json +if __name__ == "__main__": + main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_maximum_set_gen.py index 77a19bca93ce..ec1f53c78564 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_plans_update_maximum_set_gen.py @@ -1579,6 +1579,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryPlans_Update_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryPlans_Update_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_cross_zone_vm_recovery.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_cross_zone_vm_recovery.py index e2309022eae9..124db027654a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_cross_zone_vm_recovery.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_cross_zone_vm_recovery.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryResources_Get_CrossZoneVMRecovery.json +# x-ms-original-file: 2026-11-30-preview/RecoveryResources_Get_CrossZoneVMRecovery.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_maximum_set_gen.py index a09f6c98113d..5abd2b4a31f0 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_get_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/RecoveryResources_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryResources_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_list_maximum_set_gen.py index 0b0e95822ffe..64f96c5dc890 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/recovery_resources_list_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/RecoveryResources_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/RecoveryResources_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_get_maximum_set_gen.py index f61cd77b677a..967a0905490d 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_get_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/UnifiedResilienceItems_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UnifiedResilienceItems_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_maximum_set_gen.py index f43ad4240b1b..e83f6fe3fa83 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/UnifiedResilienceItems_List_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UnifiedResilienceItems_List_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_minimum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_minimum_set_gen.py index 3f775369d3ad..23d094ace07a 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_minimum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/unified_resilience_items_list_minimum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/UnifiedResilienceItems_List_MinimumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UnifiedResilienceItems_List_MinimumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_create_or_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_create_or_update_maximum_set_gen.py index 9e0c213960ae..608df4addd2f 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_create_or_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_create_or_update_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/UsagePlans_CreateOrUpdate_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UsagePlans_CreateOrUpdate_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_delete_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_delete_maximum_set_gen.py index e0fdaee0700c..e2fadbd65bc1 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_delete_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_delete_maximum_set_gen.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-10-01/UsagePlans_Delete_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UsagePlans_Delete_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_get_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_get_maximum_set_gen.py index 33384bc31ce6..1032c42af0fb 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_get_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_get_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/UsagePlans_Get_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UsagePlans_Get_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_resource_group_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_resource_group_maximum_set_gen.py index e414a145cfc6..c88b0be20196 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_resource_group_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_resource_group_maximum_set_gen.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/UsagePlans_ListByResourceGroup_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UsagePlans_ListByResourceGroup_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_subscription_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_subscription_maximum_set_gen.py index 4eef38ee0c8a..0fc94a6415c0 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_subscription_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_list_by_subscription_maximum_set_gen.py @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: 2026-10-01/UsagePlans_ListBySubscription_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UsagePlans_ListBySubscription_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_update_maximum_set_gen.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_update_maximum_set_gen.py index 4d32aa87f1b6..072c3be1c322 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_update_maximum_set_gen.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_samples/usage_plans_update_maximum_set_gen.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-10-01/UsagePlans_Update_MaximumSet_Gen.json +# x-ms-original-file: 2026-11-30-preview/UsagePlans_Update_MaximumSet_Gen.json if __name__ == "__main__": main() diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations.py index 2fd1b61ec53a..84e0aaca5e42 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations.py @@ -48,6 +48,8 @@ def test_goal_assignments_begin_create_or_update(self, resource_group): "target": "str", }, "provisioningState": "str", + "regionalObjectives": {"targetRecoveryPointObjective": "str", "targetRecoveryTimeObjective": "str"}, + "requireRegionalResiliency": bool, "serviceLevelResources": [{"serviceLevelIndicatorResourceId": "str"}], }, "systemData": { @@ -84,6 +86,8 @@ def test_goal_assignments_begin_update(self, resource_group): "target": "str", }, "provisioningState": "str", + "regionalObjectives": {"targetRecoveryPointObjective": "str", "targetRecoveryTimeObjective": "str"}, + "requireRegionalResiliency": bool, "serviceLevelResources": [{"serviceLevelIndicatorResourceId": "str"}], }, "systemData": { @@ -115,6 +119,18 @@ def test_goal_assignments_begin_update_goal_resources(self, resource_group): "properties": { "resourceArmId": "str", "provisioningState": "str", + "regionalResiliency": { + "attestationStatus": "str", + "exclusionReason": "str", + "goalParticipation": "str", + "userConfirmation": [ + { + "confirmationStatus": "str", + "solutionDisplayName": "str", + "reasonForRequestingConfirmation": "str", + } + ], + }, "zonalResiliency": { "attestationStatus": "str", "exclusionReason": "str", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations_async.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations_async.py index 5842f337599b..479139ddc629 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations_async.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_goal_assignments_operations_async.py @@ -50,6 +50,11 @@ async def test_goal_assignments_begin_create_or_update(self, resource_group): "target": "str", }, "provisioningState": "str", + "regionalObjectives": { + "targetRecoveryPointObjective": "str", + "targetRecoveryTimeObjective": "str", + }, + "requireRegionalResiliency": bool, "serviceLevelResources": [{"serviceLevelIndicatorResourceId": "str"}], }, "systemData": { @@ -88,6 +93,11 @@ async def test_goal_assignments_begin_update(self, resource_group): "target": "str", }, "provisioningState": "str", + "regionalObjectives": { + "targetRecoveryPointObjective": "str", + "targetRecoveryTimeObjective": "str", + }, + "requireRegionalResiliency": bool, "serviceLevelResources": [{"serviceLevelIndicatorResourceId": "str"}], }, "systemData": { @@ -121,6 +131,18 @@ async def test_goal_assignments_begin_update_goal_resources(self, resource_group "properties": { "resourceArmId": "str", "provisioningState": "str", + "regionalResiliency": { + "attestationStatus": "str", + "exclusionReason": "str", + "goalParticipation": "str", + "userConfirmation": [ + { + "confirmationStatus": "str", + "solutionDisplayName": "str", + "reasonForRequestingConfirmation": "str", + } + ], + }, "zonalResiliency": { "attestationStatus": "str", "exclusionReason": "str", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_config_profiles_operations.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_config_profiles_operations.py new file mode 100644 index 000000000000..122e42317aa0 --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_config_profiles_operations.py @@ -0,0 +1,138 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.resiliencemanagement import ResilienceManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestResilienceManagementRecoveryConfigProfilesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ResilienceManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_recovery_config_profiles_get(self, resource_group): + response = self.client.recovery_config_profiles.get( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_recovery_config_profiles_begin_create_or_update(self, resource_group): + response = self.client.recovery_config_profiles.begin_create_or_update( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + resource={ + "id": "str", + "name": "str", + "properties": { + "targetScope": {"location": "str", "subscriptionId": "str"}, + "workloadConfig": "workload_config", + "workloadType": "str", + "attentionReasons": ["str"], + "effectiveConfiguration": {"workloadConfig": "workload_config"}, + "needsAttention": bool, + "provisioningState": "str", + "recoveryPointPolicy": { + "backupType": ["str"], + "type": "str", + "endTime": "2020-02-20 00:00:00", + "lookbackDuration": "1 day, 0:00:00", + "recoveryPointHealthStatus": "str", + "startTime": "2020-02-20 00:00:00", + }, + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_recovery_config_profiles_begin_update(self, resource_group): + response = self.client.recovery_config_profiles.begin_update( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + properties={ + "id": "str", + "name": "str", + "properties": { + "targetScope": {"location": "str", "subscriptionId": "str"}, + "workloadConfig": "workload_config", + "workloadType": "str", + "attentionReasons": ["str"], + "effectiveConfiguration": {"workloadConfig": "workload_config"}, + "needsAttention": bool, + "provisioningState": "str", + "recoveryPointPolicy": { + "backupType": ["str"], + "type": "str", + "endTime": "2020-02-20 00:00:00", + "lookbackDuration": "1 day, 0:00:00", + "recoveryPointHealthStatus": "str", + "startTime": "2020-02-20 00:00:00", + }, + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_recovery_config_profiles_list(self, resource_group): + response = self.client.recovery_config_profiles.list( + service_group_name="str", + recovery_plan_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_recovery_config_profiles_begin_delete(self, resource_group): + response = self.client.recovery_config_profiles.begin_delete( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_config_profiles_operations_async.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_config_profiles_operations_async.py new file mode 100644 index 000000000000..16410079eedb --- /dev/null +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_config_profiles_operations_async.py @@ -0,0 +1,145 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.resiliencemanagement.aio import ResilienceManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestResilienceManagementRecoveryConfigProfilesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ResilienceManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_recovery_config_profiles_get(self, resource_group): + response = await self.client.recovery_config_profiles.get( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_recovery_config_profiles_begin_create_or_update(self, resource_group): + response = await ( + await self.client.recovery_config_profiles.begin_create_or_update( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + resource={ + "id": "str", + "name": "str", + "properties": { + "targetScope": {"location": "str", "subscriptionId": "str"}, + "workloadConfig": "workload_config", + "workloadType": "str", + "attentionReasons": ["str"], + "effectiveConfiguration": {"workloadConfig": "workload_config"}, + "needsAttention": bool, + "provisioningState": "str", + "recoveryPointPolicy": { + "backupType": ["str"], + "type": "str", + "endTime": "2020-02-20 00:00:00", + "lookbackDuration": "1 day, 0:00:00", + "recoveryPointHealthStatus": "str", + "startTime": "2020-02-20 00:00:00", + }, + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_recovery_config_profiles_begin_update(self, resource_group): + response = await ( + await self.client.recovery_config_profiles.begin_update( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + properties={ + "id": "str", + "name": "str", + "properties": { + "targetScope": {"location": "str", "subscriptionId": "str"}, + "workloadConfig": "workload_config", + "workloadType": "str", + "attentionReasons": ["str"], + "effectiveConfiguration": {"workloadConfig": "workload_config"}, + "needsAttention": bool, + "provisioningState": "str", + "recoveryPointPolicy": { + "backupType": ["str"], + "type": "str", + "endTime": "2020-02-20 00:00:00", + "lookbackDuration": "1 day, 0:00:00", + "recoveryPointHealthStatus": "str", + "startTime": "2020-02-20 00:00:00", + }, + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_recovery_config_profiles_list(self, resource_group): + response = self.client.recovery_config_profiles.list( + service_group_name="str", + recovery_plan_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_recovery_config_profiles_begin_delete(self, resource_group): + response = await ( + await self.client.recovery_config_profiles.begin_delete( + service_group_name="str", + recovery_plan_name="str", + recovery_config_profile_name="str", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations.py index 1a3f82fffef3..52b0b322fb15 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations.py @@ -53,11 +53,13 @@ def test_recovery_plan_actions_begin_update_resources(self, resource_group): "message": "str", "target": "str", }, + "inclusionDisabledReasons": ["str"], "inclusionState": "str", "needsAttention": bool, "protectionStatus": "str", "provisioningState": "str", "recoveryGroupId": "str", + "resiliencyResourceProperties": "recovery_resource_resiliency_properties", "resourceId": "str", "resourceLocation": "str", "resourcePhysicalZones": ["str"], @@ -73,6 +75,7 @@ def test_recovery_plan_actions_begin_update_resources(self, resource_group): "protectionStatus": "str", "recoveryLocations": ["str"], "replicaResources": ["str"], + "replicationMode": "str", "replicationRole": "str", "resourceId": "str", "testFailoverState": "str", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations_async.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations_async.py index 5ac86103070b..9dd82b9bb83f 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations_async.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plan_actions_operations_async.py @@ -57,11 +57,13 @@ async def test_recovery_plan_actions_begin_update_resources(self, resource_group "message": "str", "target": "str", }, + "inclusionDisabledReasons": ["str"], "inclusionState": "str", "needsAttention": bool, "protectionStatus": "str", "provisioningState": "str", "recoveryGroupId": "str", + "resiliencyResourceProperties": "recovery_resource_resiliency_properties", "resourceId": "str", "resourceLocation": "str", "resourcePhysicalZones": ["str"], @@ -77,6 +79,7 @@ async def test_recovery_plan_actions_begin_update_resources(self, resource_group "protectionStatus": "str", "recoveryLocations": ["str"], "replicaResources": ["str"], + "replicationMode": "str", "replicationRole": "str", "resourceId": "str", "testFailoverState": "str", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations.py index 809636a88932..17a87e658e17 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations.py @@ -57,6 +57,7 @@ def test_recovery_plans_begin_create_or_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -78,6 +79,7 @@ def test_recovery_plans_begin_create_or_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -123,6 +125,7 @@ def test_recovery_plans_begin_create_or_update(self, resource_group): }, "planState": "str", "provisioningState": "str", + "resiliencyPlanProperties": "recovery_plan_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -167,6 +170,7 @@ def test_recovery_plans_begin_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -188,6 +192,7 @@ def test_recovery_plans_begin_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -233,6 +238,7 @@ def test_recovery_plans_begin_update(self, resource_group): }, "planState": "str", "provisioningState": "str", + "resiliencyPlanProperties": "recovery_plan_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations_async.py b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations_async.py index 651ffc65bbee..97e01dd4c9a8 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations_async.py +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/generated_tests/test_resilience_management_recovery_plans_operations_async.py @@ -59,6 +59,7 @@ async def test_recovery_plans_begin_create_or_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -80,6 +81,7 @@ async def test_recovery_plans_begin_create_or_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -125,6 +127,7 @@ async def test_recovery_plans_begin_create_or_update(self, resource_group): }, "planState": "str", "provisioningState": "str", + "resiliencyPlanProperties": "recovery_plan_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -171,6 +174,7 @@ async def test_recovery_plans_begin_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -192,6 +196,7 @@ async def test_recovery_plans_begin_update(self, resource_group): "orderId": 0, "postActions": ["recovery_group_base_action"], "preActions": ["recovery_group_base_action"], + "resiliencyGroupProperties": "recovery_group_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", @@ -237,6 +242,7 @@ async def test_recovery_plans_begin_update(self, resource_group): }, "planState": "str", "provisioningState": "str", + "resiliencyPlanProperties": "recovery_plan_resiliency_properties", }, "systemData": { "createdAt": "2020-02-20 00:00:00", diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/pyproject.toml b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/pyproject.toml index 47e4ef4e3da4..7ac5f4544978 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/pyproject.toml +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/pyproject.toml @@ -13,7 +13,7 @@ authors = [ description = "Microsoft Azure Resiliencemanagement Management Client Library for Python" license = "MIT" classifiers = [ - "Development Status :: 5 - Production/Stable", + "Development Status :: 4 - Beta", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3", @@ -77,7 +77,7 @@ package_name = "azure-mgmt-resiliencemanagement" package_nspkg = "azure-mgmt-nspkg" package_pprint_name = "Resiliencemanagement Management" package_doc_id = "" -is_stable = true +is_stable = false is_arm = true need_msrestazure = false need_azuremgmtcore = true diff --git a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/tsp-location.yaml b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/tsp-location.yaml index 738ff42bc2dd..2a5d006ec552 100644 --- a/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/tsp-location.yaml +++ b/sdk/resiliencemanagement/azure-mgmt-resiliencemanagement/tsp-location.yaml @@ -1,4 +1,4 @@ directory: specification/azureresiliencemanagement/resource-manager/Microsoft.AzureResilienceManagement/AzureResilienceManagement -commit: 639485c855d04eb485dc5a44d222477451d7dcb7 +commit: 3bf236b54fc24e6fa34439ed4110c27fe36f7854 repo: Azure/azure-rest-api-specs additionalDirectories: