Skip to content

Henrydai/implement changesafety crud for 2026-01-01-preview after changeRecord renaming#9357

Open
henryzdai wants to merge 29 commits intoAzure:mainfrom
henryzdai:henrydai/implementChangeStateCRUD0901
Open

Henrydai/implement changesafety crud for 2026-01-01-preview after changeRecord renaming#9357
henryzdai wants to merge 29 commits intoAzure:mainfrom
henryzdai:henrydai/implementChangeStateCRUD0901

Conversation

@henryzdai
Copy link
Copy Markdown
Member

@henryzdai henryzdai commented Oct 30, 2025


Support for managing Microsoft.ChangeSafety/ChangeRecrods, Microsoft.ChangeSafety/StageMaps and Microsoft.ChangeSafety/changeRecords/StageProgressions, including creating, updating, showing, and deleting resources.

This checklist is used to make sure that common guidelines for a pull request are followed.

Related command

General Guidelines

  • Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
  • Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)
  • My extension version conforms to the Extension version schema

For new extensions:

About Extension Publish

There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Copilot AI review requested due to automatic review settings October 30, 2025 00:29
@azure-client-tools-bot-prd
Copy link
Copy Markdown

Validation for Breaking Change Starting...

Thanks for your contribution!

@yonzhan
Copy link
Copy Markdown
Collaborator

yonzhan commented Oct 30, 2025

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

@github-actions
Copy link
Copy Markdown
Contributor

The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>

@github-actions
Copy link
Copy Markdown
Contributor

CodeGen Tools Feedback Collection

Thank you for using our CodeGen tool. We value your feedback, and we would like to know how we can improve our product. Please take a few minutes to fill our codegen survey

@github-actions
Copy link
Copy Markdown
Contributor

@henryzdai henryzdai assigned evelyn-ys and unassigned kairu-ms Oct 30, 2025
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR introduces a new Azure CLI extension for managing ChangeState resources through the ChangeSafety service. The extension provides CRUD operations (create, update, show, delete) for ChangeState resources at both subscription and resource group levels.

  • Adds Azure CLI extension structure with generated AAZ commands and custom implementations
  • Implements target parsing with key=value format and supports aliases (e.g., rg for resourceGroupName, operation for httpMethod)
  • Includes comprehensive unit tests for target parsing and change definition handling

Reviewed Changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
setup.py Package setup configuration for the change-state extension
azext_change_state/custom.py Custom command implementations with target parsing and change definition injection logic
azext_change_state/commands.py Command registration logic
azext_change_state/tests/latest/test_change_state.py Unit tests for custom command functionality
azext_change_state/aaz/latest/change_safety/change_state/*.py Generated AAZ command implementations for CRUD operations
azext_change_state/init.py Extension loader implementation
HISTORY.rst Release history for version 1.0.0b1
README.md Extension documentation

Comment thread src/azure-changesafety/HISTORY.rst
Comment thread src/azure-changesafety/azext_changesafety/custom.py Outdated
Comment thread src/azure-changesafety/azext_changesafety/custom.py Outdated
Comment thread src/azure-changesafety/azext_changesafety/custom.py Outdated
@evelyn-ys
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 2 pipeline(s).

Comment thread src/change-state/azext_change_state/tests/latest/test_change_state.py Outdated
@evelyn-ys
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 2 pipeline(s).

@evelyn-ys
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

@evelyn-ys
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 2 pipeline(s).

@henryzdai
Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Commenter does not have sufficient privileges for PR 9357 in repo Azure/azure-cli-extensions

@yonzhan
Copy link
Copy Markdown
Collaborator

yonzhan commented Nov 4, 2025

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 2 pipeline(s).

Comment thread src/azure-changesafety/README.md Outdated
Comment thread src/azure-changesafety/README.md Outdated
Comment thread src/azure-changesafety/README.md Outdated
Comment thread src/azure-changesafety/README.md
Comment thread src/azure-changesafety/README.md Outdated
Comment thread src/azure-changesafety/azext_changesafety/__init__.py Outdated
Comment thread src/azure-changesafety/azext_changesafety/_help.py
Comment thread src/azure-changesafety/README.md
Henry Dai and others added 29 commits April 17, 2026 11:13
- 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>
…mple, sanitize email in recording

- Add help entries for stageprogression group/create/update/show/delete/list
- Add stagevariables example to stagemap create help
- Replace henrydai@microsoft.com with johndoe@example.com in test recording

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Test recordings were captured against eastus2euap.management.azure.com (canary)
but CI runs against management.azure.com (prod). VCR host matcher fails.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tion

- Fix _append_or_set_element to concatenate values with comma instead of
  overwriting existing key-value pairs (fixes test_normalize_targets)
- Add _safe_subscription_id helper to handle CI environment where
  cmd.ctx.subscription_id throws CLIError (no az login session)
- Change ChangeSafetyLiveScenario base class to LiveScenarioTest so
  live-only tests are properly skipped in CI (fixes acquire_token error)

All 3 CI failures from build 309298 are resolved:
- test_normalize_targets_from_operations: PASSED (was assertion error)
- test_change_record_crud_scenario: PASSED (was CLIError: az login)
- test_default_schedule_times_applied_on_create: PASSED (was CLIError)
- test_changesafety_full_scenario: SKIPPED (correctly, via @live_only)

Local verification: azdev test/style/linter all passed (19 passed, 1 skipped)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@henryzdai henryzdai force-pushed the henrydai/implementChangeStateCRUD0901 branch from c24579e to 3b93a8e Compare April 17, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants