Skip to content

Conversation

@henryzdai
Copy link


Support for managing Microsoft.ChangeSafety/ChangeState, including creating, updating, showing, and deleting changeState 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

Validation for Breaking Change Starting...

Thanks for your contribution!

@yonzhan
Copy link
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

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

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

Henry Dai added 2 commits October 29, 2025 17:32
…ngeState' into henrydai/implementChangeStateCRUD0901
@henryzdai henryzdai assigned evelyn-ys and unassigned kairu-ms Oct 30, 2025
Copy link
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

===============

1.0.0b1
++++++
Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

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

The separator line should use + symbols matching the length of the version string. '1.0.0b1' is 7 characters but only 7 + symbols are shown (correct). However, there's a formatting issue - line 7 shows '0' instead of continuing the separator.

Suggested change
++++++
+++++++

Copilot uses AI. Check for mistakes.
Comment on lines +246 to +251
key_mapping = {
'resourceid': 'resourceId',
'subscriptionid': 'subscriptionId',
'resourcegroupname': 'resourceGroupName',
'resourcegroup': 'resourceGroupName',
'rg': 'resourceGroupName',
Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

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

The pre_instance_create method contains only a comment and pass statement. If this method serves no functional purpose, it should be removed. If it's a placeholder for future functionality, add a TODO comment explaining what needs to be implemented.

Copilot uses AI. Check for mistakes.
Comment on lines +383 to +388
error_message = (
"Each --targets entry must be in key=value format. "
f"Invalid: '{segment}'"
)
raise InvalidArgumentValueError(error_message)

Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

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

The pre_instance_update method contains only a comment and pass statement. If this method serves no functional purpose, it should be removed. If it's a placeholder for future functionality, add a TODO comment explaining what needs to be implemented.

Copilot uses AI. Check for mistakes.
Comment on lines +403 to +406
'resourcetype': 'resourceType',
'resourcename': 'resourceName',
'httpmethod': 'httpMethod',
'method': 'httpMethod', # Allow shorter alias
Copy link

Copilot AI Oct 30, 2025

Choose a reason for hiding this comment

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

The comment 'Optionally inject targets schema into result if needed' suggests incomplete implementation. Either implement the functionality or remove the misleading comment if the targets injection is intentionally not needed for the Show command.

Copilot uses AI. Check for mistakes.
@evelyn-ys
Copy link
Member

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

Comment on lines +22 to +24
class ChangeStateScenario(ScenarioTest):
# TODO: add tests here
pass
Copy link
Member

@evelyn-ys evelyn-ys Oct 31, 2025

Choose a reason for hiding this comment

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

CodeGen tool just generated all the test steps, you need to call those scenarios here to make test effective. By then, you will need to record test and commit the recording yaml file.

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.

4 participants