[MCC] Upgrade az mcc ent commands to the 2026-06-01 API version - #10290
Conversation
- Regenerate all az mcc ent commands against 2026-06-01. - Restrict --auto-update-ring to Stable and Beta; report the new ring names even though the service still stores the legacy Slow and Fast. - Restrict --proxy to Enabled and Disabled and translate to the values the service expects. --proxy previously failed for every value. - Require an install schedule when moving to Stable and reject one when moving to Beta. - Reject 0 for --auto-update-day. - Hide the arguments reserved for an upcoming feature. - Correct the help so it matches the enforced behaviour, add examples, and re-record the scenario test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d
|
Hi Denali Cornwell (@dcwell), |
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
🟡 Changes recommended
The CLI help for --proxy-host remains inconsistent with validation (URL example includes : which is rejected), so user-facing documentation should be aligned before approval.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR upgrades the az mcc ent command surface in the mcc extension from 2024-11-30-preview to the 2026-06-01 GA API version, and updates the customization layer and tests to align CLI behavior with the new swagger/service semantics (notably update ring and proxy vocabulary translation).
Changes:
- Bumped extension version to
1.0.0b4and documented breaking changes/fixes inHISTORY.rst. - Regenerated AAZ command modules to target
2026-06-01and added/updated command examples. - Updated the customization layer and scenario test to enforce/validate updated rings/proxy behavior and to present customer-facing aliases in output.
File summaries
| File | Description |
|---|---|
| src/mcc/setup.py | Bumps extension version to 1.0.0b4. |
| src/mcc/HISTORY.rst | Adds 1.0.0b4 changelog, including breaking changes and fixes. |
| src/mcc/azext_mcc/tests/latest/test_mcc.py | Updates scenario test inputs/assertions for new proxy/ring semantics and validates proxy alias in output. |
| src/mcc/azext_mcc/custom.py | Adds ring/proxy translation logic, strengthens validations, hides reserved args, and adjusts help/enums. |
| src/mcc/azext_mcc/azext_metadata.json | Raises minimum Azure CLI core requirement to 2.75.0. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/resource/_wait.py | Updates API version to 2026-06-01. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/resource/_show.py | Updates API version to 2026-06-01. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/resource/_list.py | Updates API version to 2026-06-01 and refreshes examples. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/resource/_delete.py | Updates API version to 2026-06-01 and refreshes examples. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/resource/_create.py | Updates API version to 2026-06-01, refreshes example, and adds ISO datetime formatting. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_wait.py | Updates API version to 2026-06-01 and extends read schema with new fields. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_update.py | Updates API version to 2026-06-01, refreshes examples, and updates schema with new fields/enum values. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_show.py | Updates API version to 2026-06-01, refreshes examples, and extends read schema with new fields. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_list.py | Updates API version to 2026-06-01, refreshes examples, and extends read schema with new fields. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_get_deployment_details.py | Updates API version to 2026-06-01 and refreshes example. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_delete.py | Updates API version to 2026-06-01 and refreshes example. |
| src/mcc/azext_mcc/aaz/latest/mcc/ent/node/_create.py | Updates API version to 2026-06-01 and adds ISO datetime formatting plus new schema fields. |
Review details
- Files reviewed: 17/18 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| # The swagger description repeats the allowed values, which the CLI already appends. | ||
| args_schema.proxy._help["short-summary"] = ( | ||
| "Enable or disable proxy. When enabled, provide --proxy-host and --proxy-port." | ||
| ) |
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
The service accepts the new ring names but stores the legacy ones, and then rejects those legacy names on write. Any update that did not restate --auto-update-ring echoed the stored value back and failed with InvalidAutoUpdateRingTypeForApiVersion. Normalise the ring on the instance in pre_instance_update so the request carries the current name. Found by an end to end run: setting the ring to Beta and then changing only --proxy-host failed. Re-recorded the scenario test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
MCC |
Command output no longer rewrites the update ring to the name that was sent. If a cache node is on a legacy ring the operator now sees that, which matters because those nodes exist and are worth spotting. The input restriction is unchanged: only Stable and Beta are accepted, and Slow, Fast and Preview are still rejected at argument parsing. The replacement done in pre_instance_update stays as well, because the service rejects the legacy name on write and a generic update would otherwise echo it straight back. Verified against the live service: a raw REST PUT of "Stable", with no CLI involved, is persisted as "Slow". The rewrite is service side and cannot be prevented from the extension. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
[Release] Update index.json for extension [ mcc-1.0.0b4 ] : https://dev.azure.com/msazure/One/_build/results?buildId=179475740&view=results |
1.0.0b4 was published to src/index.json after Azure#10290 merged, so the two error message fixes cannot ship under that version. Bump to 1.0.0b5 and move the entries into their own HISTORY block. Also address the two grammar issues raised in review, both on messages this branch already rewrites: - "Parameter --proxy is set not provided" was ungrammatical; it now reads "Parameter --proxy is not provided". - "must provide --proxy-host and --proxy-port parameter" referred to two parameters in the singular; it now reads "must provide both --proxy-host and --proxy-port parameters". Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d
…ent (#10292) * [MCC] Fix validation errors that pointed users at a nonexistent argument Proxy validation errors on `az mcc ent node update` instructed the user to set --enable-proxy. That argument is deliberately unregistered, so following the guidance in the message failed with "unrecognized arguments". All eight messages now name --proxy, the argument the command actually exposes. The internal argument name is unchanged. az mcc ent node create reported the cache node name when it failed to find the MCC resource, even though the lookup uses the MCC resource name. A bare except also discarded the underlying error, so a mistyped resource group surfaced as a missing MCC resource. The message now names the MCC resource and the resource group, and includes the reason the lookup failed. Both bare except clauses are now except Exception with exception chaining. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d * [MCC] Release these fixes as 1.0.0b5 and address review feedback 1.0.0b4 was published to src/index.json after #10290 merged, so the two error message fixes cannot ship under that version. Bump to 1.0.0b5 and move the entries into their own HISTORY block. Also address the two grammar issues raised in review, both on messages this branch already rewrites: - "Parameter --proxy is set not provided" was ungrammatical; it now reads "Parameter --proxy is not provided". - "must provide --proxy-host and --proxy-port parameter" referred to two parameters in the singular; it now reads "must provide both --proxy-host and --proxy-port parameters". Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 50dadd04-01f2-4767-883b-69a9a6f8a20d
🤖 PR Validation —⚠️ Review suggested
This checklist is used to make sure that common guidelines for a pull request are followed.
Related command
az mcc ent node create|update|delete|show|list|get-deployment-detailsaz mcc ent resource create|delete|list|waitGeneral Guidelines
azdev style <YOUR_EXT>locally? (pip install azdevrequired)python scripts/ci/test_index.py -qlocally? (pip install azdevrequired)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.Summary
Upgrades every
az mcc entcommand from2024-11-30-previewto the2026-06-01GA API version, and updates the customization layer to match the new API.
Command models: Azure/aaz#1079
mcc1.0.0b3->1.0.0b4.Breaking changes
Both are intentional and both are called out in
HISTORY.rst.1.
--auto-update-ringnow accepts onlyStableandBeta.2026-06-01renames the customer selectable update rings. Per the swagger,Slow,FastandPrevieware "Legacy update ring retained for backward compatibility.This value was used prior to 2026-06-01."
StablereplacesSlowandBetareplaces
Fast. MCC is standardising on the new rings, so the legacy values are nolonger offered.
The service still stores the legacy value: sending
Stablereads back asSlow,and sending
Betareads back asFast. Both pairings were confirmed against thelive service. The extension translates on output so a customer sees the same
vocabulary they typed.
2.
--proxynow accepts onlyEnabledandDisabled.This one restores behaviour rather than removing it. The generated enum carries the
service values (
None/Required) from theProxyRequiredswagger enum, whilepre_operationshas always rejected exactly those two values and told the user topass
Enabled/Disabledinstead. In1.0.0b3the generated enum happened to carryall four values, so it worked. After regenerating against
2026-06-01only theservice values remained, which left every value of
--proxyfailing — two atargument parsing, two in validation. The extension now offers only the two customer
facing values and translates them to
Required/Nonebefore the request is sent.Fixes
--proxywas completely unusable after the API upgrade, as described above.was compared against
Enabled, but the service reportsRequired, so that branchwas unreachable. Changing only
--proxy-hostor only--proxy-portfailed, anddisabling the proxy left the previous
proxyUrlConfigurationon the resource.if ring == "Fast" ... else assume Slow, which was true when only three rings existed. With five values, threefell through the
else, so a node onStable/Beta/Previewcould be moved to ascheduled ring without ever being asked for
--auto-update-day/week/time. The checkis now written against the target ring: moving to
Stablerequires all three,moving to
Betarejects all three because that schedule is managed by Microsoft.--auto-update-dayaccepted0. The help said 1-7 and the swagger allows 0-7.It is now validated to 1-7, matching the existing
--auto-update-weekguard.showandlistleaked service vocabulary. Proxy state and update ring are nowreported with the same values the commands accept as input.
Other changes
--bgp-network-interface,--runtime-account-typeand the four--open-firewall-port*arguments. These arrived with2026-06-01, are reserved foran upcoming feature, and are not ready for customer use. They were only exposed on
update; oncreatethey sit undercache_node, which is already hidden.--auto-update-ring,--auto-update-day,--auto-update-week,--auto-update-time,--cache-driveand--proxyso it states the behaviour theextension actually enforces.
the generated Python, so they were lost on the first regeneration; they are now part
of the command model and survive future regenerations.
Testing
test_mccwas re-recorded live against the2026-06-01API and passes in both liveand playback mode. It also now asserts that the proxy state round-trips as
Enabledrather than
Required.azdev test mcc— passed (live re-record, then playback)azdev style mcc— pylint and flake8 passedazdev linter --include-whl-extensions mcc— 21/21 rules passedpython scripts/ci/test_index.py -q— OK