[PS] Migrate StackHCI module to autorest v4#28363
Conversation
| Thanks for your contribution! The pull request validation has started. Please revisit this comment for updated status. |
There was a problem hiding this comment.
Pull Request Overview
This PR migrates the StackHCI module from autorest v3 to autorest v4, updating generated PowerShell cmdlets and their documentation. The migration brings several structural changes to the module's API surface.
Key changes include:
- Updated type definitions from strongly-typed enums to string types for better flexibility
- Modified parameter sets and method signatures across cmdlets
- Added new JSON input parameter support for several cmdlets
- Restructured identity and authentication parameter handling
Reviewed Changes
Copilot reviewed 83 out of 84 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| help/*.md | Updated cmdlet documentation with new parameter types and syntax changes |
| StackHCI.sln | Updated project GUID references for autorest v4 compatibility |
| Az.StackHCI.psd1 | Added new cmdlet exports and updated module metadata |
| test/utils.ps1 | Fixed variable references in test utility functions |
| docs/*.md | Updated autorest documentation with new type definitions |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
|
waiting the service team for recording test |
|
/azp run |
|
Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command. |
|
To the author of the pull request, |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
…e/azure-powershell into jiaseng/main/StackHCL-v4
| ResourceGroupName: Resource Group | ||
| - from: source-file-csharp | ||
| where: $ | ||
| transform: $ = $.replace(/"Get the get run for a specified update"/g, '"Get the Update run for a specified update"'); | ||
| - from: source-file-csharp | ||
| where: $ | ||
| transform: $ = $.replace(/"Get all get summaries under the HCI cluster"/g, '"Get all Update summaries under the HCI cluster"'); | ||
| - from: source-file-csharp | ||
| where: $ | ||
| transform: $ = $.replace(/"Delete specified delete Run"/g, '"Delete specified Update Run"'); | ||
| - from: source-file-csharp | ||
| where: $ | ||
| transform: $ = $.replace(/"Delete delete Summaries"/g, '"Delete Update Summaries"'); | ||
| - from: source-file-csharp | ||
| where: $ | ||
| transform: $ = $.replace(/"Put put runs for a specified update"/g, '"Put Update runs for a specified update"'); |
There was a problem hiding this comment.
The source-file-csharp transform directives were added without any explanatory comments. In this repo’s AutoRest README.md files, each directive/transform should be annotated with a short “why” so future maintainers know what strings are being corrected and under what conditions it’s safe to change/remove them.
| ResourceGroupName: Resource Group | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Get the get run for a specified update"/g, '"Get the Update run for a specified update"'); | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Get all get summaries under the HCI cluster"/g, '"Get all Update summaries under the HCI cluster"'); | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Delete specified delete Run"/g, '"Delete specified Update Run"'); | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Delete delete Summaries"/g, '"Delete Update Summaries"'); | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Put put runs for a specified update"/g, '"Put Update runs for a specified update"'); | |
| ResourceGroupName: Resource Group | |
| # Correct a duplicated verb in the generated operation description for update runs. | |
| # Safe to remove when the upstream spec or generator no longer emits "Get the get run for a specified update". | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Get the get run for a specified update"/g, '"Get the Update run for a specified update"'); | |
| # Correct a duplicated verb in the generated operation description for update summaries. | |
| # Safe to remove when the upstream spec or generator no longer emits "Get all get summaries under the HCI cluster". | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Get all get summaries under the HCI cluster"/g, '"Get all Update summaries under the HCI cluster"'); | |
| # Correct a duplicated verb in the generated delete description for update runs. | |
| # Safe to remove when the upstream spec or generator no longer emits "Delete specified delete Run". | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Delete specified delete Run"/g, '"Delete specified Update Run"'); | |
| # Correct a duplicated verb in the generated delete description for update summaries. | |
| # Safe to remove when the upstream spec or generator no longer emits "Delete delete Summaries". | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Delete delete Summaries"/g, '"Delete Update Summaries"'); | |
| # Correct a duplicated verb in the generated create/update description for update runs. | |
| # Safe to remove when the upstream spec or generator no longer emits "Put put runs for a specified update". | |
| - from: source-file-csharp | |
| where: $ | |
| transform: $ = $.replace(/"Put put runs for a specified update"/g, '"Put Update runs for a specified update"'); | |
| # Correct a duplicated verb in the generated create/update description for update summaries. | |
| # Safe to remove when the upstream spec or generator no longer emits "Put put summaries under the HCI cluster". |
| * 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). | ||
| * Updated preannouncement breaking changes date to May 2026. |
There was a problem hiding this comment.
This ChangeLog entry is very vague (“various new features by upgrading code generator”) and doesn’t clearly tell users what changed in their day-to-day usage (for example, new parameters/parameter sets, behavior changes, or any breaking changes). Consider rewriting it to be specific about the user-visible impact of migrating StackHCI to AutoRest PowerShell v4, and add a related issue reference if one exists.
| Describe 'New-AzStackHciArcSettingIdentity' { | ||
| It 'Create' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
|
|
||
| It 'CreateViaIdentityCluster' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
|
|
||
| It 'CreateViaIdentity' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } |
There was a problem hiding this comment.
These tests are currently placeholders (all It blocks are -skip and only assert NotImplementedException isn’t thrown), so they don’t provide coverage for the new cmdlet. Please add at least one real playback test (and recording) that exercises the primary parameter set(s) for New-AzStackHciArcSettingIdentity.
| Describe 'Invoke-MSIFlow' { | ||
| It '__AllParameterSets' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
| } |
There was a problem hiding this comment.
This newly added test file only contains skipped placeholder tests, so it doesn’t validate any behavior. Either add a real test scenario (with recording) or remove the file until the cmdlet flow is testable to avoid giving the impression of coverage.
| Describe 'Invoke-MSIUnregistrationFlow' { | ||
| It '__AllParameterSets' -skip { | ||
| { throw [System.NotImplementedException] } | Should -Not -Throw | ||
| } | ||
| } |
There was a problem hiding this comment.
This newly added test file only contains skipped placeholder tests, so it doesn’t validate any behavior. Either add a real test scenario (with recording) or remove the file until the cmdlet flow is testable to avoid giving the impression of coverage.
| 'Invoke-AzStackHciConsentAndInstallDefaultExtension', | ||
| 'Invoke-AzStackHciExtendClusterSoftwareAssuranceBenefit', | ||
| 'Invoke-AzStackHciUpdate', 'New-AzStackHciArcSetting', | ||
| 'New-AzStackHciCluster', 'New-AzStackHciDeploymentSetting', | ||
| 'New-AzStackHciEdgeDevice', 'New-AzStackHciExtension', | ||
| 'New-AzStackHciSecuritySetting', 'Register-AzStackHCI', | ||
| 'Remove-AzStackHciArcSetting', 'Remove-AzStackHciCluster', | ||
| 'Remove-AzStackHciDeploymentSetting', 'Remove-AzStackHciEdgeDevice', | ||
| 'Remove-AzStackHciExtension', 'Remove-AzStackHCIRemoteSupport', | ||
| 'New-AzStackHciArcSettingIdentity', 'New-AzStackHciCluster', | ||
| 'New-AzStackHciDeploymentSetting', 'New-AzStackHciEdgeDevice', | ||
| 'New-AzStackHciExtension', 'New-AzStackHciSecuritySetting', | ||
| 'Register-AzStackHCI', 'Remove-AzStackHciArcSetting', | ||
| 'Remove-AzStackHciCluster', 'Remove-AzStackHciDeploymentSetting', | ||
| 'Remove-AzStackHciEdgeDevice', 'Remove-AzStackHciExtension', |
There was a problem hiding this comment.
New-AzStackHciArcSettingIdentity is being added to FunctionsToExport, but there’s no corresponding implementation in the generated StackHCI module scripts (no matching function/cmdlet definition found under generated/StackHCI/StackHCI.Autorest). This will leave the module exporting a non-existent command (and help/docs/tests refer to it). Please ensure the generator actually emits this cmdlet (or remove it from the manifest/help until it exists).
| ### CreateExpanded (Default) | ||
| ``` | ||
| New-AzStackHciCluster -Name <String> -ResourceGroupName <String> [-SubscriptionId <String>] -Location <String> | ||
| [-AadApplicationObjectId <String>] [-AadClientId <String>] [-AadServicePrincipalObjectId <String>] | ||
| [-AadTenantId <String>] [-CloudManagementEndpoint <String>] | ||
| [-DesiredPropertyDiagnosticLevel <DiagnosticLevel>] | ||
| [-DesiredPropertyWindowsServerSubscription <WindowsServerSubscription>] | ||
| [-IdentityType <ManagedServiceIdentityType>] [-IdentityUserAssignedIdentity <Hashtable>] | ||
| [-SoftwareAssurancePropertySoftwareAssuranceIntent <SoftwareAssuranceIntent>] [-Tag <Hashtable>] | ||
| [-DefaultProfile <PSObject>] [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| [-AadTenantId <String>] [-CloudManagementEndpoint <String>] [-DesiredPropertyDiagnosticLevel <String>] | ||
| [-DesiredPropertyWindowsServerSubscription <String>] [-EnableSystemAssignedIdentity] | ||
| [-SoftwareAssurancePropertySoftwareAssuranceIntent <String>] [-Tag <Hashtable>] | ||
| [-UserAssignedIdentity <String[]>] [-DefaultProfile <PSObject>] [-WhatIf] | ||
| [-Confirm] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### CreateViaJsonFilePath | ||
| ``` | ||
| New-AzStackHciCluster -Name <String> -ResourceGroupName <String> [-SubscriptionId <String>] | ||
| -JsonFilePath <String> [-DefaultProfile <PSObject>] [-WhatIf] [-Confirm] | ||
| [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### CreateViaJsonString | ||
| ``` | ||
| New-AzStackHciCluster -Name <String> -ResourceGroupName <String> [-SubscriptionId <String>] | ||
| -JsonString <String> [-DefaultProfile <PSObject>] [-WhatIf] [-Confirm] | ||
| [<CommonParameters>] |
There was a problem hiding this comment.
This help file documents CreateViaJsonFilePath / CreateViaJsonString, EnableSystemAssignedIdentity, and UserAssignedIdentity, but the current generated module implementation of New-AzStackHciCluster still exposes IdentityType / IdentityUserAssignedIdentity and does not include any *ViaJson* parameter sets (see generated/StackHCI/StackHCI.Autorest/exports/New-AzStackHciCluster.ps1). Please regenerate/update the cmdlet implementation or adjust the help so it matches the actual parameters.
| ### ValidateExpanded (Default) | ||
| ``` | ||
| Test-AzStackHciEdgeDevice -Name <String> -ResourceUri <String> -EdgeDeviceId <String[]> | ||
| [-AdditionalInfo <String>] [-DefaultProfile <PSObject>] [-AsJob] [-NoWait] | ||
| [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### Validate | ||
| ### ValidateViaJsonString | ||
| ``` | ||
| Test-AzStackHciEdgeDevice -Name <String> -ResourceUri <String> -ValidateRequest <IValidateRequest> | ||
| Test-AzStackHciEdgeDevice -Name <String> -ResourceUri <String> -JsonString <String> | ||
| [-DefaultProfile <PSObject>] [-AsJob] [-NoWait] [-WhatIf] [-Confirm] | ||
| [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### ValidateViaIdentityExpanded | ||
| ### ValidateViaJsonFilePath | ||
| ``` | ||
| Test-AzStackHciEdgeDevice -InputObject <IStackHciIdentity> -EdgeDeviceId <String[]> [-AdditionalInfo <String>] | ||
| Test-AzStackHciEdgeDevice -Name <String> -ResourceUri <String> -JsonFilePath <String> | ||
| [-DefaultProfile <PSObject>] [-AsJob] [-NoWait] [-WhatIf] [-Confirm] | ||
| [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### ValidateViaIdentity | ||
| ### ValidateViaIdentityExpanded | ||
| ``` | ||
| Test-AzStackHciEdgeDevice -InputObject <IStackHciIdentity> -ValidateRequest <IValidateRequest> | ||
| Test-AzStackHciEdgeDevice -InputObject <IStackHciIdentity> -EdgeDeviceId <String[]> [-AdditionalInfo <String>] | ||
| [-DefaultProfile <PSObject>] [-AsJob] [-NoWait] [-WhatIf] [-Confirm] | ||
| [<CommonParameters>] |
There was a problem hiding this comment.
This help file documents EdgeDeviceId/AdditionalInfo and ValidateViaJsonString / ValidateViaJsonFilePath parameter sets, but the current generated implementation of Test-AzStackHciEdgeDevice still uses a -ValidateRequest body parameter and does not include any *ViaJson* parameter sets (see generated/StackHCI/StackHCI.Autorest/exports/Test-AzStackHciEdgeDevice.ps1). Please regenerate/update the cmdlet implementation or adjust the help so it matches the actual parameters.
| ### UpdateExpanded (Default) | ||
| ``` | ||
| Update-AzStackHciCluster -Name <String> -ResourceGroupName <String> [-SubscriptionId <String>] | ||
| [-AadTenantId <String>] [-CloudManagementEndpoint <String>] | ||
| [-DesiredPropertyDiagnosticLevel <DiagnosticLevel>] | ||
| [-DesiredPropertyWindowsServerSubscription <WindowsServerSubscription>] | ||
| [-IdentityType <ManagedServiceIdentityType>] [-IdentityUserAssignedIdentity <Hashtable>] [-Tag <Hashtable>] | ||
| [-DefaultProfile <PSObject>] [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| [-AadApplicationObjectId <String>] [-AadServicePrincipalObjectId <String>] [-AadTenantId <String>] | ||
| [-CloudManagementEndpoint <String>] [-DesiredPropertyDiagnosticLevel <String>] | ||
| [-DesiredPropertyWindowsServerSubscription <String>] [-EnableSystemAssignedIdentity <Boolean>] | ||
| [-SoftwareAssurancePropertySoftwareAssuranceIntent <String>] [-Tag <Hashtable>] | ||
| [-UserAssignedIdentity <String[]>] [-DefaultProfile <PSObject>] [-WhatIf] | ||
| [-Confirm] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### UpdateViaIdentityExpanded | ||
| ``` | ||
| Update-AzStackHciCluster -InputObject <IStackHciIdentity> [-AadTenantId <String>] | ||
| [-CloudManagementEndpoint <String>] [-DesiredPropertyDiagnosticLevel <DiagnosticLevel>] | ||
| [-DesiredPropertyWindowsServerSubscription <WindowsServerSubscription>] | ||
| [-IdentityType <ManagedServiceIdentityType>] [-IdentityUserAssignedIdentity <Hashtable>] [-Tag <Hashtable>] | ||
| [-DefaultProfile <PSObject>] [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| Update-AzStackHciCluster -InputObject <IStackHciIdentity> [-AadApplicationObjectId <String>] | ||
| [-AadServicePrincipalObjectId <String>] [-AadTenantId <String>] [-CloudManagementEndpoint <String>] | ||
| [-DesiredPropertyDiagnosticLevel <String>] [-DesiredPropertyWindowsServerSubscription <String>] | ||
| [-EnableSystemAssignedIdentity <Boolean>] [-SoftwareAssurancePropertySoftwareAssuranceIntent <String>] | ||
| [-Tag <Hashtable>] [-UserAssignedIdentity <String[]>] [-DefaultProfile <PSObject>] | ||
| [-WhatIf] [-Confirm] [<CommonParameters>] |
There was a problem hiding this comment.
This help file documents new parameters (EnableSystemAssignedIdentity, UserAssignedIdentity) and changes several parameter types to System.String, but the current generated implementation of Update-AzStackHciCluster still exposes the older IdentityType / IdentityUserAssignedIdentity parameters and enum-typed parameters (see generated/StackHCI/StackHCI.Autorest/exports/Update-AzStackHciCluster.ps1). Please ensure the cmdlet implementation is regenerated/updated alongside the help so the published help matches the actual signature.
| # New-AzStackHciArcSettingIdentity | ||
|
|
||
| ## SYNOPSIS | ||
| Create Aad identity for arc settings. | ||
|
|
||
| ## SYNTAX | ||
|
|
||
| ### Create (Default) | ||
| ``` | ||
| New-AzStackHciArcSettingIdentity -ArcSettingName <String> -ClusterName <String> -ResourceGroupName <String> | ||
| [-SubscriptionId <String>] [-DefaultProfile <PSObject>] [-AsJob] [-NoWait] | ||
| [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### CreateViaIdentityCluster | ||
| ``` | ||
| New-AzStackHciArcSettingIdentity -ArcSettingName <String> -ClusterInputObject <IStackHciIdentity> | ||
| [-DefaultProfile <PSObject>] [-AsJob] [-NoWait] [-WhatIf] [-Confirm] | ||
| [<CommonParameters>] | ||
| ``` | ||
|
|
||
| ### CreateViaIdentity | ||
| ``` | ||
| New-AzStackHciArcSettingIdentity -InputObject <IStackHciIdentity> [-DefaultProfile <PSObject>] [-AsJob] | ||
| [-NoWait] [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| ``` |
There was a problem hiding this comment.
This help file describes the new New-AzStackHciArcSettingIdentity cmdlet, but there is no corresponding implementation currently generated under generated/StackHCI/StackHCI.Autorest (no exported function/cmdlet found). Please ensure the cmdlet exists in the module before adding help content, otherwise users will see help for a command that isn’t available.
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
| Describe 'Update-AzStackHciCluster' { | ||
| It 'UpdateExpanded' { | ||
| It 'UpdateExpanded' -skip{ | ||
| Update-AzStackHciCluster -ResourceGroupName $env.ResourceGroup -Name $env.ClusterName -DesiredPropertyDiagnosticLevel "Enhanced" -DesiredPropertyWindowsServerSubscription "Disabled" | ||
| } |
There was a problem hiding this comment.
The Pester It block uses -skip{ without a separating space, which will be parsed incorrectly and can break the test file. Use -Skip { ... } (with a space) to skip the test while still providing the test body scriptblock, consistent with other tests in this module.
| ### UpdateExpanded (Default) | ||
| ``` | ||
| Update-AzStackHciCluster -Name <String> -ResourceGroupName <String> [-SubscriptionId <String>] | ||
| [-AadTenantId <String>] [-CloudManagementEndpoint <String>] | ||
| [-DesiredPropertyDiagnosticLevel <DiagnosticLevel>] | ||
| [-DesiredPropertyWindowsServerSubscription <WindowsServerSubscription>] | ||
| [-IdentityType <ManagedServiceIdentityType>] [-IdentityUserAssignedIdentity <Hashtable>] [-Tag <Hashtable>] | ||
| [-DefaultProfile <PSObject>] [-WhatIf] [-Confirm] [<CommonParameters>] | ||
| [-AadApplicationObjectId <String>] [-AadServicePrincipalObjectId <String>] [-AadTenantId <String>] | ||
| [-CloudManagementEndpoint <String>] [-DesiredPropertyDiagnosticLevel <String>] | ||
| [-DesiredPropertyWindowsServerSubscription <String>] [-EnableSystemAssignedIdentity <Boolean>] | ||
| [-SoftwareAssurancePropertySoftwareAssuranceIntent <String>] [-Tag <Hashtable>] | ||
| [-UserAssignedIdentity <String[]>] [-DefaultProfile <PSObject>] [-WhatIf] | ||
| [-Confirm] [<CommonParameters>] |
There was a problem hiding this comment.
This help markdown appears to describe a different parameter surface than the current generated proxy cmdlet (e.g., -AadApplicationObjectId, -EnableSystemAssignedIdentity, and DesiredPropertyDiagnosticLevel as String). Please regenerate the help from the actual exported cmdlet (or include the corresponding regenerated cmdlet/proxy changes in this PR) so the documented parameters and output types match what users can invoke.
| ## OUTPUTS | ||
|
|
||
| ### Microsoft.Azure.PowerShell.Cmdlets.StackHCI.Models.Api20240401.ICluster | ||
| ### Microsoft.Azure.PowerShell.Cmdlets.StackHCI.Models.ICluster | ||
|
|
There was a problem hiding this comment.
The documented output type was changed to Microsoft.Azure.PowerShell.Cmdlets.StackHCI.Models.ICluster, but the shipped proxy cmdlets in this repo currently output versioned models (e.g., Models.Api20240401.ICluster). Please ensure the help output type matches the actual cmdlet output type after the migration to avoid confusing users/tools.
| # Remove the unexpanded parameter set | ||
| # Generate Create variant for "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureStackHCI/clusters/{clusterName}/arcSettings/{arcSettingName}/createArcIdentity" | ||
| - where: | ||
| subject: ArcSetting$|Cluster|DeploymentSetting|EdgeDevice|Extension|SecuritySetting|Update$|UpdateRun|UpdateSummary | ||
| variant: ^(Create|Update)(?!.*?(Expanded|JsonFilePath|JsonString))|^CreateViaIdentityExpanded$ | ||
| remove: true | ||
| - where: |
There was a problem hiding this comment.
The comment says "Generate Create variant" but the directive is removing variants (remove: true). Please adjust the comment to accurately describe why these variants are being removed/kept (Expanded/Json*), so future maintainers understand the intent.
| ## SYNOPSIS | ||
| Create a EdgeDevice | ||
| Update a EdgeDevice | ||
|
|
There was a problem hiding this comment.
Grammar: "Update a EdgeDevice" should use "an" (e.g., "Update an EdgeDevice") in both SYNOPSIS and DESCRIPTION.
| ## OUTPUTS | ||
|
|
||
| ### System.String | ||
| ### Microsoft.Azure.PowerShell.Cmdlets.StackHCI.Models.IValidateResponse | ||
|
|
There was a problem hiding this comment.
The documented output type was changed from System.String to Microsoft.Azure.PowerShell.Cmdlets.StackHCI.Models.IValidateResponse, but the current generated proxy cmdlet in this repo still declares [OutputType([System.String])]. Please align the help OUTPUTS section with the actual cmdlet output type (or include the regenerated cmdlet/proxy changes that update the output type).
Description
Preannouncement PR:
Mandatory Checklist
Please choose the target release of Azure PowerShell. (⚠️ Target release is a different concept from API readiness. Please click below links for details.)
Check this box to confirm: I have read the Submitting Changes section of
CONTRIBUTING.mdand reviewed the following information:ChangeLog.mdfile(s) appropriatelysrc/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.## Upcoming Releaseheader in the past tense.ChangeLog.mdif no new release is required, such as fixing test case only.