Skip to content

[Generated by SRE Agent] Add new az resiliency extension for api-version 2026-10-01 (stable GA) - #10438

Open
krtcodee wants to merge 2 commits into
Azure:mainfrom
krtcodee:feature-resiliency-2026-10-01-v2
Open

krtcodee wants to merge 2 commits into
Azure:mainfrom
krtcodee:feature-resiliency-2026-10-01-v2

Conversation

@krtcodee

@krtcodee krtcodee commented Oct 6, 2026

Copy link
Copy Markdown

What

Add new az resiliency extension for Microsoft.AzureResilienceManagement — initial GA release based on stable api-version 2026-10-01.

Swagger diff (2026-09-30-preview → 2026-10-01)

No breaking changes — clean GA promotion from preview.

CLI surface

87 commands across 6 top-level groups:

Command Group Commands
az resiliency drill create, delete, list, show, update, wait, add-or-update-resource, end, resync-readiness-check, start, validate-for-execution + drill-resource/drill-run/identity subgroups
az resiliency goal-assignment create, delete, list, show, update, wait, recommend-capacity, refresh-goal-resource, update-goal-resource + goal-resource subgroup
az resiliency operation-status show
az resiliency recovery-plan create, delete, list, show, update, wait, check-readiness, failover, failover-commit, finalize, reprotect, test-failover, test-failover-cleanup, update-resource, validate-for-* + identity/recovery-job/recovery-resource subgroups
az resiliency unified-resilience-item list, show
az resiliency usage-plan create, delete, list, show, update, wait + enrollment subgroup

Validation

  • azdev linter --include-whl-extensions resiliency clean
  • azdev style resiliency clean
  • azdev test resiliency passing
  • az resiliency --help loads
  • Recorded tests added for every new command group

Repo-level changes

  • src/service_name.json: added {"Command": "az resiliency", "AzureServiceName": "Azure Resiliency", ...} entry
  • .github/CODEOWNERS: not modified (team decision)

Generated with

aaz-dev-tools from aaz models in Azure/aaz#1115. Files under azext_resiliency/aaz/ are generated — do not hand-edit.


Created by Azure SRE Agent: Open thread

Initial GA release of the resiliency extension for Microsoft.AzureResilienceManagement.
87 commands across 6 groups: drill, goal-assignment, operation-status,
recovery-plan, unified-resilience-item, usage-plan.
Command group: az resiliency. Generated with aaz-dev-tools.

Co-authored-by: Azure SRE Agent <noreply@microsoft.com>
Copilot AI balanced review requested due to automatic review settings October 6, 2026 20:38
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@microsoft-github-policy-service

Copy link
Copy Markdown
Contributor

Thank you for your contribution krtcodee! We will review the pull request and get back to you soon.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The claimed recorded coverage is absent, and several published command examples use unsupported arguments or values.

Review effort: Balanced
Findings: 1 Medium severity · 4 Low severity

Open (5)
What changed in this PR

Adds the GA az resiliency extension for Azure Resilience Management using API version 2026-10-01.

Changes:

  • Adds 87 generated commands across six top-level command groups.
  • Adds extension packaging, metadata, documentation, and service registration.
  • Adds a placeholder test suite, but no recorded scenarios.
File Description
src/​service_name.json Registers az resiliency.
src/​resiliency/​setup.py Defines extension packaging.
src/​resiliency/​setup.cfg Adds setup configuration placeholder.
src/​resiliency/​README.md Documents installation and commands.
src/​resiliency/​HISTORY.rst Records the initial GA release.
src/​resiliency/​azext_resiliency/​__init__.py Defines the command loader.
src/​resiliency/​azext_resiliency/​_help.py Initializes CLI help.
src/​resiliency/​azext_resiliency/​_params.py Initializes custom arguments.
src/​resiliency/​azext_resiliency/​commands.py Initializes custom commands.
src/​resiliency/​azext_resiliency/​custom.py Initializes custom operations.
src/​resiliency/​azext_resiliency/​azext_metadata.json Marks the extension GA and sets minimum CLI version.
src/​resiliency/​azext_resiliency/​aaz/​__init__.py Initializes generated AAZ modules.
src/​resiliency/​azext_resiliency/​aaz/​latest/​__init__.py Initializes latest AAZ version.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​__init__.py Exports the root command group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​__cmd_group.py Registers resiliency.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​__init__.py Exports drill commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​__cmd_group.py Registers the drill group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_add_or_update_resource.py Implements drill resource updates.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_create.py Implements drill creation.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_delete.py Implements drill deletion.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_end.py Implements ending a drill.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_list.py Implements drill listing.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_resync_readiness_check.py Implements readiness resynchronization.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_show.py Implements drill retrieval.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_start.py Implements starting a drill.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_update.py Implements drill updates.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_validate_for_execution.py Implements drill validation.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​_wait.py Implements drill waiting.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_resource/​__init__.py Exports drill-resource commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_resource/​__cmd_group.py Registers the drill-resource group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_resource/​_list.py Lists drill resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_resource/​_show.py Shows a drill resource.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​__init__.py Exports drill-run commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​__cmd_group.py Registers the drill-run group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_add_note.py Adds drill-run notes.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_fail_over.py Implements drill-run failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_generate_report.py Generates drill reports.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_list.py Lists drill runs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_list_report_download_url.py Retrieves report download URLs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_mark_as_complete.py Marks drill stages complete.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_reprotect.py Implements drill-run reprotection.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_resume.py Resumes drill runs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​_show.py Shows a drill run.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​drill_run_resource/​__init__.py Exports drill-run-resource commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​drill_run_resource/​__cmd_group.py Registers the drill-run-resource group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​drill_run_resource/​_list.py Lists drill-run resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​drill_run/​drill_run_resource/​_show.py Shows a drill-run resource.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​identity/​__init__.py Exports drill identity commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​identity/​__cmd_group.py Registers the drill identity group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​identity/​_assign.py Assigns drill identities.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​identity/​_remove.py Removes drill identities.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​identity/​_show.py Shows drill identities.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​drill/​identity/​_wait.py Waits for drill identity operations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​__init__.py Exports goal-assignment commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​__cmd_group.py Registers the goal-assignment group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_create.py Creates goal assignments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_delete.py Deletes goal assignments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_list.py Lists goal assignments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_recommend_capacity.py Generates capacity recommendations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_refresh_goal_resource.py Refreshes goal resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_show.py Shows a goal assignment.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_update.py Updates goal assignments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_update_goal_resource.py Updates goal resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​_wait.py Waits for goal-assignment operations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​goal_resource/​__init__.py Exports goal-resource commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​goal_resource/​__cmd_group.py Registers the goal-resource group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​goal_resource/​_list.py Lists goal resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​goal_assignment/​goal_resource/​_show.py Shows a goal resource.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​operation_status/​__init__.py Exports operation-status commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​operation_status/​__cmd_group.py Registers the operation-status group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​operation_status/​_show.py Shows asynchronous operation status.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​__init__.py Exports recovery-plan commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​__cmd_group.py Registers the recovery-plan group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_check_readiness.py Checks recovery-plan readiness.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_create.py Creates recovery plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_delete.py Deletes recovery plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_failover.py Starts recovery-plan failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_failover_commit.py Commits failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_finalize.py Finalizes recovery plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_list.py Lists recovery plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_reprotect.py Reprotects recovery plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_show.py Shows a recovery plan.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_test_failover.py Starts test failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_test_failover_cleanup.py Cleans up test failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_update.py Updates recovery plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_update_resource.py Updates recovery resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_validate_for_failover.py Validates failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_validate_for_failover_commit.py Validates failover commit.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_validate_for_operation.py Validates recovery operations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_validate_for_reprotect.py Validates reprotection.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_validate_for_test_failover.py Validates test failover.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_validate_for_test_failover_cleanup.py Validates test-failover cleanup.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​_wait.py Waits for recovery-plan operations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​identity/​__init__.py Exports recovery-plan identity commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​identity/​__cmd_group.py Registers the recovery-plan identity group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​identity/​_assign.py Assigns recovery-plan identities.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​identity/​_remove.py Removes recovery-plan identities.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​identity/​_show.py Shows recovery-plan identities.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​identity/​_wait.py Waits for identity operations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​__init__.py Exports recovery-job commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​__cmd_group.py Registers the recovery-job group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​_cancel.py Cancels recovery jobs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​_list.py Lists recovery jobs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​_resume.py Resumes recovery jobs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​_retry.py Retries recovery jobs.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​_show.py Shows a recovery job.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​recovery_job_resource/​__init__.py Exports recovery-job-resource commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​recovery_job_resource/​__cmd_group.py Registers the recovery-job-resource group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​recovery_job_resource/​_list.py Lists recovery-job resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_job/​recovery_job_resource/​_show.py Shows a recovery-job resource.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_resource/​__init__.py Exports recovery-resource commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_resource/​__cmd_group.py Registers the recovery-resource group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_resource/​_list.py Lists recovery resources.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​recovery_plan/​recovery_resource/​_show.py Shows a recovery resource.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​unified_resilience_item/​__init__.py Exports unified-resilience-item commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​unified_resilience_item/​__cmd_group.py Registers the unified-resilience-item group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​unified_resilience_item/​_list.py Lists unified resilience items.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​unified_resilience_item/​_show.py Shows a unified resilience item.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​__init__.py Exports usage-plan commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​__cmd_group.py Registers the usage-plan group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​_create.py Creates usage plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​_delete.py Deletes usage plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​_list.py Lists usage plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​_show.py Shows a usage plan.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​_update.py Updates usage plans.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​_wait.py Waits for usage-plan operations.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​__init__.py Exports enrollment commands.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​__cmd_group.py Registers the enrollment group.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​_create.py Creates enrollments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​_delete.py Deletes enrollments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​_list.py Lists enrollments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​_show.py Shows an enrollment.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​_update.py Updates enrollments.
src/​resiliency/​azext_resiliency/​aaz/​latest/​resiliency/​usage_plan/​enrollment/​_wait.py Waits for enrollment operations.
src/​resiliency/​azext_resiliency/​tests/​__init__.py Initializes extension tests.
src/​resiliency/​azext_resiliency/​tests/​latest/​__init__.py Initializes latest tests.
src/​resiliency/​azext_resiliency/​tests/​latest/​test_resiliency.py Adds an empty scenario-test placeholder.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +11 to +13
class ResiliencyScenario(ScenarioTest):
# TODO: add tests here
pass
Comment thread src/resiliency/README.md Outdated
az resiliency --help

# Manage drills
az resiliency drill create --service-group-name <name> --drill-name <name> --location <location>
"""Create a Drill

:example: Drills_Create_MaximumSet
az resiliency drill create --service-group-name sampleServiceGroupName --drill-name drill1 --rbac-setup-mode AutomatedCustomRole --recovery-plan-properties "{identity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}" --monitoring-properties "{identity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}" --drill-asset-properties "{subscription:4e88bed3-114f-443d-9975-28f64122ec5e,region:eastus,resource-group:customDrillResourceGroup}" --chaos-resource-properties "{identity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1},chaos-resource-identity-for-faults:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}" --health-model-monitoring-properties "{identity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1},health-model-id:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourceGroups/contoso-health/providers/Microsoft.CloudHealth/healthmodels/contoso-payments-hm}" --sli-monitoring-properties "{identity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1},slis:[{sli-id:/providers/Microsoft.Management/serviceGroups/sampleServiceGroupName/providers/Microsoft.Monitor/slis/checkout-availability,type:Availability},{sli-id:/providers/Microsoft.Management/serviceGroups/sampleServiceGroupName/providers/Microsoft.Monitor/slis/checkout-latency,type:Latency}]}" --goal-assignment-properties "{identity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}" --type None --user-assigned-identities "{}"
"""This enables the user to mark this stage as complete, disabling further retries on it.

:example: DrillRuns_MarkAsComplete_MaximumSet
az resiliency drill drill-run mark-as-complete --service-group-name sampleServiceGroupName --operation-id qmn --drill-name drill1 --drill-run-name ca92602e-53bf-43d2-ae62-d3fc940474b3 --drill-run-stage Fault
"""Create a RecoveryPlan

:example: RecoveryPlans_CreateOrUpdate_MaximumSet
az resiliency recovery-plan create --service-group-name sampleServiceGroupName --recovery-plan-name samplePlanName --plan-type Regional --plan-description Sample Plan --recovery-groups-setting "{default-group:{properties:{groupUniqueId:b7e2a1c4-9f3b-4e2d-8c6a-2f7e4d1b5a9f,orderId:0,description:'sample recoverygroup',preActions:[{name:sample-group-action,description:'sample group action instructions',type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}],postActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}]}},additional-groups:[{properties:{groupUniqueId:b7e2a1c4-9f3b-4e2d-8c6a-2f7e4d1b5a9f,orderId:1,description:'sample recoverygroup',preActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}],postActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}]}},{properties:{groupUniqueId:b7e2a1c4-9f3b-4e2d-8c6a-2f7e4d1b5a9f,orderId:1,description:'sample recoverygroup',preActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}],postActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}]}},{properties:{groupUniqueId:b7e2a1c4-9f3b-4e2d-8c6a-2f7e4d1b5a9f,orderId:1,description:'sample recoverygroup',preActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}],postActions:[{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}},{name:sample-group-action,type:CustomRunbook,timeoutInMinutes:29,actionResourceId:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.Automation/automationAccounts/sampleAccount/runbooks/sameplRunbooks1,parameters:{key7795:uvapupcbbdgow},associatedIdentity:{type:UserAssigned,userAssignedIdentity:/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1}}]}}]}" --type UserAssigned --user-assigned-identities "{/subscriptions/4e88bed3-114f-443d-9975-28f64122ec5e/resourcegroups/resourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/uami1:{}}"
@yonzhan

Copy link
Copy Markdown
Collaborator

resiliency

@JaysonTaiMicrosoft JaysonTaiMicrosoft added the Request X Engineering Agent Ask the agent to triage this issue or review this PR label Oct 25, 2026
@x-engineering-agent

x-engineering-agent Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

X Engineering Agent Report

Review — Comments

krtcodee

Corrective review

Four confirmed findings below. Upstream failure attribution: 0 PR-related, 0 not PR-related, 1 uncertain.

Upstream CI

4 of 6 checks passed; all 6 completed, with 1 failure and none pending.

azdev-linter

  • Result: failure
  • Relevance: Uncertain
  • Evidence: The check completed without a concise diagnostic.
  • Suggested fix: Open the linked log and confirm whether the first actionable error touches the PR diff before changing code.
  • Verify: Re-run azdev-linter and confirm it passes on the new head.
Confirmed findings
  • Invalid shared service registry — scope-consistency: src/service_name.json:2,1129,2261 contains unresolved <<<<<<<, =======, and >>>>>>> markers and two registry versions. This is not valid JSON, so consumers cannot load the registry. Resolve the conflict into one array, preserving existing entries and the intended resiliency entry. Verify with python3 -m json.tool src/service_name.json and check the resulting registry diff. This defect is independently confirmed, not an attribution of the linter failure.
  • Unsupported identity switches — command-help: src/resiliency/azext_resiliency/aaz/latest/resiliency/drill/_create.py:21 and src/resiliency/azext_resiliency/aaz/latest/resiliency/recovery_plan/_create.py:21 use --type and --user-assigned-identities. Both argument schemas instead expose --system-assigned/--user-assigned at lines 68–78; the examples are rejected before a request. Correct the durable AAZ examples and regenerate, preserving each example's intended identity configuration. Verify both complete examples parse and assert the serialized identity type and user-assigned identity IDs.
  • Invalid stage value — command-help: src/resiliency/azext_resiliency/aaz/latest/resiliency/drill/drill_run/_mark_as_complete.py:21 passes Fault, but lines 81–86 restrict --drill-run-stage to an enum containing FaultInjection, not Fault. Correct the source example and regenerate. Verify the corrected example parses and sends drillRunStage: FaultInjection, while Fault is rejected.

Copilot feedback: four items are actionable (the three example reports above and coverage below). The README report is rejected as already addressed: src/resiliency/README.md:18 no longer passes --location.

Test validation
  • Agent live test: Not run; this is a review-only PR. Check author-provided test evidence and upstream CI separately.
  • Regression coverage: Not applicable to the changed files.
  • Confirmed coverage gap — test-strength: Manual inspection supersedes the automated applicability result above. src/resiliency/azext_resiliency/tests/latest/test_resiliency.py:11–13 contains only a TODO and pass, with no test methods or assertions; the other two changed test files are package initializers. No recording files are added under src/resiliency/azext_resiliency/tests/latest/recordings/. Thus the changed test filenames do not demonstrate coverage of the six new command groups. Add executable scenarios and matching recordings, including assertions for the 2026-10-01 request version, drill/recovery-plan identity payloads, mark-as-complete stage serialization, returned resource IDs/properties, and drill list pagination (including empty results). The concrete paths needing coverage include drill/_create.py:270–284,343–382, drill/_list.py:83–86,125–135, and usage_plan/_create.py:197–216 beneath src/resiliency/azext_resiliency/aaz/latest/resiliency/. After adding the scenarios in the named test file, record with azdev test resiliency --live, commit their recordings, and rerun azdev test resiliency in playback. These are requested author verifications, not Agent test results.
Risk assessment — 100/100 · Critical

The Critical rating is driven by security-sensitive behavior, public CLI behavior, dependency or supply chain and 2 additional signal(s).

  • Change scope: 137 changed files, 27883 changed lines (+27882 / -1), including 129 production files.
  • Affected components: resiliency
  • Risk drivers: security-sensitive behavior (+28); public CLI behavior (+18); dependency or supply chain (+18); failure-handling behavior (+12); generated output (+12)
  • Regression evidence: Changed regression tests are included, reducing risk.
  • Confidence: Medium because changed-line patches were available for 100 of 129 production files.
  • Required review: Owning-squad review is required for resiliency before merge.

Posted by x-engineering-agent (Reviewer)

@x-engineering-agent x-engineering-agent Bot added the X Engineering Agent Reviewed Agent reviewed this PR label Oct 25, 2026
@JaysonTaiMicrosoft

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

@JaysonTaiMicrosoft

Copy link
Copy Markdown
Contributor

krtcodee please address linting issues from CI. Also please add scenario test coverage for the new generated commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

customer-reported Issues that are reported by GitHub users external to the Azure organization. Request X Engineering Agent Ask the agent to triage this issue or review this PR X Engineering Agent Reviewed Agent reviewed this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants