Skip to content

Onboard StandbyPool provisioning#60682

Open
HarveyLink wants to merge 1 commit into
Azure:mainfrom
HarveyLink:provisioning-standbypool
Open

Onboard StandbyPool provisioning#60682
HarveyLink wants to merge 1 commit into
Azure:mainfrom
HarveyLink:provisioning-standbypool

Conversation

@HarveyLink

Copy link
Copy Markdown
Member

Description

Onboards Azure.Provisioning.StandbyPool as a new TypeSpec-generated provisioning library.

Spec PR: Azure/azure-rest-api-specs#44447

Current status

Generated Azure.Provisioning.StandbyPool from the StandbyPool TypeSpec project pinned in tsp-location.yaml at commit 41fcd750c50a62c42fcc1c1c08af7d177c043c62.

The package includes generated resources and models for Microsoft.StandbyPool API version 2025-10-01, first-release metadata, API listings, README snippets, basic unit/live tests, and CI artifact registration.

Validated generated top-level writable resource properties against Microsoft Learn Bicep reference pages for Microsoft.StandbyPool/standbyVirtualMachinePools@2025-10-01 and Microsoft.StandbyPool/standbyContainerGroupPools@2025-10-01; both matched expected writable shapes. Generated child/runtime resources have correct parent metadata and are not used in the basic provisioning sample.

Validation

  • dotnet build /t:GenerateCode from sdk\standbypool\Azure.Provisioning.StandbyPool\src
  • dotnet format sdk\standbypool\Azure.Provisioning.StandbyPool\src\Azure.Provisioning.StandbyPool.csproj
  • dotnet format sdk\standbypool\Azure.Provisioning.StandbyPool\tests\Azure.Provisioning.StandbyPool.Tests.csproj
  • eng\scripts\Export-API.ps1 standbypool
  • eng\scripts\Update-Snippets.ps1 standbypool
  • dotnet test sdk\standbypool\Azure.Provisioning.StandbyPool\tests\Azure.Provisioning.StandbyPool.Tests.csproj --filter "FullyQualifiedName~BasicStandbyPoolTests" --tl:off

@HarveyLink

Copy link
Copy Markdown
Member Author

Self-review notes

  1. StandbyVirtualMachine exposes a generated Properties model with writable VirtualMachineResourceId, but the Microsoft.StandbyPool/standbyVirtualMachinePools/standbyVirtualMachines@2025-10-01 Bicep reference only documents name plus parent. If this child resource is intended to be output/proxy-only, consider hiding/suppressing the writable properties or otherwise preventing unsupported properties emission.

  2. StandbyVirtualMachinePool.GetResourceNameRequirements() and StandbyContainerGroupPool.GetResourceNameRequirements() currently allow min length 1, while the 2025-10-01 Bicep reference lists top-level pool names as ^[a-zA-Z0-9-]{3,24}$. Consider a provisioning customization so generated default names cannot be shorter than the service accepts.

Validation I ran locally is listed in the PR description; the focused BasicStandbyPoolTests pass across the tested target frameworks.

@HarveyLink HarveyLink linked an issue Jul 6, 2026 that may be closed by this pull request
@HarveyLink HarveyLink marked this pull request as ready for review July 6, 2026 09:50
Copilot AI review requested due to automatic review settings July 6, 2026 09:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Onboards Azure.Provisioning.StandbyPool as a new TypeSpec-generated provisioning library under sdk/standbypool, adds CI artifact registration, and introduces initial tests, docs, and API listings for Microsoft.StandbyPool (2025-10-01).

Changes:

  • Added new Azure.Provisioning.StandbyPool package (generated resources/models + public API listings).
  • Added basic unit/live provisioning tests and a README snippet.
  • Registered the new package as a CI artifact in sdk/standbypool/ci.mgmt.yml.

Reviewed changes

Copilot reviewed 14 out of 48 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
sdk/standbypool/ci.mgmt.yml Registers Azure.Provisioning.StandbyPool as a pipeline artifact.
sdk/standbypool/Azure.Provisioning.StandbyPool/tsp-location.yaml Pins the TypeSpec source location/commit for generation.
sdk/standbypool/Azure.Provisioning.StandbyPool/tests/BasicStandbyPoolTests.cs Adds a basic Bicep-shape comparison test for standby VM pool.
sdk/standbypool/Azure.Provisioning.StandbyPool/tests/BasicLiveStandbyPoolTests.cs Adds a live-only validation test using Trycep.
sdk/standbypool/Azure.Provisioning.StandbyPool/tests/Azure.Provisioning.StandbyPool.Tests.csproj Introduces the test project and references shared test infra.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/StandbyVirtualMachinePoolRuntimeView.cs Generated runtime view child resource for standby VM pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/StandbyVirtualMachinePool.cs Generated top-level standby VM pool resource.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/StandbyVirtualMachine.cs Generated child resource for pooled standby VMs.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/StandbyContainerGroupPoolRuntimeView.cs Generated runtime view child resource for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/StandbyContainerGroupPool.cs Generated top-level standby container group pool resource.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachineState.cs Generated enum for standby VM state.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachineProperties.cs Generated model for standby VM child resource properties.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachinePoolRuntimeViewProperties.cs Generated model for VM pool runtime view properties.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachinePoolProperties.cs Generated model for VM pool properties.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachinePoolPrediction.cs Generated prediction model for VM pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachinePoolForecastValues.cs Generated internal forecast values model for VM pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachinePoolElasticityProfile.cs Generated elasticity profile model for VM pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyVirtualMachineInstanceCountSummary.cs Generated instance-count summary model for VM pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyRefillPolicy.cs Generated enum for container pool refill policy.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyProvisioningState.cs Generated provisioning state enum.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyPoolStatus.cs Generated model for pool status.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyPoolHealthStateCode.cs Generated enum for health-state code values.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupProperties.cs Generated container group properties model.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupProfile.cs Generated container group profile model.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupPoolRuntimeViewProperties.cs Generated runtime view properties model for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupPoolProperties.cs Generated properties model for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupPoolPrediction.cs Generated prediction model for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupPoolForecastValues.cs Generated internal forecast values model for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/StandbyContainerGroupPoolElasticityProfile.cs Generated elasticity profile model for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/PoolVirtualMachineStateCount.cs Generated pooled VM state count model.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/PoolVirtualMachineState.cs Generated pooled VM state enum.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/PoolContainerGroupStateCount.cs Generated pooled container group state count model.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/PoolContainerGroupState.cs Generated pooled container group state enum.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/DynamicSizing.cs Generated internal model backing DynamicSizingEnabled.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Models/ContainerGroupInstanceCountSummary.cs Generated instance-count summary model for container group pools.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Internal/CodeGenTypeAttribute.cs Generated internal customization attribute scaffold.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Internal/CodeGenSuppressAttribute.cs Generated internal customization attribute scaffold.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Internal/CodeGenSerializationAttribute.cs Generated internal customization attribute scaffold.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated/Internal/CodeGenMemberAttribute.cs Generated internal customization attribute scaffold.
sdk/standbypool/Azure.Provisioning.StandbyPool/src/Azure.Provisioning.StandbyPool.csproj Adds the new library project and sets initial package metadata/version.
sdk/standbypool/Azure.Provisioning.StandbyPool/README.md Adds package README including a basic snippet.
sdk/standbypool/Azure.Provisioning.StandbyPool/metadata.json Declares RP API versions for provisioning metadata.
sdk/standbypool/Azure.Provisioning.StandbyPool/Directory.Build.props Sets common build properties for the new package.
sdk/standbypool/Azure.Provisioning.StandbyPool/CHANGELOG.md Introduces initial changelog for 1.0.0-beta.1.
sdk/standbypool/Azure.Provisioning.StandbyPool/Azure.Provisioning.StandbyPool.slnx Adds a solution file for the package + tests.
sdk/standbypool/Azure.Provisioning.StandbyPool/api/Azure.Provisioning.StandbyPool.netstandard2.0.cs Adds public API listing for netstandard2.0.
sdk/standbypool/Azure.Provisioning.StandbyPool/api/Azure.Provisioning.StandbyPool.net8.0.cs Adds public API listing for net8.0.
sdk/standbypool/Azure.Provisioning.StandbyPool/api/Azure.Provisioning.StandbyPool.net10.0.cs Adds public API listing for net10.0.

Comment on lines +1 to +6
directory: specification/standbypool/StandbyPool.Management
commit: 41fcd750c50a62c42fcc1c1c08af7d177c043c62
repo: Azure/azure-rest-api-specs
additionalDirectories:

emitterPackageJsonPath: "eng/azure-typespec-http-client-csharp-provisioning-emitter-package.json"
Comment on lines +10 to +15
<PropertyGroup>
<TargetFrameworks>$(RequiredTargetFrameworks)</TargetFrameworks>
<IsMgmtLibrary>true</IsMgmtLibrary>
<IncludeOperationsSharedSource>true</IncludeOperationsSharedSource>
<Nullable>enable</Nullable>
</PropertyGroup>
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Provisioning schema extractor output

Package: sdk/standbypool/Azure.Provisioning.StandbyPool

Schema extracted from generated and custom source
# Provisioning Resource Schema

Package: `sdk/standbypool/Azure.Provisioning.StandbyPool`
Source: `sdk/standbypool/Azure.Provisioning.StandbyPool/src/Generated`

## StandbyContainerGroupPool

- Resource type: `Microsoft.StandbyPool/standbyContainerGroupPools`
- Default API version: `2025-10-01`
- Source file: `src/Generated/StandbyContainerGroupPool.cs`

| Property | Path | Kind | Type | Required | Output | Metadata |
| --- | --- | --- | --- | --- | --- | --- |
| `Id` | `id` | Property | `BicepValue<ResourceIdentifier>` | False | True | False |
| `Name` | `name` | Property | `BicepValue<string>` | True | False | False |
| `SystemData` | `systemData` | ModelProperty | `SystemData` | False | True | False |
| `Tags` | `tags` | DictionaryProperty | `BicepDictionary<string>` | False | False | False |
| `Location` | `location` | Property | `BicepValue<AzureLocation>` | True | False | False |
| `Properties` | `properties` | ModelProperty | `StandbyContainerGroupPoolProperties` | False | False | False |

## StandbyContainerGroupPoolRuntimeView

- Resource type: `Microsoft.StandbyPool/standbyContainerGroupPools/runtimeViews`
- Default API version: `2025-10-01`
- Source file: `src/Generated/StandbyContainerGroupPoolRuntimeView.cs`

| Property | Path | Kind | Type | Required | Output | Metadata |
| --- | --- | --- | --- | --- | --- | --- |
| `Id` | `id` | Property | `BicepValue<ResourceIdentifier>` | False | True | False |
| `Name` | `name` | Property | `BicepValue<string>` | True | False | False |
| `SystemData` | `systemData` | ModelProperty | `SystemData` | False | True | False |
| `Properties` | `properties` | ModelProperty | `StandbyContainerGroupPoolRuntimeViewProperties` | False | False | False |
| `Parent` | `parent` | Resource | `StandbyContainerGroupPool` | True | False | True |

## StandbyVirtualMachine

- Resource type: `Microsoft.StandbyPool/standbyVirtualMachinePools/standbyVirtualMachines`
- Default API version: `2025-10-01`
- Source file: `src/Generated/StandbyVirtualMachine.cs`

| Property | Path | Kind | Type | Required | Output | Metadata |
| --- | --- | --- | --- | --- | --- | --- |
| `Id` | `id` | Property | `BicepValue<ResourceIdentifier>` | False | True | False |
| `Name` | `name` | Property | `BicepValue<string>` | True | False | False |
| `SystemData` | `systemData` | ModelProperty | `SystemData` | False | True | False |
| `Properties` | `properties` | ModelProperty | `StandbyVirtualMachineProperties` | False | False | False |
| `Parent` | `parent` | Resource | `StandbyVirtualMachinePool` | True | False | True |

## StandbyVirtualMachinePool

- Resource type: `Microsoft.StandbyPool/standbyVirtualMachinePools`
- Default API version: `2025-10-01`
- Source file: `src/Generated/StandbyVirtualMachinePool.cs`

| Property | Path | Kind | Type | Required | Output | Metadata |
| --- | --- | --- | --- | --- | --- | --- |
| `Id` | `id` | Property | `BicepValue<ResourceIdentifier>` | False | True | False |
| `Name` | `name` | Property | `BicepValue<string>` | True | False | False |
| `SystemData` | `systemData` | ModelProperty | `SystemData` | False | True | False |
| `Tags` | `tags` | DictionaryProperty | `BicepDictionary<string>` | False | False | False |
| `Location` | `location` | Property | `BicepValue<AzureLocation>` | True | False | False |
| `Properties` | `properties` | ModelProperty | `StandbyVirtualMachinePoolProperties` | False | False | False |

## StandbyVirtualMachinePoolRuntimeView

- Resource type: `Microsoft.StandbyPool/standbyVirtualMachinePools/runtimeViews`
- Default API version: `2025-10-01`
- Source file: `src/Generated/StandbyVirtualMachinePoolRuntimeView.cs`

| Property | Path | Kind | Type | Required | Output | Metadata |
| --- | --- | --- | --- | --- | --- | --- |
| `Id` | `id` | Property | `BicepValue<ResourceIdentifier>` | False | True | False |
| `Name` | `name` | Property | `BicepValue<string>` | True | False | False |
| `SystemData` | `systemData` | ModelProperty | `SystemData` | False | True | False |
| `Properties` | `properties` | ModelProperty | `StandbyVirtualMachinePoolRuntimeViewProperties` | False | False | False |
| `Parent` | `parent` | Resource | `StandbyVirtualMachinePool` | True | False | True |

Analyzed by Azure .NET Provisioning SDK PR Review: https://github.com/Azure/azure-sdk-for-net/actions/runs/28784797143

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Provisioning SDK Review Summary

  • Scope: sdk/standbypool/Azure.Provisioning.StandbyPool
  • Classification: onboarding
  • CI: pass
  • Schema and metadata: pass
  • Compatibility: not applicable (new package)
  • Tests/snippets/docs: pass

This is a well-structured initial onboarding of Azure.Provisioning.StandbyPool targeting Microsoft.StandbyPool@2025-10-01. No blocking provisioning SDK review issues were found.

What was verified:

Package layout: All required elements are present — .slnx, src/*.csproj, tests/*.csproj, README.md, CHANGELOG.md, metadata.json, tsp-location.yaml, api/ listings for all three TFMs, Directory.Build.props, and CI artifact registration in ci.mgmt.yml.

Generated resource types: Five resource types were extracted by the schema tool. All map to valid Microsoft.StandbyPool ARM resource types present in the Bicep reference:

  • Microsoft.StandbyPool/standbyVirtualMachinePools (top-level)
  • Microsoft.StandbyPool/standbyContainerGroupPools (top-level)
  • Microsoft.StandbyPool/standbyVirtualMachinePools/standbyVirtualMachines (child/runtime)
  • Microsoft.StandbyPool/standbyVirtualMachinePools/runtimeViews (child/runtime)
  • Microsoft.StandbyPool/standbyContainerGroupPools/runtimeViews (child/runtime)

Schema correctness: Top-level writable properties match the Bicep reference for both pool types. ProvisioningState is correctly isOutput: true in all properties models. dynamicSizing.enabled is correctly flattened as DynamicSizingEnabled on the elasticity profile models using an internal DynamicSizing construct.

**Resource identity and meta(redacted) Name is writable and required on all non-singleton resources. Parent is correctly implemented as a metadata ResourceReference<> (IsMetadata=True) on all child resources; it is not serialized as a regular Bicep property.

Tests and snippets: BasicStandbyPoolTests uses #region Snippet:StandbyPoolBasic and Trycep.Compare(). BasicLiveStandbyPoolTests reuses the same factory method with [LiveOnly] and ValidateAsync(). The README snippet exactly matches the test snippet region.

Changelog: Initial 1.0.0-beta.1 (Unreleased) entry is present.


Analyzed by provisioning-review-trigger workflow: 28784797143

Analyzed by Azure .NET Provisioning SDK PR Review: https://github.com/Azure/azure-sdk-for-net/actions/runs/28784797143

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.

[FEATURE REQ] add azure provisioning for StandbyPool

2 participants