[Change Safety] Enable additional AutoRest modules - #30117
[Change Safety] Enable additional AutoRest modules#30117YangAn-microsoft wants to merge 3 commits into
Conversation
|
Azure Pipelines: Successfully started running 2 pipeline(s). There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
🔵 Needs a closer look
A custom script contains non-breaking space (U+00A0) characters in executable code, which should be normalized to regular spaces to avoid invisible-character maintenance issues.
Pull request overview
This pull request opts additional AutoRest-based Az modules into “Change Safety” and updates their custom cmdlet wrappers so the generated cmdlets’ Change Safety dynamic parameters are surfaced through the public-facing commands.
Changes:
- Enabled Change Safety in each affected AutoRest
README.md(enable-change-safety: true). - Added
dynamicparam {}forwarding to custom wrapper scripts so generated cmdlets’ dynamic parameters (e.g.,-AcquirePolicyToken,-ChangeReference) flow through. - Updated
generate-info.jsongeneration IDs and added user-facingChangeLog.mdentries.
File summaries
| File | Description |
|---|---|
| src/ContainerInstance/ContainerInstance/ChangeLog.md | Changelog entry announcing Change Safety support. |
| src/ContainerInstance/ContainerInstance.Autorest/README.md | Opt-in Change Safety for generated ContainerInstance cmdlets. |
| src/ContainerInstance/ContainerInstance.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ContainerInstance/ContainerInstance.Autorest/custom/New-AzContainerGroup.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ContainerRegistry/ContainerRegistry/ChangeLog.md | Changelog entry for extending Change Safety to generated cmdlets. |
| src/ContainerRegistry/ContainerRegistry.Autorest/README.md | Opt-in Change Safety for generated ContainerRegistry cmdlets. |
| src/ContainerRegistry/ContainerRegistry.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/EventGrid/EventGrid/ChangeLog.md | Changelog entry announcing Change Safety support. |
| src/EventGrid/EventGrid.Autorest/README.md | Opt-in Change Safety for generated EventGrid cmdlets. |
| src/EventGrid/EventGrid.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/EventHub/EventHub/ChangeLog.md | Changelog entry for extending Change Safety to generated cmdlets. |
| src/EventHub/EventHub.Autorest/README.md | Opt-in Change Safety for generated EventHub cmdlets. |
| src/EventHub/EventHub.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/EventHub/EventHub.Autorest/custom/Approve-AzEventHubPrivateEndpointConnection.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Deny-AzEventHubPrivateEndpointConnection.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/New-AzEventHubAuthorizationRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/New-AzEventHubKey.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/New-AzEventHubNamespace.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Remove-AzEventHubAuthorizationRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHub.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubApplicationGroup.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubAuthorizationRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubCluster.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubConsumerGroup.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationBreakPair.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationFailOver.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNamespace.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNetworkRuleSet.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/EventHub/EventHub.Autorest/custom/Start-AzEventHubNamespaceFailOver.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/Kusto/Kusto/ChangeLog.md | Changelog entry announcing Change Safety support. |
| src/Kusto/Kusto.Autorest/README.md | Opt-in Change Safety for generated Kusto cmdlets. |
| src/Kusto/Kusto.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/Kusto/Kusto.Autorest/custom/New-AzKustoDatabase.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/Kusto/Kusto.Autorest/custom/Update-AzKustoDatabase.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ManagedServiceIdentity/ManagedServiceIdentity/ChangeLog.md | Changelog entry announcing Change Safety support. |
| src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/README.md | Opt-in Change Safety for generated ManagedServiceIdentity cmdlets. |
| src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/Network/Network/ChangeLog.md | Changelog entry for extending Change Safety to generated cmdlets. |
| src/Network/NetworkSecurityPerimeter.Autorest/README.md | Opt-in Change Safety for generated NetworkSecurityPerimeter cmdlets. |
| src/Network/NetworkSecurityPerimeter.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAccessRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAssociation.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLink.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLoggingConfiguration.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus/ChangeLog.md | Changelog entry for extending Change Safety to generated cmdlets. |
| src/ServiceBus/ServiceBus.Autorest/README.md | Opt-in Change Safety for generated ServiceBus cmdlets. |
| src/ServiceBus/ServiceBus.Autorest/generate-info.json | Bump generation ID to trigger regeneration. |
| src/ServiceBus/ServiceBus.Autorest/custom/Approve-AzServiceBusPrivateEndpointConnection.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Deny-AzServiceBusPrivateEndpointConnection.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusAuthorizationRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusKey.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusNamespace.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Remove-AzServiceBusAuthorizationRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusAuthorizationRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationBreakPair.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationFailOver.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNamespace.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNetworkRuleSet.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusQueue.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusRule.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusSubscription.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusTopic.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
| src/ServiceBus/ServiceBus.Autorest/custom/Start-AzServiceBusNamespaceFailOver.ps1 | Forward Change Safety dynamic parameters to wrapped generated cmdlet. |
Review details
Suppressed comments (1)
src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1:151
- These lines contain non-breaking space (U+00A0) characters around keywords (
process,try,catch) and before the splatted@PSBoundParameters. Invisible Unicode whitespace is easy to miss in reviews and can cause editing, linting, and copy/paste issues; please replace with regular ASCII spaces.
process {
try {
Az.ContainerInstance.internal\Invoke-AzContainerInstanceCommand @PSBoundParameters
} catch {
throw
- Files reviewed: 64/64 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
/azp run |
|
Azure Pipelines: Successfully started running 3 pipeline(s). |
There was a problem hiding this comment.
🔵 Needs a closer look
A custom wrapper script contains non-breaking spaces (U+00A0) in process/try/catch lines, which should be normalized to avoid parsing/tooling issues.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1:150
- The
process,try,catch, and invocation lines contain non-breaking spaces (U+00A0) instead of normal spaces. This can cause hard-to-diagnose parsing/tooling issues (e.g., in editors/linters) and should be normalized to plain ASCII whitespace.
process {
try {
Az.ContainerInstance.internal\Invoke-AzContainerInstanceCommand @PSBoundParameters
} catch {
- Files reviewed: 64/64 changed files
- Comments generated: 0 new
- Review effort level: Lite
|
/azp run |
|
Azure Pipelines: Successfully started running 3 pipeline(s). |
There was a problem hiding this comment.
🟡 Changes recommended
The PR description/scope doesn’t match the set of modules actually updated (e.g., includes PostgreSqlFlexibleServer and Monitor/DataCollectionRule changes beyond the eight listed).
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 70/70 changed files
- Comments generated: 1
- Review effort level: Lite
|
/azp run |
|
Azure Pipelines: Successfully started running 3 pipeline(s). |
There was a problem hiding this comment.
🟡 Changes recommended
The diff enables Change Safety for modules beyond the eight listed in the PR description, so scope/description should be reconciled before approval.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
Suppressed comments (1)
src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/tspconfig.yaml:13
- The PR description lists eight AutoRest projects being opted into Change Safety, but this change also enables Change Safety for Az.PostgreSqlFlexibleServer. Please clarify whether this module is intentionally included (update PR description and ensure any needed wrapper forwarding is present), or revert this opt-in to keep the PR focused.
- Files reviewed: 70/70 changed files
- Comments generated: 1
- Review effort level: Lite
🤖 PR Validation — 🔄 Running
Summary
Enables Change Safety (
-AcquirePolicyTokenand-ChangeReference) for ten additional AutoRest-based Azure PowerShell projects:SDK-based projects already inherit Change Safety through the shared SDK infrastructure. These AutoRest projects require an explicit
enable-change-safety: trueopt-in.What's included
As in #29999, this contribution is source-only; generated content is intentionally omitted and will be produced by the archive bot.
Validation
@autorest/powershell@4.0.758, plus Az.PostgreSqlFlexibleServer via TypeSpec and Az.DataCollectionRule via AutoRest through the repository's standard build pipeline).dynamicparamforwarding.generate-info.jsonfiles and confirmed nogenerated/**files are included.Live Testing Evidence
Local live testing was performed against real Azure resources (tenant
4f00b3b6-2940-4f2c-b037-94637c180d30, subscriptionf758ac53-3e63-4317-a956-0997793808d7) using locally regenerated and built modules from this branch, to confirm both dynamic-parameter-forwarding patterns used in this PR work end-to-end. Test resources were deleted immediately after each run, and nogenerated/**output from local testing is included in this PR.Pattern 1 - fully generated write cmdlet, no custom wrapper
Modules: Az.ContainerRegistry, Az.EventGrid, Az.ManagedServiceIdentity, Az.PostgreSqlFlexibleServer, Az.DataCollectionRule
Tested with Az.ManagedServiceIdentity:
New-AzUserAssignedIdentity -AcquirePolicyTokencreated a real user-assigned identity (200 OK), verified withGet-AzUserAssignedIdentity, then deleted withRemove-AzUserAssignedIdentity -AcquirePolicyToken.-ChangeReferencewas confirmed to reach real Azure Change Safety policy validation: pointing it at a non-existent Change Record failed withExternalEndpointInvocationFailure/ "could not be found", proving the reference is sent to and evaluated by the service rather than only bound locally.New-AzChangeSafetyChangeRecord) to complete this path failed withInvalidTenantId: Tenant ... is not authorized for this resource provider- an environment/tenant-onboarding constraint unrelated to this PR.Pattern 2 - custom wrapper forwarding dynamic parameters to the generated cmdlet
Modules: Az.ContainerInstance, Az.EventHub, Az.Kusto, Az.NetworkSecurityPerimeter, Az.ServiceBus
Tested with Az.EventHub:
New-AzEventHubNamespace -AcquirePolicyTokencreated a real EventHub namespace, verified withGet-AzEventHubNamespace, then deleted withRemove-AzEventHubNamespace -AcquirePolicyToken.dynamicparamblock correctly reflectsIDynamicParametersfrom the wrapped generated cmdlet, and that the outer AutoRest-generated proxy correctly forwards it through to the public command.Both patterns bind, forward, and reach the real Azure Change Safety pipeline successfully.