Skip to content

Commit 02b349b

Browse files
Henry DaiCopilot
andcommitted
Update changesafety docs, help text, and test recording
- Add missing help entry for 'changerecord list' command - Update Python classifiers to 3.9-3.12 (drop EOL 3.7/3.8) - Expand HISTORY.rst with feature details and ChangeState->ChangeRecord rename - Update test recording to use eastus2euap ARM endpoint Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 49cbf72 commit 02b349b

5 files changed

Lines changed: 142 additions & 120 deletions

File tree

src/azure-changesafety/HISTORY.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,9 @@ Release History
55

66
1.0.0b1
77
++++++
8-
* Initial release.
8+
* Initial release.
9+
* Manage ChangeRecord, StageMap, and StageProgression resources (API version ``2026-01-01-preview``).
10+
* Custom ``--targets`` parsing with key=value shorthand (e.g., ``resourceId=...,operation=DELETE``).
11+
* ``--stagemap-name`` shortcut to reference a StageMap by name.
12+
* Default scheduling: ``anticipatedStartTime`` defaults to now, ``anticipatedEndTime`` to +8 hours.
13+
* Supports ``--acquire-policy-token`` and ``--change-reference`` for guarded resource operations.

src/azure-changesafety/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ az extension add --name azure-changesafety
1313
### ChangeRecord
1414
```bash
1515
az changesafety changerecord create # Create a ChangeRecord for one or more targets.
16-
az changesafety changerecord update # Update metadata, rollout configuration, or target definitions.
16+
az changesafety changerecord update # Update metadata, rollout settings, or scheduling.
1717
az changesafety changerecord delete # Delete a ChangeRecord resource.
1818
az changesafety changerecord show # Display details for a ChangeRecord resource.
1919
az changesafety changerecord list # List ChangeRecord resources.
@@ -64,7 +64,7 @@ Create a ChangeRecord for a manual touch operation (e.g., delete a Traffic Manag
6464
```bash
6565
az changesafety changerecord create \
6666
-g MyResourceGroup \
67-
-n changerecord-delete-tm \
67+
-n delete-trafficmanager \
6868
--change-type ManualTouch \
6969
--rollout-type Hotfix \
7070
--targets "resourceId=/subscriptions/<subId>/resourceGroups/MyResourceGroup/providers/Microsoft.Network/trafficManagerProfiles/myProfile,operation=DELETE" \
@@ -83,6 +83,8 @@ az changesafety changerecord create \
8383
--links name=Runbook uri=https://contoso.com/runbook
8484
```
8585

86+
> **Scope:** When `-g` is omitted, the ChangeRecord is created at subscription scope. Use `-g` to scope it to a specific resource group.
87+
8688
Update the ChangeRecord and add a comment:
8789
```bash
8890
az changesafety changerecord update \

src/azure-changesafety/azext_changesafety/_help.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,19 @@
5151
- name: --links
5252
short-summary: Add supporting links by repeating --links name=NAME uri=URL [description=TEXT].
5353
examples:
54-
- name: Create with StageMap reference and status link
55-
text: |-
56-
az changesafety changerecord create -g MyResourceGroup -n changerecord002 --change-type ManualTouch --rollout-type Normal --stage-map "{resource-id:/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.ChangeSafety/stageMaps/rolloutStageMap}" --targets "resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm,operation=PATCH" --links "[{name:status,uri:'https://contoso.com/change/rollout-002'}]"
57-
az changesafety changerecord delete -g MyResourceGroup -n changerecord002 --yes
58-
- name: Create a ChangeRecord for a VM rollout
59-
text: |-
60-
az changesafety changerecord create -g MyResourceGroup -n changerecord001 --change-type AppDeployment --rollout-type Normal --targets "resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm,operation=PUT"
6154
- name: Create a ChangeRecord for deleting a Traffic Manager profile
6255
text: |-
6356
az changesafety changerecord create -g MyResourceGroup -n delete-trafficmanager --change-type ManualTouch --rollout-type Hotfix --targets "resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/trafficManagerProfiles/myProfile,operation=DELETE" --description "Delete Traffic Manager profile"
64-
- name: Create with staging rollout configuration
65-
text: |-
66-
az changesafety changerecord create -g MyResourceGroup -n changerecord-ops01 --change-type AppDeployment --rollout-type Hotfix --targets "resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/myApp,operation=POST"
6757
- name: Reference a StageMap by name
6858
text: |-
6959
az changesafety changerecord create -g MyResourceGroup -n changerecord003 --change-type ManualTouch --rollout-type Normal --stagemap-name rolloutStageMap --targets "resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm,operation=DELETE"
60+
- name: Create with StageMap reference and status link
61+
text: |-
62+
az changesafety changerecord create -g MyResourceGroup -n changerecord002 --change-type ManualTouch --rollout-type Normal --stage-map "{resource-id:/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ChangeSafety/stageMaps/rolloutStageMap}" --targets "resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm,operation=PATCH" --links "[{name:status,uri:'https://contoso.com/change/rollout-002'}]"
63+
az changesafety changerecord delete -g MyResourceGroup -n changerecord002 --yes
64+
- name: Create at subscription scope (no resource group)
65+
text: |-
66+
az changesafety changerecord create -n changerecord-sub-scope --change-type AppDeployment --rollout-type Normal --stagemap-name rolloutStageMap --targets "subscriptionId=00000000-0000-0000-0000-000000000000"
7067
"""
7168

7269
helps['changesafety changerecord update'] = """
@@ -94,7 +91,7 @@
9491
az changesafety changerecord update -g MyResourceGroup -n changerecord001 --rollout-type Emergency --comments "Escalated to emergency rollout"
9592
- name: Update scheduling window
9693
text: |-
97-
az changesafety changerecord update -g MyResourceGroup -n changerecord001 --anticipated-start-time "2024-09-01T08:00:00Z" --anticipated-end-time "2024-09-01T12:00:00Z"
94+
az changesafety changerecord update -g MyResourceGroup -n changerecord001 --anticipated-start-time "2026-09-01T08:00:00Z" --anticipated-end-time "2026-09-01T12:00:00Z"
9895
- name: Update description
9996
text: |-
10097
az changesafety changerecord update -g MyResourceGroup -n changerecord001 --description "Updated rollout for production deployment"

src/azure-changesafety/azext_changesafety/custom.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
Update as _ChangeRecordUpdate,
4242
Show as _ChangeRecordShow,
4343
Delete as _ChangeRecordDelete,
44+
List as _ChangeRecordList,
4445
)
4546
# Import for schema building - used by _build_custom_show_schema
4647
from azext_changesafety.aaz.latest.changesafety.changerecord._show import (
@@ -627,17 +628,18 @@ class ChangeRecordDelete(_ChangeRecordDelete):
627628
"az changesafety changerecord create -g MyResourceGroup -n changerecord002 "
628629
"--change-type ManualTouch --rollout-type Normal "
629630
"--stage-map \"{resource-id:/subscriptions/00000000-0000-0000-0000-000000000000/"
630-
"resourceGroups/MyResourceGroup/providers/Microsoft.ChangeSafety/stageMaps/rolloutStageMap}\" "
631+
"providers/Microsoft.ChangeSafety/stageMaps/rolloutStageMap}\" "
631632
"--targets \"resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/"
632633
"resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm,operation=PATCH\" "
633634
"--links \"[{name:status,uri:'https://contoso.com/change/rollout-002'}]\"\n"
634635
),
635636
},
636637
{
637-
"name": "Create a ChangeRecord for a VM rollout",
638+
"name": "Create a ChangeRecord for an app deployment with StageMap",
638639
"text": (
639640
"az changesafety changerecord create -g MyResourceGroup -n changerecord001 "
640641
"--change-type AppDeployment --rollout-type Normal "
642+
"--stagemap-name rolloutStageMap "
641643
"--targets \"resourceId=/subscriptions/00000000-0000-0000-0000-000000000000/"
642644
"resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm,operation=PUT\""
643645
),
@@ -698,8 +700,8 @@ class ChangeRecordDelete(_ChangeRecordDelete):
698700
"name": "Update scheduling window",
699701
"text": (
700702
"az changesafety changerecord update -g MyResourceGroup -n changerecord001 "
701-
"--anticipated-start-time \"2024-09-01T08:00:00Z\" "
702-
"--anticipated-end-time \"2024-09-01T12:00:00Z\""
703+
"--anticipated-start-time \"2026-09-01T08:00:00Z\" "
704+
"--anticipated-end-time \"2026-09-01T12:00:00Z\""
703705
),
704706
},
705707
{
@@ -732,6 +734,22 @@ class ChangeRecordDelete(_ChangeRecordDelete):
732734
],
733735
}
734736

737+
_ChangeRecordList.AZ_HELP = {
738+
**_ChangeRecordList.AZ_HELP,
739+
"short-summary": "List ChangeRecord resources.",
740+
"long-summary": "List all ChangeRecord resources in a subscription or resource group.",
741+
"examples": [
742+
{
743+
"name": "List all ChangeRecords in the current subscription",
744+
"text": "az changesafety changerecord list",
745+
},
746+
{
747+
"name": "List ChangeRecords in a specific resource group",
748+
"text": "az changesafety changerecord list -g MyResourceGroup",
749+
},
750+
],
751+
}
752+
735753

736754
# -----------------------------------------------------------------------------
737755
# StageMap Help Examples

0 commit comments

Comments
 (0)