[ACR] BREAKING CHANGE: az acr export-pipeline create: Add --storage-access-mode argument#9762
[ACR] BREAKING CHANGE: az acr export-pipeline create: Add --storage-access-mode argument#9762nguyenm2151 wants to merge 31 commits intoAzure:mainfrom
Conversation
❌Azure CLI Extensions Breaking Change Test
|
|
Hi @nguyenm2151, |
|
Thank you for your contribution! We will review the pull request and get back to you soon. |
|
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). pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>
|
|
Hi @nguyenm2151
|
There was a problem hiding this comment.
Pull request overview
Updates the acrtransfer Azure CLI extension to support the new required --storage-access-mode parameter for ACR import/export pipeline creation, including moving the extension to a newer vendored Container Registry SDK API version.
Changes:
- Bumps extension to
2.0.0, updates release notes, and marks the extension as non-preview/stable. - Introduces
--storage-access-modeparameter with validation and updates pipeline creation logic to sendstorageAccessModeto the service. - Adds scenario tests covering Managed Identity vs SAS token modes and invalid flag combinations; vendors the
2025-06-01-previewSDK surface.
Reviewed changes
Copilot reviewed 43 out of 66 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/acrtransfer/setup.py | Bumps extension version and updates PyPI classifiers to stable. |
| src/acrtransfer/HISTORY.rst | Adds 2.0.0 release notes describing the breaking change. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/py.typed | Marks the vendored SDK package as PEP 561 typed. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/operations/_private_endpoint_connections_operations.py | Adds generated operations for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/operations/_pipeline_runs_operations.py | Adds generated pipeline runs operations for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/operations/_operations.py | Adds generated provider operations listing for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/operations/_import_pipelines_operations.py | Adds generated import pipeline operations for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/operations/_export_pipelines_operations.py | Adds generated export pipeline operations for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/operations/init.py | Exposes generated operation groups for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/models/_container_registry_management_client_enums.py | Adds generated enums for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/models/init.py | Exposes generated models/enums for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/_runs_operations.py | Adds generated async runs operations (new API version). |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/_private_endpoint_connections_operations.py | Adds generated async private endpoint connection ops. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/_pipeline_runs_operations.py | Adds generated async pipeline runs ops. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/_operations.py | Adds generated async operations listing. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/_import_pipelines_operations.py | Adds generated async import pipeline ops. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/_export_pipelines_operations.py | Adds generated async export pipeline ops. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/operations/init.py | Exposes generated async operation groups. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/_container_registry_management_client.py | Adds generated async management client for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/_configuration.py | Adds generated async client configuration. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/aio/init.py | Exposes async client entrypoint. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/_metadata.json | Adds AutoRest generation metadata for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/_container_registry_management_client.py | Adds generated sync management client for the new API version. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/_configuration.py | Adds generated sync client configuration. |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2025_06_01_preview/init.py | Exposes sync client entrypoint (and optional patch hook). |
| src/acrtransfer/azext_acrtransfer/vendored_sdks/containerregistry/v2019_12_01_preview/models/_models_py3.py | Updates pipeline source/target models to include required storage_access_mode. |
| src/acrtransfer/azext_acrtransfer/utility_functions.py | Switches identity helper to use the new vendored SDK model types. |
| src/acrtransfer/azext_acrtransfer/tests/latest/test_acrtransfer_pipelines.py | Adds scenario tests for ManagedIdentity vs SasToken modes and invalid combinations. |
| src/acrtransfer/azext_acrtransfer/pipelinerun.py | Updates pipelinerun code to new vendored SDK and logs auth mode guidance. |
| src/acrtransfer/azext_acrtransfer/importpipeline.py | Adds storage_access_mode wiring, identity permission guidance, and updated SDK types. |
| src/acrtransfer/azext_acrtransfer/exportpipeline.py | Adds storage_access_mode wiring, identity permission guidance, and updated SDK types. |
| src/acrtransfer/azext_acrtransfer/commands.py | Points command table at the new vendored API version operation groups. |
| src/acrtransfer/azext_acrtransfer/azext_metadata.json | Marks the extension as non-preview. |
| src/acrtransfer/azext_acrtransfer/_validators.py | Adds validation coupling --storage-access-mode with --secret-uri and supports [system]. |
| src/acrtransfer/azext_acrtransfer/_params.py | Adds --storage-access-mode parameter and updates help text for related args. |
| src/acrtransfer/azext_acrtransfer/_help.py | Updates command help examples for new --storage-access-mode and identity modes. |
| src/acrtransfer/azext_acrtransfer/_client_factory.py | Switches client factory to the new vendored SDK client. |
| src/acrtransfer/azext_acrtransfer/_breaking_change.py | Updates breaking change notice to reflect new allowed values. |
Comments suppressed due to low confidence (1)
src/acrtransfer/azext_acrtransfer/commands.py:44
azext_metadata.jsonnow marks the extension as non-preview (azext.isPreview: false), but these command groups are still registered withis_preview=True, which will keep the commands labeled as preview in CLI help/output. Align the command-group preview flags with the extension metadata to avoid confusing UX.
with self.command_group('acr import-pipeline', importpipeline_sdk, table_transformer=import_pipeline_output_format, is_preview=True) as g:
g.custom_command('create', 'create_importpipeline')
g.custom_command('delete', 'delete_importpipeline')
g.custom_command('list', 'list_importpipeline')
g.custom_show_command('show', 'get_importpipeline')
with self.command_group('acr export-pipeline', exportpipeline_sdk, table_transformer=export_pipeline_output_format, is_preview=True) as g:
g.custom_command('create', 'create_exportpipeline')
g.custom_command('delete', 'delete_exportpipeline')
g.custom_command('list', 'list_exportpipeline')
g.custom_show_command('show', 'get_exportpipeline')
with self.command_group('acr pipeline-run', pipelinerun_sdk, table_transformer=pipeline_run_output_format, is_preview=True) as g:
g.custom_command('create', 'create_pipelinerun')
This checklist is used to make sure that common guidelines for a pull request are followed.
Related command
General Guidelines
azdev style <YOUR_EXT>locally? (pip install azdevrequired)python scripts/ci/test_index.py -qlocally? (pip install wheel==0.30.0required)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.jsonautomatically.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.