Azure / Azure/azure-rest-api-specs
[FEATURE REQ] Support private IP prefix (Prefix on NIC) on VMSS IP configurations
- Dominant language
- TypeSpec
- Stars
- 3.1k
- Forks
- 5.9k
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 444
Description
### API Spec link
https://github.com/Azure/azure-rest-api-specs/blob/main/specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/models.tsp
### API Spec version
2026-03-01
### Please describe the feature.
### Summary
`Microsoft.Network` supports "Prefix on NIC": assigning a private IP **CIDR block** to a network interface IP configuration instead of a single address. `Microsoft.Compute` exposes no equivalent for VMSS instance NICs, which are defined inline via the VMSS network profile and cannot be configured through `Microsoft.Network` out-of-band.
### Where it exists today (Network)
`Microsoft.Network` defines this on the NIC IP configuration:
- File: `specification/network/resource-manager/Microsoft.Network/Network/Common/main.tsp`
- Model: `InterfaceIPConfigurationPropertiesFormat`
- Field:
```tsp
/**
* The private IP address prefix length. If specified and the allocation method is
* dynamic, the service will allocate a CIDR block instead of a single IP address.
*/
@minValue(1)
@maxValue(128)
privateIPAddressPrefixLength?: int32 | null;
```
### What's missing (Compute / VMSS)
The corresponding VMSS IP-configuration model has no prefix-length property:
- File: `specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/models.tsp`
- Model: `VirtualMachineScaleSetIPConfigurationProperties` (and the update variant used for PATCH)
- Current fields: `subnet`, `primary`, `publicIPAddressConfiguration`, `privateIPAddressVersion`, `applicationGatewayBackendAddressPools`, `applicationSecurityGroups`, `loadBalancerBackendAddressPools`, `loadBalancerInboundNatPools`, no `privateIPAddressPrefixLength`.
### Requested change
Add a `privateIPAddressPrefixLength?: int32` property to `VirtualMachineScaleSetIPConfigurationProperties` (and its update counterpart), mirroring the `Microsoft.Network` semantics, so a VMSS network profile can request a CIDR block per instance NIC.
### Motivation
Workloads that need a routable IP block per instance (e.g. per-pod/container IP allocation, NVA scenarios) can already get this on standalone NICs and individual VMs, but not on scale-set instances. This blocks the pattern on VMSS entirely from the typed SDKs (e.g. `armcompute` for Go has no field to set), forcing raw-REST/template workarounds.
Contributor guide
Research direction
Start in specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/models.tsp and inspect VirtualMachineScaleSetIPConfigurationProperties plus its update counterpart. Compare the existing privateIPAddressPrefixLength definition in specification/network/resource-manager/Microsoft.Network/Network/Common/main.tsp, then verify both VMSS models expose the requested property with matching semantics.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure
- Domain
- api, cloud
- Issue type
- Feature
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100