From 046b6276a2c382e498940d4f6f10f4f9a2ecdb43 Mon Sep 17 00:00:00 2001 From: Yang An Date: Tue, 8 Sep 2026 15:22:00 +1000 Subject: [PATCH 1/3] Enable Change Safety for additional AutoRest modules --- .../ContainerInstance.Autorest/README.md | 1 + .../Invoke-AzContainerInstanceCommand.ps1 | 17 +++++++++++++++++ .../custom/New-AzContainerGroup.ps1 | 17 +++++++++++++++++ .../generate-info.json | 2 +- .../ContainerInstance/ChangeLog.md | 1 + .../ContainerRegistry.Autorest/README.md | 1 + .../generate-info.json | 2 +- .../ContainerRegistry/ChangeLog.md | 1 + src/EventGrid/EventGrid.Autorest/README.md | 1 + .../EventGrid.Autorest/generate-info.json | 2 +- src/EventGrid/EventGrid/ChangeLog.md | 1 + src/EventHub/EventHub.Autorest/README.md | 1 + ...rove-AzEventHubPrivateEndpointConnection.ps1 | 13 ++++++++++++- ...Deny-AzEventHubPrivateEndpointConnection.ps1 | 13 ++++++++++++- .../custom/New-AzEventHubAuthorizationRule.ps1 | 13 ++++++++++++- .../custom/New-AzEventHubKey.ps1 | 13 ++++++++++++- .../custom/New-AzEventHubNamespace.ps1 | 15 +++++++++++++++ .../Remove-AzEventHubAuthorizationRule.ps1 | 13 ++++++++++++- .../EventHub.Autorest/custom/Set-AzEventHub.ps1 | 15 +++++++++++++++ .../custom/Set-AzEventHubApplicationGroup.ps1 | 13 ++++++++++++- .../custom/Set-AzEventHubAuthorizationRule.ps1 | 13 ++++++++++++- .../custom/Set-AzEventHubCluster.ps1 | 13 ++++++++++++- .../custom/Set-AzEventHubConsumerGroup.ps1 | 13 ++++++++++++- ...et-AzEventHubGeoDRConfigurationBreakPair.ps1 | 13 ++++++++++++- ...Set-AzEventHubGeoDRConfigurationFailOver.ps1 | 13 ++++++++++++- .../custom/Set-AzEventHubNamespace.ps1 | 15 +++++++++++++++ .../custom/Set-AzEventHubNetworkRuleSet.ps1 | 13 ++++++++++++- .../Start-AzEventHubNamespaceFailOver.ps1 | 13 ++++++++++++- .../EventHub.Autorest/generate-info.json | 2 +- src/EventHub/EventHub/ChangeLog.md | 1 + src/Kusto/Kusto.Autorest/README.md | 1 + .../custom/New-AzKustoDatabase.ps1 | 16 ++++++++++++++++ .../custom/Update-AzKustoDatabase.ps1 | 16 ++++++++++++++++ src/Kusto/Kusto.Autorest/generate-info.json | 2 +- src/Kusto/Kusto/ChangeLog.md | 1 + .../ManagedServiceIdentity.Autorest/README.md | 1 + .../generate-info.json | 2 +- .../ManagedServiceIdentity/ChangeLog.md | 1 + src/Network/Network/ChangeLog.md | 1 + .../NetworkSecurityPerimeter.Autorest/README.md | 1 + ...ate-AzNetworkSecurityPerimeterAccessRule.ps1 | 16 +++++++++++++++- ...te-AzNetworkSecurityPerimeterAssociation.ps1 | 16 ++++++++++++++++ .../Update-AzNetworkSecurityPerimeterLink.ps1 | 16 ++++++++++++++++ ...orkSecurityPerimeterLoggingConfiguration.ps1 | 16 ++++++++++++++++ .../generate-info.json | 2 +- src/ServiceBus/ServiceBus.Autorest/README.md | 1 + ...ve-AzServiceBusPrivateEndpointConnection.ps1 | 13 ++++++++++++- ...ny-AzServiceBusPrivateEndpointConnection.ps1 | 13 ++++++++++++- .../New-AzServiceBusAuthorizationRule.ps1 | 13 ++++++++++++- .../custom/New-AzServiceBusKey.ps1 | 13 ++++++++++++- .../custom/New-AzServiceBusNamespace.ps1 | 17 ++++++++++++++++- .../Remove-AzServiceBusAuthorizationRule.ps1 | 13 ++++++++++++- .../Set-AzServiceBusAuthorizationRule.ps1 | 13 ++++++++++++- ...-AzServiceBusGeoDRConfigurationBreakPair.ps1 | 13 ++++++++++++- ...t-AzServiceBusGeoDRConfigurationFailOver.ps1 | 13 ++++++++++++- .../custom/Set-AzServiceBusNamespace.ps1 | 15 +++++++++++++++ .../custom/Set-AzServiceBusNetworkRuleSet.ps1 | 13 ++++++++++++- .../custom/Set-AzServiceBusQueue.ps1 | 16 ++++++++++++++++ .../custom/Set-AzServiceBusRule.ps1 | 13 ++++++++++++- .../custom/Set-AzServiceBusSubscription.ps1 | 11 +++++++++++ .../custom/Set-AzServiceBusTopic.ps1 | 16 ++++++++++++++++ .../Start-AzServiceBusNamespaceFailOver.ps1 | 13 ++++++++++++- .../ServiceBus.Autorest/generate-info.json | 2 +- src/ServiceBus/ServiceBus/ChangeLog.md | 1 + 64 files changed, 560 insertions(+), 34 deletions(-) diff --git a/src/ContainerInstance/ContainerInstance.Autorest/README.md b/src/ContainerInstance/ContainerInstance.Autorest/README.md index cc6fa6b15c1a..69107b1937a6 100644 --- a/src/ContainerInstance/ContainerInstance.Autorest/README.md +++ b/src/ContainerInstance/ContainerInstance.Autorest/README.md @@ -42,6 +42,7 @@ module-version: 1.0.3 # Normally, title is the service name title: ContainerInstance subject-prefix: $(service-name) +enable-change-safety: true directive: # Following is two common directive which are normally required in all the RPs diff --git a/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 b/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 index 788fc9d180bb..3f072a9f1de4 100644 --- a/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 +++ b/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 @@ -127,6 +127,23 @@ function Invoke-AzContainerInstanceCommand { # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) + + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.ContainerInstance.private\Invoke-AzContainerInstanceCommand_ExecuteExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { Az.ContainerInstance.internal\Invoke-AzContainerInstanceCommand @PSBoundParameters diff --git a/src/ContainerInstance/ContainerInstance.Autorest/custom/New-AzContainerGroup.ps1 b/src/ContainerInstance/ContainerInstance.Autorest/custom/New-AzContainerGroup.ps1 index fc5ebe4fb1da..c08a73bb69a9 100644 --- a/src/ContainerInstance/ContainerInstance.Autorest/custom/New-AzContainerGroup.ps1 +++ b/src/ContainerInstance/ContainerInstance.Autorest/custom/New-AzContainerGroup.ps1 @@ -370,6 +370,23 @@ param( # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) + + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.ContainerInstance.private\New-AzContainerGroup_CreateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { diff --git a/src/ContainerInstance/ContainerInstance.Autorest/generate-info.json b/src/ContainerInstance/ContainerInstance.Autorest/generate-info.json index bbc89f8995d5..a0d93f1efd40 100644 --- a/src/ContainerInstance/ContainerInstance.Autorest/generate-info.json +++ b/src/ContainerInstance/ContainerInstance.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "6b2e488e-e778-4c37-91d9-3cbcdbd92fbc" + "generate_Id": "b8eda972-31bc-4da8-aa9f-02ec75d4955f" } diff --git a/src/ContainerInstance/ContainerInstance/ChangeLog.md b/src/ContainerInstance/ContainerInstance/ChangeLog.md index 19ffa71b2279..cf49a2ec5517 100644 --- a/src/ContainerInstance/ContainerInstance/ChangeLog.md +++ b/src/ContainerInstance/ContainerInstance/ChangeLog.md @@ -19,6 +19,7 @@ --> ## Upcoming Release +* Added Change Safety support. ## Version 5.0.0 * [Upgraded code generator](https://go.microsoft.com/fwlink/?linkid=2340249) diff --git a/src/ContainerRegistry/ContainerRegistry.Autorest/README.md b/src/ContainerRegistry/ContainerRegistry.Autorest/README.md index 71cbe59acfb3..6b7251af39fd 100644 --- a/src/ContainerRegistry/ContainerRegistry.Autorest/README.md +++ b/src/ContainerRegistry/ContainerRegistry.Autorest/README.md @@ -53,6 +53,7 @@ try-require: module-version: 0.1.0 title: ContainerRegistry subject-prefix: $(service-name) +enable-change-safety: true inlining-threshold: 100 diff --git a/src/ContainerRegistry/ContainerRegistry.Autorest/generate-info.json b/src/ContainerRegistry/ContainerRegistry.Autorest/generate-info.json index decc1e7fa449..2b3abd41915b 100644 --- a/src/ContainerRegistry/ContainerRegistry.Autorest/generate-info.json +++ b/src/ContainerRegistry/ContainerRegistry.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "a19a7101-0606-4929-92cc-43573f286e00" + "generate_Id": "2f748bc6-e0fe-44b2-879f-bff194351267" } diff --git a/src/ContainerRegistry/ContainerRegistry/ChangeLog.md b/src/ContainerRegistry/ContainerRegistry/ChangeLog.md index f160422faf7c..95422408690b 100644 --- a/src/ContainerRegistry/ContainerRegistry/ChangeLog.md +++ b/src/ContainerRegistry/ContainerRegistry/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Extended Change Safety support to AutoRest-generated cmdlets. ## Version 5.1.0 * Added ChangeSafety Support diff --git a/src/EventGrid/EventGrid.Autorest/README.md b/src/EventGrid/EventGrid.Autorest/README.md index 1d63c81b475a..66b7339abb57 100644 --- a/src/EventGrid/EventGrid.Autorest/README.md +++ b/src/EventGrid/EventGrid.Autorest/README.md @@ -36,6 +36,7 @@ input-file: title: EventGrid module-version: 0.1.0 subject-prefix: $(service-name) +enable-change-safety: true identity-correction-for-post: true resourcegroup-append: true diff --git a/src/EventGrid/EventGrid.Autorest/generate-info.json b/src/EventGrid/EventGrid.Autorest/generate-info.json index aca26b77da32..6f3f2342baf2 100644 --- a/src/EventGrid/EventGrid.Autorest/generate-info.json +++ b/src/EventGrid/EventGrid.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "71d3c888-de41-4841-b15a-443051b0c462" + "generate_Id": "250f1633-0894-4094-a0e4-52f43ac30f5b" } diff --git a/src/EventGrid/EventGrid/ChangeLog.md b/src/EventGrid/EventGrid/ChangeLog.md index 9161ae1d3f5d..960079402d54 100644 --- a/src/EventGrid/EventGrid/ChangeLog.md +++ b/src/EventGrid/EventGrid/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Added Change Safety support. ## Version 2.2.0 * Upgraded nuget package to signed package. diff --git a/src/EventHub/EventHub.Autorest/README.md b/src/EventHub/EventHub.Autorest/README.md index e1ebd1de9b86..5c52fffbf6ee 100644 --- a/src/EventHub/EventHub.Autorest/README.md +++ b/src/EventHub/EventHub.Autorest/README.md @@ -46,6 +46,7 @@ module-version: 0.1.0 # Normally, title is the service name title: EventHub subject-prefix: $(service-name) +enable-change-safety: true # If there are post APIs for some kinds of actions in the RP, you may need to # uncomment following line to support viaIdentity for these post APIs diff --git a/src/EventHub/EventHub.Autorest/custom/Approve-AzEventHubPrivateEndpointConnection.ps1 b/src/EventHub/EventHub.Autorest/custom/Approve-AzEventHubPrivateEndpointConnection.ps1 index 5ef403e52a6b..23aceb2100aa 100644 --- a/src/EventHub/EventHub.Autorest/custom/Approve-AzEventHubPrivateEndpointConnection.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Approve-AzEventHubPrivateEndpointConnection.ps1 @@ -121,7 +121,18 @@ function Approve-AzEventHubPrivateEndpointConnection{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubPrivateEndpointConnection_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasDescription = $PSBoundParameters.Remove('Description') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/EventHub/EventHub.Autorest/custom/Deny-AzEventHubPrivateEndpointConnection.ps1 b/src/EventHub/EventHub.Autorest/custom/Deny-AzEventHubPrivateEndpointConnection.ps1 index b13ef06b6698..b75b2a28e820 100644 --- a/src/EventHub/EventHub.Autorest/custom/Deny-AzEventHubPrivateEndpointConnection.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Deny-AzEventHubPrivateEndpointConnection.ps1 @@ -121,7 +121,18 @@ function Deny-AzEventHubPrivateEndpointConnection{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubPrivateEndpointConnection_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasDescription = $PSBoundParameters.Remove('Description') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/EventHub/EventHub.Autorest/custom/New-AzEventHubAuthorizationRule.ps1 b/src/EventHub/EventHub.Autorest/custom/New-AzEventHubAuthorizationRule.ps1 index 79189f07f031..9f65f97b4c8e 100644 --- a/src/EventHub/EventHub.Autorest/custom/New-AzEventHubAuthorizationRule.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/New-AzEventHubAuthorizationRule.ps1 @@ -125,7 +125,18 @@ function New-AzEventHubAuthorizationRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubNamespaceAuthorizationRule_CreateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $null = $PSBoundParameters.Remove('WhatIf') $null = $PSBoundParameters.Remove('Confirm') diff --git a/src/EventHub/EventHub.Autorest/custom/New-AzEventHubKey.ps1 b/src/EventHub/EventHub.Autorest/custom/New-AzEventHubKey.ps1 index 982a239173b1..63b0003c2b87 100644 --- a/src/EventHub/EventHub.Autorest/custom/New-AzEventHubKey.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/New-AzEventHubKey.ps1 @@ -132,7 +132,18 @@ function New-AzEventHubKey{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubNamespaceKey_Regenerate' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasKeyValue = $PSBoundParameters.Remove('KeyValue') $hasKeyType = $PSBoundParameters.Remove('KeyType') diff --git a/src/EventHub/EventHub.Autorest/custom/New-AzEventHubNamespace.ps1 b/src/EventHub/EventHub.Autorest/custom/New-AzEventHubNamespace.ps1 index edb62afa96b6..8954ed521868 100644 --- a/src/EventHub/EventHub.Autorest/custom/New-AzEventHubNamespace.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/New-AzEventHubNamespace.ps1 @@ -198,6 +198,21 @@ function New-AzEventHubNamespace{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.EventHub.private\New-AzEventHubNamespace_CreateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } process{ try{ $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/EventHub/EventHub.Autorest/custom/Remove-AzEventHubAuthorizationRule.ps1 b/src/EventHub/EventHub.Autorest/custom/Remove-AzEventHubAuthorizationRule.ps1 index 42e3326c9b74..a5abb9086b3d 100644 --- a/src/EventHub/EventHub.Autorest/custom/Remove-AzEventHubAuthorizationRule.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Remove-AzEventHubAuthorizationRule.ps1 @@ -126,7 +126,18 @@ function Remove-AzEventHubAuthorizationRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\Remove-AzEventHubNamespaceAuthorizationRule_Delete' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $null = $PSBoundParameters.Remove('WhatIf') $null = $PSBoundParameters.Remove('Confirm') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHub.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHub.ps1 index 9ee802217b46..d6d80d465122 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHub.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHub.ps1 @@ -218,6 +218,21 @@ function Set-AzEventHub{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.EventHub.private\New-AzEventHub_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } process{ try{ $hasCaptureEnabled = $PSBoundParameters.Remove('CaptureEnabled') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubApplicationGroup.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubApplicationGroup.ps1 index ade37ff43b52..05f40fd6ceb8 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubApplicationGroup.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubApplicationGroup.ps1 @@ -133,7 +133,18 @@ function Set-AzEventHubApplicationGroup{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubApplicationGroup_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasIsEnabled = $PSBoundParameters.Remove('IsEnabled') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubAuthorizationRule.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubAuthorizationRule.ps1 index 7173267e7a42..93347f0a95f7 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubAuthorizationRule.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubAuthorizationRule.ps1 @@ -132,7 +132,18 @@ function Set-AzEventHubAuthorizationRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubNamespaceAuthorizationRule_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasRights = $PSBoundParameters.Remove('Rights') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubCluster.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubCluster.ps1 index d99c7b83db72..a0407b3d9711 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubCluster.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubCluster.ps1 @@ -122,7 +122,18 @@ function Set-AzEventHubCluster{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubCluster_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasCapacity = $PSBoundParameters.Remove('Capacity') $hasTag = $PSBoundParameters.Remove('Tag') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubConsumerGroup.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubConsumerGroup.ps1 index c8ed7900d690..b16f6914d708 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubConsumerGroup.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubConsumerGroup.ps1 @@ -128,7 +128,18 @@ function Set-AzEventHubConsumerGroup{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubConsumerGroup_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasUserMetadata = $PSBoundParameters.Remove('UserMetadata') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationBreakPair.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationBreakPair.ps1 index c69bfaf60525..6022a9369e14 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationBreakPair.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationBreakPair.ps1 @@ -114,7 +114,18 @@ function Set-AzEventHubGeoDRConfigurationBreakPair{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\Invoke-AzEventHubBreakDisasterRecoveryConfigPairing_Break' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasAsJob = $PSBoundParameters.Remove('AsJob') $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationFailOver.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationFailOver.ps1 index 88842d98cf06..67e4ddadda4b 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationFailOver.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubGeoDRConfigurationFailOver.ps1 @@ -114,7 +114,18 @@ function Set-AzEventHubGeoDRConfigurationFailOver{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\Invoke-AzEventHubFailDisasterRecoveryConfigOver_Fail' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasAsJob = $PSBoundParameters.Remove('AsJob') $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNamespace.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNamespace.ps1 index 53c8a9338cc3..d8d3d593808a 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNamespace.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNamespace.ps1 @@ -187,6 +187,21 @@ function Set-AzEventHubNamespace{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.EventHub.private\New-AzEventHubNamespace_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } process{ try{ $hasAlternateName = $PSBoundParameters.Remove('AlternateName') diff --git a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNetworkRuleSet.ps1 b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNetworkRuleSet.ps1 index 2ef6bb267436..a1057f2af3fe 100644 --- a/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNetworkRuleSet.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Set-AzEventHubNetworkRuleSet.ps1 @@ -139,7 +139,18 @@ function Set-AzEventHubNetworkRuleSet{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\New-AzEventHubNetworkRuleSet_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasPublicNetworkAccess = $PSBoundParameters.Remove('PublicNetworkAccess') $hasTrustedServiceAccessEnabled = $PSBoundParameters.Remove('TrustedServiceAccessEnabled') diff --git a/src/EventHub/EventHub.Autorest/custom/Start-AzEventHubNamespaceFailOver.ps1 b/src/EventHub/EventHub.Autorest/custom/Start-AzEventHubNamespaceFailOver.ps1 index 7b49b1f28d76..22aae6aea9bd 100644 --- a/src/EventHub/EventHub.Autorest/custom/Start-AzEventHubNamespaceFailOver.ps1 +++ b/src/EventHub/EventHub.Autorest/custom/Start-AzEventHubNamespaceFailOver.ps1 @@ -120,7 +120,18 @@ function Start-AzEventHubNamespaceFailOver{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.EventHub.private\Set-AzEventHubNamespace_FailoverExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasAsJob = $PSBoundParameters.Remove('AsJob') $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/EventHub/EventHub.Autorest/generate-info.json b/src/EventHub/EventHub.Autorest/generate-info.json index 7af6a373789a..1f4d0223bf71 100644 --- a/src/EventHub/EventHub.Autorest/generate-info.json +++ b/src/EventHub/EventHub.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "182ad16f-843d-4453-a2eb-f91c0a5e6163" + "generate_Id": "37e57dcc-9680-41ff-a019-ec549669f7b0" } diff --git a/src/EventHub/EventHub/ChangeLog.md b/src/EventHub/EventHub/ChangeLog.md index 0e1331bfa48a..529bad618cf2 100644 --- a/src/EventHub/EventHub/ChangeLog.md +++ b/src/EventHub/EventHub/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Extended Change Safety support to AutoRest-generated cmdlets. ## Version 5.6.0 * Added parameter `IPAddressType` to cmdlets 'New-AzEventHubNamespace' and 'Set-AzEventHubNamespace' diff --git a/src/Kusto/Kusto.Autorest/README.md b/src/Kusto/Kusto.Autorest/README.md index ced5c5208ac6..bcb908b96261 100644 --- a/src/Kusto/Kusto.Autorest/README.md +++ b/src/Kusto/Kusto.Autorest/README.md @@ -60,6 +60,7 @@ keep-pec-and-plr: true module-version: 0.1.4 title: Kusto subject-prefix: $(service-name) +enable-change-safety: true ``` > Folders diff --git a/src/Kusto/Kusto.Autorest/custom/New-AzKustoDatabase.ps1 b/src/Kusto/Kusto.Autorest/custom/New-AzKustoDatabase.ps1 index 2a4ddd2ad942..db51b0cc68ff 100644 --- a/src/Kusto/Kusto.Autorest/custom/New-AzKustoDatabase.ps1 +++ b/src/Kusto/Kusto.Autorest/custom/New-AzKustoDatabase.ps1 @@ -191,6 +191,22 @@ param( ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.Kusto.private\New-AzKustoDatabase_CreateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { $Parameter = [Microsoft.Azure.PowerShell.Cmdlets.Kusto.Models.ReadWriteDatabase]::new() diff --git a/src/Kusto/Kusto.Autorest/custom/Update-AzKustoDatabase.ps1 b/src/Kusto/Kusto.Autorest/custom/Update-AzKustoDatabase.ps1 index 2bdd20ee1c56..a69eca5f2c43 100644 --- a/src/Kusto/Kusto.Autorest/custom/Update-AzKustoDatabase.ps1 +++ b/src/Kusto/Kusto.Autorest/custom/Update-AzKustoDatabase.ps1 @@ -235,6 +235,22 @@ function Update-AzKustoDatabase { ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.Kusto.private\Update-AzKustoDatabase_UpdateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { diff --git a/src/Kusto/Kusto.Autorest/generate-info.json b/src/Kusto/Kusto.Autorest/generate-info.json index b6a899a6aa08..e6466fabbaa9 100644 --- a/src/Kusto/Kusto.Autorest/generate-info.json +++ b/src/Kusto/Kusto.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "878dbd25-487f-4219-aa4d-15fd88bfc546" + "generate_Id": "9be7a6ca-00b6-42ec-a4d0-5d979d69ee9b" } diff --git a/src/Kusto/Kusto/ChangeLog.md b/src/Kusto/Kusto/ChangeLog.md index fc90b243f2e1..82468295105b 100644 --- a/src/Kusto/Kusto/ChangeLog.md +++ b/src/Kusto/Kusto/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Added Change Safety support. ## Version 3.0.0 * [Upgraded code generator](https://go.microsoft.com/fwlink/?linkid=2340249) diff --git a/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/README.md b/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/README.md index aba150bb6e58..0df1d2566467 100644 --- a/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/README.md +++ b/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/README.md @@ -36,6 +36,7 @@ input-file: subject-prefix: "" module-version: 0.3.0 +enable-change-safety: true directive: # Update Location parameter available diff --git a/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/generate-info.json b/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/generate-info.json index d0f4bb05837d..0eca31347aaa 100644 --- a/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/generate-info.json +++ b/src/ManagedServiceIdentity/ManagedServiceIdentity.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "5e153379-a05b-47b5-9806-077aa515fb63" + "generate_Id": "cfc0f4c5-8aa5-4e33-bb1d-7f9734665387" } diff --git a/src/ManagedServiceIdentity/ManagedServiceIdentity/ChangeLog.md b/src/ManagedServiceIdentity/ManagedServiceIdentity/ChangeLog.md index 382c9d601e41..db01636e0f45 100644 --- a/src/ManagedServiceIdentity/ManagedServiceIdentity/ChangeLog.md +++ b/src/ManagedServiceIdentity/ManagedServiceIdentity/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Added Change Safety support. ## Version 2.0.0 * Introduced various new features by upgrading code generator. Please see details [here](https://github.com/Azure/azure-powershell/blob/main/documentation/Autorest-powershell-v4-new-features.md). diff --git a/src/Network/Network/ChangeLog.md b/src/Network/Network/ChangeLog.md index 5131c584c6f1..19a7f4b42a8d 100644 --- a/src/Network/Network/ChangeLog.md +++ b/src/Network/Network/ChangeLog.md @@ -19,6 +19,7 @@ ---> ## Upcoming Release +* Extended Change Safety support to AutoRest-generated cmdlets. * Added support for the `CAPTCHA` action in Application Gateway WAF (Web Application Firewall) policies. - Added `CAPTCHA` as an allowed value for the `-Action` parameter of custom rules (`New-AzApplicationGatewayFirewallCustomRule`) and managed rule overrides (`New-AzApplicationGatewayFirewallPolicyManagedRuleOverride`). - Added the `-CaptchaExpirationInMins` parameter to `New-AzApplicationGatewayFirewallPolicySetting`. diff --git a/src/Network/NetworkSecurityPerimeter.Autorest/README.md b/src/Network/NetworkSecurityPerimeter.Autorest/README.md index 95e285a9328a..573646a61967 100644 --- a/src/Network/NetworkSecurityPerimeter.Autorest/README.md +++ b/src/Network/NetworkSecurityPerimeter.Autorest/README.md @@ -45,6 +45,7 @@ module-version: 0.1.0 root-module-name: $(prefix).Network title: NetworkSecurityPerimeter subject-prefix: $(service-name) +enable-change-safety: true sanitize-names: true # If there are post APIs for some kinds of actions in the RP, you may need to diff --git a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAccessRule.ps1 b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAccessRule.ps1 index 6d67613baf9c..4ca2c9c9ad33 100644 --- a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAccessRule.ps1 +++ b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAccessRule.ps1 @@ -181,8 +181,22 @@ function Update-AzNetworkSecurityPerimeterAccessRule { ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.NetworkSecurityPerimeter.private\New-AzNetworkSecurityPerimeterAccessRule_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } - process { try { diff --git a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAssociation.ps1 b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAssociation.ps1 index e9117dfd803d..932f708dc6ac 100644 --- a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAssociation.ps1 +++ b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterAssociation.ps1 @@ -150,6 +150,22 @@ function Update-AzNetworkSecurityPerimeterAssociation { ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.NetworkSecurityPerimeter.private\New-AzNetworkSecurityPerimeterAssociation_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { diff --git a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLink.ps1 b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLink.ps1 index e146c8df8058..7a8267e7612d 100644 --- a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLink.ps1 +++ b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLink.ps1 @@ -151,6 +151,22 @@ function Update-AzNetworkSecurityPerimeterLink { # Add only those paramters which can be updated ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.NetworkSecurityPerimeter.private\New-AzNetworkSecurityPerimeterLink_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { diff --git a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLoggingConfiguration.ps1 b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLoggingConfiguration.ps1 index ecc528bf1370..5cb73685d18c 100644 --- a/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLoggingConfiguration.ps1 +++ b/src/Network/NetworkSecurityPerimeter.Autorest/custom/Update-AzNetworkSecurityPerimeterLoggingConfiguration.ps1 @@ -139,6 +139,22 @@ function Update-AzNetworkSecurityPerimeterLoggingConfiguration { # Add only those paramters which can be updated ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.NetworkSecurityPerimeter.private\New-AzNetworkSecurityPerimeterLoggingConfiguration_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process { try { diff --git a/src/Network/NetworkSecurityPerimeter.Autorest/generate-info.json b/src/Network/NetworkSecurityPerimeter.Autorest/generate-info.json index f698a6119fad..9ea7b3bc480b 100644 --- a/src/Network/NetworkSecurityPerimeter.Autorest/generate-info.json +++ b/src/Network/NetworkSecurityPerimeter.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "53112a50-57c5-478c-b083-0d529f1a2ec7" + "generate_Id": "22876a3f-6f36-449b-a291-2b1c423db247" } \ No newline at end of file diff --git a/src/ServiceBus/ServiceBus.Autorest/README.md b/src/ServiceBus/ServiceBus.Autorest/README.md index fa23634fce56..d3d3f62b7e22 100644 --- a/src/ServiceBus/ServiceBus.Autorest/README.md +++ b/src/ServiceBus/ServiceBus.Autorest/README.md @@ -42,6 +42,7 @@ module-version: 0.1.0 # Normally, title is the service name title: ServiceBus subject-prefix: $(service-name) +enable-change-safety: true # If there are post APIs for some kinds of actions in the RP, you may need to # uncomment following line to support viaIdentity for these post APIs diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Approve-AzServiceBusPrivateEndpointConnection.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Approve-AzServiceBusPrivateEndpointConnection.ps1 index c822e353b63a..ed53fbfa22d5 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Approve-AzServiceBusPrivateEndpointConnection.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Approve-AzServiceBusPrivateEndpointConnection.ps1 @@ -122,7 +122,18 @@ function Approve-AzServiceBusPrivateEndpointConnection{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusPrivateEndpointConnection_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasDescription = $PSBoundParameters.Remove('Description') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Deny-AzServiceBusPrivateEndpointConnection.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Deny-AzServiceBusPrivateEndpointConnection.ps1 index f5040a10ba0d..5185cfd5a66b 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Deny-AzServiceBusPrivateEndpointConnection.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Deny-AzServiceBusPrivateEndpointConnection.ps1 @@ -122,7 +122,18 @@ function Deny-AzServiceBusPrivateEndpointConnection{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusPrivateEndpointConnection_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasDescription = $PSBoundParameters.Remove('Description') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusAuthorizationRule.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusAuthorizationRule.ps1 index 42f7620ca255..183682cb8c85 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusAuthorizationRule.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusAuthorizationRule.ps1 @@ -129,7 +129,18 @@ function New-AzServiceBusAuthorizationRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusNamespaceAuthorizationRule_CreateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $null = $PSBoundParameters.Remove('WhatIf') $null = $PSBoundParameters.Remove('Confirm') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusKey.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusKey.ps1 index 4eafdc013c6b..fb58cbe36cb0 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusKey.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusKey.ps1 @@ -142,7 +142,18 @@ function New-AzServiceBusKey{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusNamespaceKey_Regenerate' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasKeyValue = $PSBoundParameters.Remove('KeyValue') $hasKeyType = $PSBoundParameters.Remove('KeyType') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusNamespace.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusNamespace.ps1 index c6cf5ac13822..13c472b77819 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusNamespace.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/New-AzServiceBusNamespace.ps1 @@ -175,7 +175,7 @@ function New-AzServiceBusNamespace{ ${GeoDataReplicationMaxReplicationLagDurationInSecond}, [Parameter(HelpMessage = "Replica locations for geo data replication. Pass an array of NamespaceReplicaLocation objects (for example from New-AzServiceBusLocationsNameObject).")] - [Microsoft.Azure.PowerShell.Cmdlets.ServiceBus.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.ServiceBus.Category('Body')] [Microsoft.Azure.PowerShell.Cmdlets.ServiceBus.Models.INamespaceReplicaLocation[]] ${GeoDataReplicationLocation}, @@ -184,6 +184,21 @@ function New-AzServiceBusNamespace{ [System.String] ${IPAddressType} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.ServiceBus.private\New-AzServiceBusNamespace_CreateExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } process{ try{ $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Remove-AzServiceBusAuthorizationRule.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Remove-AzServiceBusAuthorizationRule.ps1 index 9c47a088139f..57a4b5145879 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Remove-AzServiceBusAuthorizationRule.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Remove-AzServiceBusAuthorizationRule.ps1 @@ -136,7 +136,18 @@ function Remove-AzServiceBusAuthorizationRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\Remove-AzServiceBusNamespaceAuthorizationRule_Delete' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $null = $PSBoundParameters.Remove('WhatIf') $null = $PSBoundParameters.Remove('Confirm') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusAuthorizationRule.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusAuthorizationRule.ps1 index 93440cf600ab..e1ac93e4b549 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusAuthorizationRule.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusAuthorizationRule.ps1 @@ -142,7 +142,18 @@ function Set-AzServiceBusAuthorizationRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusNamespaceAuthorizationRule_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasRights = $PSBoundParameters.Remove('Rights') $hasAsJob = $PSBoundParameters.Remove('AsJob') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationBreakPair.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationBreakPair.ps1 index 07073ada33d0..1ad47e981f25 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationBreakPair.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationBreakPair.ps1 @@ -115,7 +115,18 @@ function Set-AzServiceBusGeoDRConfigurationBreakPair{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\Invoke-AzServiceBusBreakDisasterRecoveryConfigPairing_Break' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasAsJob = $PSBoundParameters.Remove('AsJob') $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationFailOver.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationFailOver.ps1 index defedbd728bc..d2fff87db5ea 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationFailOver.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusGeoDRConfigurationFailOver.ps1 @@ -115,7 +115,18 @@ function Set-AzServiceBusGeoDRConfigurationFailOver{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\Invoke-AzServiceBusFailDisasterRecoveryConfigOver_FailExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasAsJob = $PSBoundParameters.Remove('AsJob') $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNamespace.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNamespace.ps1 index 3348f3f291fc..099a480c5413 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNamespace.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNamespace.ps1 @@ -176,6 +176,21 @@ function Set-AzServiceBusNamespace{ [System.String] ${IPAddressType} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.ServiceBus.private\New-AzServiceBusNamespace_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } process{ try{ $hasAlternateName = $PSBoundParameters.Remove('AlternateName') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNetworkRuleSet.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNetworkRuleSet.ps1 index 3f9b3dccf094..d6149a80ee4b 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNetworkRuleSet.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusNetworkRuleSet.ps1 @@ -139,7 +139,18 @@ function Set-AzServiceBusNetworkRuleSet{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusNetworkRuleSet_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasPublicNetworkAccess = $PSBoundParameters.Remove('PublicNetworkAccess') $hasTrustedServiceAccessEnabled = $PSBoundParameters.Remove('TrustedServiceAccessEnabled') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusQueue.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusQueue.ps1 index ef40cd5dbaba..5f272f40c85b 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusQueue.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusQueue.ps1 @@ -195,6 +195,22 @@ function Set-AzServiceBusQueue{ ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.ServiceBus.private\New-AzServiceBusQueue_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process{ try{ $hasAutoDeleteOnIdle = $PSBoundParameters.Remove('AutoDeleteOnIdle') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusRule.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusRule.ps1 index 2343c980ada6..c49359ddcc31 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusRule.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusRule.ps1 @@ -218,7 +218,18 @@ function Set-AzServiceBusRule{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusRule_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasSqlExpression = $PSBoundParameters.Remove('SqlExpression') $hasSqlFilterRequiresPreprocessing = $PSBoundParameters.Remove('SqlFilterRequiresPreprocessing') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusSubscription.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusSubscription.ps1 index e8dc13a3bc13..002b255c030b 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusSubscription.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusSubscription.ps1 @@ -189,6 +189,17 @@ function Set-AzServiceBusSubscription{ ${ProxyUseDefaultCredentials} ) + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\New-AzServiceBusSubscription_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } process{ try{ $hasAutoDeleteOnIdle = $PSBoundParameters.Remove('AutoDeleteOnIdle') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusTopic.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusTopic.ps1 index 58b2fdf93eae..9c55e7a90caf 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusTopic.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Set-AzServiceBusTopic.ps1 @@ -170,6 +170,22 @@ function Set-AzServiceBusTopic{ ${ProxyUseDefaultCredentials} ) + dynamicparam { + # Change Safety: forward the wrapped generated cmdlet's dynamic parameters (-AcquirePolicyToken / -ChangeReference). + # Self-gates on enable-change-safety: the private cmdlet implements IDynamicParameters only when the module opted in. + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command -Name 'Az.ServiceBus.private\New-AzServiceBusTopic_CreateViaIdentity' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { + $dynamicParameters.Add($entry.Key, $entry.Value) + } + } + } + return $dynamicParameters + } + process{ try{ $hasAutoDeleteOnIdle = $PSBoundParameters.Remove('AutoDeleteOnIdle') diff --git a/src/ServiceBus/ServiceBus.Autorest/custom/Start-AzServiceBusNamespaceFailOver.ps1 b/src/ServiceBus/ServiceBus.Autorest/custom/Start-AzServiceBusNamespaceFailOver.ps1 index 7a9109f97cbd..8f2e0858e9fa 100644 --- a/src/ServiceBus/ServiceBus.Autorest/custom/Start-AzServiceBusNamespaceFailOver.ps1 +++ b/src/ServiceBus/ServiceBus.Autorest/custom/Start-AzServiceBusNamespaceFailOver.ps1 @@ -120,7 +120,18 @@ function Start-AzServiceBusNamespaceFailOver{ # Use the default credentials for the proxy ${ProxyUseDefaultCredentials} ) - process{ + dynamicparam { + $dynamicParameters = [System.Management.Automation.RuntimeDefinedParameterDictionary]::new() + $wrapped = Get-Command 'Az.ServiceBus.private\Set-AzServiceBusNamespace_FailoverExpanded' -ErrorAction Ignore + if ($wrapped -and [System.Management.Automation.IDynamicParameters].IsAssignableFrom($wrapped.ImplementingType)) { + $instance = [System.Activator]::CreateInstance($wrapped.ImplementingType) + foreach ($entry in $instance.GetDynamicParameters().GetEnumerator()) { + if (-not $dynamicParameters.ContainsKey($entry.Key)) { $dynamicParameters.Add($entry.Key, $entry.Value) } + } + } + return $dynamicParameters + } + process{ try{ $hasAsJob = $PSBoundParameters.Remove('AsJob') $null = $PSBoundParameters.Remove('WhatIf') diff --git a/src/ServiceBus/ServiceBus.Autorest/generate-info.json b/src/ServiceBus/ServiceBus.Autorest/generate-info.json index 1423a409112c..14c5740cefa9 100644 --- a/src/ServiceBus/ServiceBus.Autorest/generate-info.json +++ b/src/ServiceBus/ServiceBus.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "86c39454-f25e-40b0-b299-0d10ea55953c" + "generate_Id": "d42664e3-3ae4-4daf-a410-fba6f9958c4e" } diff --git a/src/ServiceBus/ServiceBus/ChangeLog.md b/src/ServiceBus/ServiceBus/ChangeLog.md index 441ce745270b..809558ed775b 100644 --- a/src/ServiceBus/ServiceBus/ChangeLog.md +++ b/src/ServiceBus/ServiceBus/ChangeLog.md @@ -19,6 +19,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Extended Change Safety support to AutoRest-generated cmdlets. ## Version 4.3.0 * Added parameters 'GeoDataReplicationMaxReplicationLagDurationInSecond', 'GeoDataReplicationLocation', and 'IPAddressType' to cmdlets 'New-AzServiceBusNamespace' and 'Set-AzServiceBusNamespace' From b85c3e242641abc3598a3e6029d297e5eeac3a0a Mon Sep 17 00:00:00 2001 From: Yang An Date: Tue, 8 Sep 2026 16:05:11 +1000 Subject: [PATCH 2/3] Clarify Change Safety changelog entries --- src/ContainerRegistry/ContainerRegistry/ChangeLog.md | 2 +- src/EventHub/EventHub/ChangeLog.md | 2 +- src/Network/Network/ChangeLog.md | 2 +- src/ServiceBus/ServiceBus/ChangeLog.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ContainerRegistry/ContainerRegistry/ChangeLog.md b/src/ContainerRegistry/ContainerRegistry/ChangeLog.md index 95422408690b..8d66c673eb63 100644 --- a/src/ContainerRegistry/ContainerRegistry/ChangeLog.md +++ b/src/ContainerRegistry/ContainerRegistry/ChangeLog.md @@ -18,7 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release -* Extended Change Safety support to AutoRest-generated cmdlets. +* Added Change Safety support for additional cmdlets. ## Version 5.1.0 * Added ChangeSafety Support diff --git a/src/EventHub/EventHub/ChangeLog.md b/src/EventHub/EventHub/ChangeLog.md index 529bad618cf2..ec175fff137f 100644 --- a/src/EventHub/EventHub/ChangeLog.md +++ b/src/EventHub/EventHub/ChangeLog.md @@ -18,7 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release -* Extended Change Safety support to AutoRest-generated cmdlets. +* Added Change Safety support for additional cmdlets. ## Version 5.6.0 * Added parameter `IPAddressType` to cmdlets 'New-AzEventHubNamespace' and 'Set-AzEventHubNamespace' diff --git a/src/Network/Network/ChangeLog.md b/src/Network/Network/ChangeLog.md index 19a7f4b42a8d..b1ce8e87f120 100644 --- a/src/Network/Network/ChangeLog.md +++ b/src/Network/Network/ChangeLog.md @@ -19,7 +19,7 @@ ---> ## Upcoming Release -* Extended Change Safety support to AutoRest-generated cmdlets. +* Added Change Safety support for additional cmdlets. * Added support for the `CAPTCHA` action in Application Gateway WAF (Web Application Firewall) policies. - Added `CAPTCHA` as an allowed value for the `-Action` parameter of custom rules (`New-AzApplicationGatewayFirewallCustomRule`) and managed rule overrides (`New-AzApplicationGatewayFirewallPolicyManagedRuleOverride`). - Added the `-CaptchaExpirationInMins` parameter to `New-AzApplicationGatewayFirewallPolicySetting`. diff --git a/src/ServiceBus/ServiceBus/ChangeLog.md b/src/ServiceBus/ServiceBus/ChangeLog.md index 809558ed775b..e1c240079d4e 100644 --- a/src/ServiceBus/ServiceBus/ChangeLog.md +++ b/src/ServiceBus/ServiceBus/ChangeLog.md @@ -19,7 +19,7 @@ - Additional information about change #1 --> ## Upcoming Release -* Extended Change Safety support to AutoRest-generated cmdlets. +* Added Change Safety support for additional cmdlets. ## Version 4.3.0 * Added parameters 'GeoDataReplicationMaxReplicationLagDurationInSecond', 'GeoDataReplicationLocation', and 'IPAddressType' to cmdlets 'New-AzServiceBusNamespace' and 'Set-AzServiceBusNamespace' From 9ecab0eddc2f7090c47f64f5d1ef2483d0113016 Mon Sep 17 00:00:00 2001 From: Yang An Date: Wed, 9 Sep 2026 16:56:30 +1000 Subject: [PATCH 3/3] Enable Change Safety for two additional modules --- .../custom/Invoke-AzContainerInstanceCommand.ps1 | 8 ++++---- src/Monitor/DataCollectionRule.Autorest/README.md | 1 + .../DataCollectionRule.Autorest/generate-info.json | 2 +- src/Monitor/Monitor/ChangeLog.md | 1 + .../PostgreSqlFlexibleServer.Autorest/generate-info.json | 2 +- .../PostgreSqlFlexibleServer.Autorest/tspconfig.yaml | 1 + .../PostgreSqlFlexibleServer/ChangeLog.md | 1 + 7 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 b/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 index 3f072a9f1de4..6175accd5b31 100644 --- a/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 +++ b/src/ContainerInstance/ContainerInstance.Autorest/custom/Invoke-AzContainerInstanceCommand.ps1 @@ -144,10 +144,10 @@ function Invoke-AzContainerInstanceCommand { return $dynamicParameters } - process { - try { - Az.ContainerInstance.internal\Invoke-AzContainerInstanceCommand @PSBoundParameters - } catch { + process { + try { + Az.ContainerInstance.internal\Invoke-AzContainerInstanceCommand @PSBoundParameters + } catch { throw } } diff --git a/src/Monitor/DataCollectionRule.Autorest/README.md b/src/Monitor/DataCollectionRule.Autorest/README.md index c579efe0bdbd..7581f4d0e70c 100644 --- a/src/Monitor/DataCollectionRule.Autorest/README.md +++ b/src/Monitor/DataCollectionRule.Autorest/README.md @@ -43,6 +43,7 @@ title: DataCollectionRule module-version: 0.1.0 namespace: Microsoft.Azure.PowerShell.Cmdlets.Monitor.DataCollection subject-prefix: '' +enable-change-safety: true directive: # custom required body diff --git a/src/Monitor/DataCollectionRule.Autorest/generate-info.json b/src/Monitor/DataCollectionRule.Autorest/generate-info.json index 53aabc2ca578..5bae0ad65570 100644 --- a/src/Monitor/DataCollectionRule.Autorest/generate-info.json +++ b/src/Monitor/DataCollectionRule.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "38556130-4f1d-44b1-9a41-249e94064c5b" + "generate_Id": "3273a627-c9f6-429a-81cd-eb5a7a8e8a65" } diff --git a/src/Monitor/Monitor/ChangeLog.md b/src/Monitor/Monitor/ChangeLog.md index 11c50c829209..0a8660b462fb 100644 --- a/src/Monitor/Monitor/ChangeLog.md +++ b/src/Monitor/Monitor/ChangeLog.md @@ -19,6 +19,7 @@ --> ## Upcoming Release +* Added Change Safety support for data collection rule cmdlets. ## Version 8.0.0 * Added ChangeSafety Support diff --git a/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/generate-info.json b/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/generate-info.json index 5e3cf390d827..5e3dd6817437 100644 --- a/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/generate-info.json +++ b/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/generate-info.json @@ -1,3 +1,3 @@ { - "generate_Id": "07e2ee61-b31a-4bac-a32c-88e576f0fe93" + "generate_Id": "d61be785-e9cd-472e-9cfb-ae67d9e03f80" } diff --git a/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/tspconfig.yaml b/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/tspconfig.yaml index 0fdd5e5d8867..1343c00620c8 100644 --- a/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/tspconfig.yaml +++ b/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer.Autorest/tspconfig.yaml @@ -8,6 +8,7 @@ options: module-version: 1.0.0 prefix: "Az" subject-prefix: "PostgreSqlFlexibleServer" + enable-change-safety: true service-name: PostgreSqlFlexibleServer module-name: "{prefix}.{service-name}" output-folder: "{output-dir}" diff --git a/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer/ChangeLog.md b/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer/ChangeLog.md index 47be8117cc99..507dfad3a8d3 100644 --- a/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer/ChangeLog.md +++ b/src/PostgreSqlFlexibleServer/PostgreSqlFlexibleServer/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Added Change Safety support. ## Version 0.1.0 * First preview release for module Az.PostgreSqlFlexibleServer