Skip to content

Upgrade Quota service from API version 2023-02-01 to 2025-09-01 stable#28902

Merged
isra-fel merged 64 commits intoAzure:mainfrom
RenSilvaAU:resilv/group-quota-sept
Feb 25, 2026
Merged

Upgrade Quota service from API version 2023-02-01 to 2025-09-01 stable#28902
isra-fel merged 64 commits intoAzure:mainfrom
RenSilvaAU:resilv/group-quota-sept

Conversation

@RenSilvaAU
Copy link
Copy Markdown
Contributor

@RenSilvaAU RenSilvaAU commented Nov 19, 2025

Description

This PR upgrades the Az.Quota module from API version 2023-02-01 to 2025-09-01 stable, introducing comprehensive Group Quota management capabilities at the management group level. This is a significant enhancement that enables centralized quota governance across multiple subscriptions.

Key Changes:

  • API Version Upgrade: Migrated from 2023-02-01 to 2025-09-01 stable

  • New Group Quota Cmdlets: Added 10+ new cmdlets for CRUD operations on group quotas, subscriptions, location settings, limits, allocations, and usage

  • Documentation: Generated complete help documentation for all new cmdlets

Changes:

  • Added 10+ new cmdlets for managing group quotas at the management group level:
    • Group quota CRUD operations (Get/New/Update/Remove-AzQuotaGroupQuota)
    • Subscription associations (Get/New/Update/Remove-AzQuotaGroupQuotaSubscription)
    • Quota limit and allocation requests
    • Usage and location settings management
  • Upgraded from API version 2023-02-01 to 2025-09-01 stable
  • Updated AutoRest directives for proper verb mapping (New for PUT-only operations)
  • All tests passing with comprehensive recording files
  • Generated help documentation for all new cmdlets

This enables Azure customers to manage quotas across multiple subscriptions at the management group level for improved governance and resource allocation.

Mandatory Checklist

  • SHOULD updated ChangeLog.md file(s) appropriately
    • Update src/{{SERVICE}}/{{SERVICE}}/ChangeLog.md.
      • A snippet outlining the change(s) made in the PR should be written under the ## Upcoming Release header in the past tense.
    • Should not change ChangeLog.md if no new release is required, such as fixing test case only.
  • SHOULD regenerate markdown help files if there is cmdlet API change. Instruction
  • SHOULD have proper test coverage for changes in pull request.
  • SHOULD NOT adjust version of module manually in pull request

@azure-client-tools-bot-prd
Copy link
Copy Markdown

Thanks for your contribution! The pull request validation has started. Please revisit this comment for updated status.

@RenSilvaAU RenSilvaAU self-assigned this Nov 19, 2025
@RenSilvaAU RenSilvaAU requested a review from dolauli November 19, 2025 22:32
@notyashhh
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown
Contributor

Azure Pipelines successfully started running 3 pipeline(s).

Copy link
Copy Markdown
Member

@notyashhh notyashhh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks Great! Also, can you please add changelog under the ##Upcoming Changes section?

In file Quota/Quota/Changelog.md

@RenSilvaAU
Copy link
Copy Markdown
Contributor Author

Hi I have a few small comments. Thank you.

  1. The generated/ folder doesn't need to be checked in. Please restore them from your PR.
  2. Please see my inline comments as well.

@isra-fel - restored generated/ folder from main

@isra-fel
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown
Contributor

Azure Pipelines successfully started running 3 pipeline(s).

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 110 out of 144 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (3)

src/Quota/Quota.Autorest/test/env.json:1

  • This commits what appear to be real Subscription/Tenant GUIDs into the repo. Test env files in shared repos should typically use placeholders (or be excluded) to avoid leaking org tenant/subscription identifiers; consider reverting to template values (e.g., {subId} / {tenantId}) and sourcing real IDs from CI secrets/env vars at runtime.
    src/Quota/Quota.Autorest/test/Get-AzQuotaGroupQuotaSubscriptionAllocationRequest.Tests.ps1:1
  • This test will always pass regardless of cmdlet behavior because both the try and catch paths assert $true. Please convert this into a real assertion (e.g., verify -Not -Throw, or assert on returned objects when available, or explicitly Skip on known service limitations instead of unconditional success).
    src/Quota/Quota.Autorest/test/Update-AzQuotaGroupQuotaSubscriptionAllocationRequest.Tests.ps1:1
  • On exception, the test logs and then succeeds without asserting anything. If the exception is expected/allowed, prefer asserting the specific exception type/message (or explicitly Skip in playback) so regressions don’t get silently ignored; otherwise, rethrow so failures are visible.

Comment on lines +11 to +13
Gets the GroupQuotas usages and limits(quota).
Location is required paramter.

Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct the spelling of 'paramter' to 'parameter'.

Copilot uses AI. Check for mistakes.
Copilot AI review requested due to automatic review settings February 17, 2026 04:44
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 109 out of 143 changed files in this pull request and generated 6 comments.

Comment on lines +3 to +6
$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1'
if (-Not (Test-Path -Path $loadEnvPath)) {
$loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1'
}
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fallback path uses a Windows-only backslash ('..\loadEnv.ps1'). On non-Windows runners, this can resolve to a non-existent path and break test discovery/execution. Use Join-Path $PSScriptRoot '..' (or Resolve-Path) so the tests are cross-platform.

Copilot uses AI. Check for mistakes.
Comment on lines 81 to +87
### -Filter
| Field | Supported operators
| Field | Supported operators
|---------------------|------------------------

|requestSubmitTime | ge, le, eq, gt, lt
|provisioningState eq {QuotaRequestState}
|resourceName eq {resourceName}
|provisioningState eq {QuotaRequestState}
|resourceName eq {resourceName}
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The markdown table under -Filter is malformed: the rows for provisioningState/resourceName are missing column separators, so it won't render as an actual table and is hard to read. Update the table so each row uses proper | col1 | col2 | formatting.

Copilot uses AI. Check for mistakes.
Comment on lines 19 to 24
### UpdateExpanded (Default)
```
Update-AzQuota -ResourceName <String> -Scope <String> [-Limit <ILimitJsonObject>] [-Name <String>]
Update-AzQuota -ResourceName <String> -Scope <String> [-Limit <ILimitJsonObject>] [-NameValue <String>]
[-ResourceType <String>] [-DefaultProfile <PSObject>] [-AsJob] [-NoWait]
[-WhatIf] [-Confirm] [<CommonParameters>]
```
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The help content documents an optional parameter as -NameValue, but module/tests/examples in this PR use -Name. This inconsistency will confuse users and may indicate either the docs are stale or the rename directive wasn't applied. Please align the help to the exported cmdlet parameter name (and ensure examples/tests match).

Copilot uses AI. Check for mistakes.
Comment on lines 20 to +23
## Upcoming Release
* Removed cmdlet 'Get-AzQuotaGroupQuotaSubscriptionRequest'
- This cmdlet is no longer supported and has been removed from the module
* API Version Upgrade: Migrated from 2023-02-01 to 2025-09-01 stable
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Upcoming Release notes are missing key user-facing details and issue references. Consider describing the new Group Quota management cmdlets/capabilities in user terms (impact/what users can now do) and linking any relevant GitHub issue(s). Also, for the removed cmdlet, include guidance on what users should use instead (if applicable).

Copilot uses AI. Check for mistakes.
Comment on lines +12 to +13
Location is required paramater.

Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in synopsis: "paramater" should be "parameter".

Copilot uses AI. Check for mistakes.
Comment on lines 10 to 21
@@ -17,7 +17,7 @@ Get-AzQuotaOperation [-DefaultProfile <PSObject>] [<CommonParameters>]
```

## DESCRIPTION
List all the operations supported by the Microsoft.Quota resource provider.
List the operations for the provider

Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The SYNOPSIS/DESCRIPTION text is overly generic ("List the operations for the provider") and loses the important context that this lists operations supported by the Microsoft.Quota resource provider. Please restore a more specific description so users know what provider and operations this cmdlet targets.

Copilot uses AI. Check for mistakes.
@isra-fel
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown
Contributor

Azure Pipelines successfully started running 3 pipeline(s).

@isra-fel
Copy link
Copy Markdown
Member

I think the test cases needs to be recorded again? @RenSilvaAU

@isra-fel
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown
Contributor

Azure Pipelines successfully started running 3 pipeline(s).

Copilot AI review requested due to automatic review settings February 25, 2026 05:36
@isra-fel
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown
Contributor

Azure Pipelines successfully started running 3 pipeline(s).

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 110 out of 144 changed files in this pull request and generated 4 comments.

{
using System;
using System.Management.Automation;
using Microsoft.Azure.PowerShell.Cmdlets.Quota.Runtime.Json;
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using Microsoft.Azure.PowerShell.Cmdlets.Quota.Runtime.Json; appears unused in this file, and the repo sets TreatWarningsAsErrors=true (so this can fail the build with an unused-using warning). Remove the unused using or use a referenced type from that namespace.

Suggested change
using Microsoft.Azure.PowerShell.Cmdlets.Quota.Runtime.Json;

Copilot uses AI. Check for mistakes.
{
using System;
using System.Management.Automation;
using Microsoft.Azure.PowerShell.Cmdlets.Quota.Runtime.Json;
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using Microsoft.Azure.PowerShell.Cmdlets.Quota.Runtime.Json; appears unused in this file, and the repo sets TreatWarningsAsErrors=true (so this can fail the build with an unused-using warning). Remove the unused using or use a referenced type from that namespace.

Suggested change
using Microsoft.Azure.PowerShell.Cmdlets.Quota.Runtime.Json;

Copilot uses AI. Check for mistakes.
Comment on lines +46 to +56
### Example 1: Add a subscription to a GroupQuota
```powershell
New-AzQuotaGroupQuotaSubscription -ManagementGroupId "admintest" -GroupQuotaName "groupquota1" -SubscriptionId "{subId}"
```

```output
New-AzQuotaGroupQuotaSubscription_Create: The subscription {subId} is already registered for a Quota Group, please select another subscription and try again.
```

Add a subscription to an existing GroupQuota.
Note: If the subscription is already registered, an error will be returned.
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example output here is an error message ("already registered for a Quota Group"), which makes the example look like the cmdlet fails by default. Prefer a successful example (or clearly label this as an example of handling the 'already registered' error and include a success-path example as well).

Copilot uses AI. Check for mistakes.
Comment on lines 1 to 23
@@ -19,7 +19,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authenticators", "..\Accoun
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quota", "Quota\Quota.csproj", "{699E40C9-43A1-4F36-8DA5-4CBD28DB4A58}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Az.Quota", "..\..\generated\Quota\Quota.Autorest\Az.Quota.csproj", "{1FFEAE1C-DF2A-4DFD-A425-CB31B99B3BD7}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Az.Quota", "Quota.Autorest\Az.Quota.csproj", "{7CF61438-1417-4131-B3D9-ADCC804CB1DA}"
EndProject
Copy link

Copilot AI Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The solution file now begins with a blank first line and references Quota.Autorest\Az.Quota.csproj, but there is no Az.Quota.csproj under src/Quota/Quota.Autorest. This will likely prevent Visual Studio/MSBuild from loading/building the solution. Restore the standard first line (with optional BOM) and point Az.Quota back to the existing project path (e.g., under generated/Quota/Quota.Autorest) or add the missing csproj at the referenced location.

Copilot uses AI. Check for mistakes.
@isra-fel
Copy link
Copy Markdown
Member

/azp run

@azure-pipelines
Copy link
Copy Markdown
Contributor

Azure Pipelines successfully started running 3 pipeline(s).

@isra-fel isra-fel enabled auto-merge (squash) February 25, 2026 13:45
@isra-fel isra-fel dismissed stale reviews from dolauli and notyashhh February 25, 2026 13:48

comment addressed

@isra-fel isra-fel merged commit c3bd89f into Azure:main Feb 25, 2026
12 checks passed
notyashhh added a commit that referenced this pull request Mar 24, 2026
…table (#28902)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Yash <55773468+notyashhh@users.noreply.github.com>
Co-authored-by: Yeming Liu <11371776+isra-fel@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants