Preconditions
Note: This feature can leverage CodeGen V2 (AAZ) for command generation. Please contact via azure-cli-codegen-channel if interested.
Related command
az interconnect-block create
az interconnect-block show
az interconnect-block list
az interconnect-block update
az interconnect-block delete
Resource Provider
Microsoft.Compute/interconnectBlocks
Description of Feature or Work Requested
Feature request to add new command group for InterconnectBlock resource to support large-scale AI/ML workloads requiring high-performance networking and GPU compute resources.
InterconnectBlock enables customers to:
-
Pre-allocate compute capacity: Reserve a specific number of VMs (in multiples of 18) within a dedicated network boundary, ensuring capacity availability for mission-critical workloads.
-
Optimize network performance: Group VMs within an InterconnectBlock that's tied to an InterconnectGroup, providing low-latency, high-bandwidth connectivity essential for distributed training and inference workloads.
-
Manage infrastructure lifecycle: Provision, scale, and deprovision compute blocks independently while maintaining network isolation and performance guarantees.
Target scenarios:
- Large language model (LLM) training requiring hundreds of GPUs
- Distributed deep learning workloads with tight network latency requirements
- AI inference clusters that need predictable performance and capacity
- Multi-tenant environments requiring network isolation between workload groups
New Commands
az interconnect-block create
Creates a new InterconnectBlock resource.
Parameters:
| Parameter |
Type |
Required |
Description |
--name -n |
string |
Yes |
Name of the InterconnectBlock |
--resource-group -g |
string |
Yes |
Name of resource group |
--location -l |
string |
Yes |
Azure region |
--zone |
string |
Yes |
Availability zone (e.g., "1") |
--sku-name |
string |
Yes |
VM SKU name (e.g., Standard_ND128isr_GB300_v6). Immutable after creation. |
--sku-capacity |
integer |
Yes |
Number of nodes/VMs reserved. Must be a multiple of 18 (minimum: 18). |
--interconnect-group-id |
string |
Yes |
ARM resource ID of the Microsoft.Network/interconnectGroups resource. Required and immutable (1:1 mapping in MVP). |
--sku-tier |
string |
No |
SKU tier (e.g., "Standard") |
--placement-exclude-zone |
array |
No |
Zones to exclude for placement |
--placement-include-zone |
array |
No |
Zones to include for placement |
--placement-zone-placement-policy |
string |
No |
Zone placement policy (e.g., "Any") |
--tags |
hashtable |
No |
Resource tags |
--no-wait |
switch |
No |
Do not wait for the long-running operation to finish |
Example:
az interconnect-block create \
--name training-icb-001 \
--resource-group ai-training-rg \
--location eastus \
--zone 1 \
--sku-name Standard_ND128isr_GB300_v6 \
--sku-capacity 36 \
--interconnect-group-id "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/network-rg/providers/Microsoft.Network/interconnectGroups/training-ig" \
--tags Environment=Production Workload=AI-Training CostCenter=ML-Engineering
az interconnect-block show
Retrieves information about an InterconnectBlock.
Parameters:
| Parameter |
Type |
Required |
Description |
--name -n |
string |
Yes* |
Name of the InterconnectBlock |
--resource-group -g |
string |
Yes* |
Name of resource group |
--ids |
string |
No |
Resource ID (alternative to name + resource group) |
--expand |
string |
No |
Expand expression (use "instanceView" to get runtime details) |
* Required unless --ids is specified
Example:
# Get basic information
az interconnect-block show \
--name training-icb-001 \
--resource-group ai-training-rg
# Get with instance view (includes runtime details)
az interconnect-block show \
--name training-icb-001 \
--resource-group ai-training-rg \
--expand instanceView
Output includes:
interconnectBlockId: Platform-assigned GUID
provisioningState: Current provisioning status
virtualMachinesAssociated: List of associated VM resource IDs
instanceView.currentCapacity: Current capacity
instanceView.statuses: Status information
timeCreated: Creation timestamp
provisioningTime: Last provisioning timestamp
az interconnect-block list
Lists InterconnectBlocks.
Parameters:
| Parameter |
Type |
Required |
Description |
--resource-group -g |
string |
No |
Name of resource group. If omitted, lists all in subscription. |
Example:
# List all in subscription
az interconnect-block list
# List by resource group
az interconnect-block list --resource-group ai-training-rg
# List and filter by capacity
az interconnect-block list --resource-group ai-training-rg --query "[?sku.capacity>=36]"
az interconnect-block update
Updates an InterconnectBlock. Only --sku-capacity and --tags are mutable.
Parameters:
| Parameter |
Type |
Required |
Description |
--name -n |
string |
Yes* |
Name of the InterconnectBlock |
--resource-group -g |
string |
Yes* |
Name of resource group |
--ids |
string |
No |
Resource ID (alternative to name + resource group) |
--sku-capacity |
integer |
No |
New capacity value. Must be a multiple of 18. |
--sku-name |
string |
No |
SKU name (included for consistency but immutable) |
--sku-tier |
string |
No |
SKU tier (included for consistency but immutable) |
--tags |
hashtable |
No |
Updated resource tags |
--no-wait |
switch |
No |
Do not wait for the long-running operation to finish |
* Required unless --ids is specified
Example:
# Scale capacity
az interconnect-block update \
--name training-icb-001 \
--resource-group ai-training-rg \
--sku-capacity 54
# Update tags
az interconnect-block update \
--name training-icb-001 \
--resource-group ai-training-rg \
--tags Environment=Production Capacity=54-nodes LastScaled=$(date +%Y-%m-%d)
# Scale with no-wait
az interconnect-block update \
--name training-icb-001 \
--resource-group ai-training-rg \
--sku-capacity 72 \
--no-wait
az interconnect-block delete
Deletes an InterconnectBlock. Fails if any VM/VMSS is still associated.
Parameters:
| Parameter |
Type |
Required |
Description |
--name -n |
string |
Yes* |
Name of the InterconnectBlock |
--resource-group -g |
string |
Yes* |
Name of resource group |
--ids |
string |
No |
Resource ID (alternative to name + resource group) |
--yes -y |
switch |
No |
Do not prompt for confirmation |
--no-wait |
switch |
No |
Do not wait for the long-running operation to finish |
* Required unless --ids is specified
Example:
# Delete with confirmation
az interconnect-block delete \
--name training-icb-001 \
--resource-group ai-training-rg
# Delete without confirmation
az interconnect-block delete \
--name training-icb-001 \
--resource-group ai-training-rg \
--yes
Business Logic
-
--interconnect-group-id: ARM ID of the Microsoft.Network/interconnectGroups resource. Required at create and immutable. There's a 1:1 mapping between InterconnectBlock and InterconnectGroup in MVP; an ICB cannot exist without an IG.
-
--sku-name: VM SKU name (e.g., Standard_ND128isr_GB300_v6). Immutable after creation.
-
--sku-capacity: Number of nodes/VMs reserved. Mutable (the only scale parameter). Must be a multiple of 18 (minimum: 18). Buildout/scale happens rack-by-rack (homogeneous subgroup size of 18). CRP runs a capacity check on scale-out operations.
-
--location / --zone: Set at create and immutable. One zone per InterconnectGroup.
-
Read-only output properties: interconnectBlockId (platform GUID), virtualMachinesAssociated, provisioningState, provisioningTime, timeCreated
-
DELETE behavior: Operation fails if any VM/VMSS is still associated. Users must remove/dissociate all VMs first before deletion.
End to End Usage
Scenario 1 - Create and Scale InterconnectBlock
# Step 1: Define variables
RG="ai-training-rg"
LOCATION="eastus"
ZONE="1"
ICB_NAME="training-icb-001"
SKU="Standard_ND128isr_GB300_v6"
INITIAL_CAPACITY=36
IG_ID="/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/network-rg/providers/Microsoft.Network/interconnectGroups/training-ig"
# Step 2: Create resource group
az group create --name $RG --location $LOCATION
# Step 3: Create InterconnectBlock with initial capacity
echo "Creating InterconnectBlock with $INITIAL_CAPACITY nodes..."
az interconnect-block create \
--name $ICB_NAME \
--resource-group $RG \
--location $LOCATION \
--zone $ZONE \
--sku-name $SKU \
--sku-capacity $INITIAL_CAPACITY \
--interconnect-group-id $IG_ID \
--tags Environment=Production Workload=AI-Training CostCenter=ML-Engineering \
--no-wait
# Step 4: Check provisioning status
az interconnect-block show \
--name $ICB_NAME \
--resource-group $RG \
--expand instanceView \
--query "{name:name, state:provisioningState, capacity:instanceView.currentCapacity, blockId:interconnectBlockId}"
# Step 5: Scale capacity as workload grows
echo "Scaling capacity to 54 nodes..."
az interconnect-block update \
--name $ICB_NAME \
--resource-group $RG \
--sku-capacity 54
# Step 6: Monitor associated VMs
az interconnect-block show \
--name $ICB_NAME \
--resource-group $RG \
--query "{name:name, associatedVMs:length(virtualMachinesAssociated), vmIds:virtualMachinesAssociated[].id}"
# Step 7: Update tags for tracking
az interconnect-block update \
--name $ICB_NAME \
--resource-group $RG \
--tags Environment=Production Workload=AI-Training CostCenter=ML-Engineering Capacity=54-nodes LastScaled=$(date +%Y-%m-%d)
Scenario 2 - List and Query InterconnectBlocks
# List all InterconnectBlocks in subscription
az interconnect-block list
# List in specific resource group
az interconnect-block list --resource-group ai-training-rg
# Query high-capacity blocks
az interconnect-block list \
--query "[?sku.capacity>=36].{name:name, capacity:sku.capacity, location:location, state:provisioningState}" \
--output table
# Get detailed instance view
az interconnect-block show \
--name training-icb-001 \
--resource-group ai-training-rg \
--expand instanceView
Scenario 3 - Cleanup Workflow
# Step 1: Check for associated VMs
ICB_VMS=$(az interconnect-block show \
--name $ICB_NAME \
--resource-group $RG \
--query "virtualMachinesAssociated[].id" \
--output tsv)
# Step 2: Remove all associated VMs first
for VM_ID in $ICB_VMS; do
echo "Removing VM: $VM_ID"
az vm delete --ids $VM_ID --yes --no-wait
done
# Step 3: Wait for VM deletions to complete
echo "Waiting for VM deletions to complete..."
sleep 60
# Step 4: Remove the InterconnectBlock
echo "Removing InterconnectBlock..."
az interconnect-block delete \
--name $ICB_NAME \
--resource-group $RG \
--yes
echo "Cleanup complete."
Scenario 4 - Piping with InterconnectGroup
# Get InterconnectGroup and use its ID for ICB creation
IG=$(az network interconnect-group show \
--name training-ig \
--resource-group network-rg \
--query "id" \
--output tsv)
# Create InterconnectBlock using the IG resource ID
az interconnect-block create \
--name training-icb-001 \
--resource-group ai-training-rg \
--location eastus \
--zone 1 \
--sku-name Standard_ND128isr_GB300_v6 \
--sku-capacity 36 \
--interconnect-group-id $IG \
--tags Workload=AI-Training
Minimum API Version Required
2026-03-01
Swagger PR link / SDK link
Request Example
Request/response examples will be available in the swagger PR examples directory once merged:
specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Create.json
specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Get.json
specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Update.json
specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Delete.json
specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_List.json
Target Date
2026-08-01 (Private Preview)
PM Contact
yshamavu (yshamavu@microsoft.com)
Engineer Contact
smotwani (smotwani@microsoft.com)
Additional context
Related Work
Feature Flags and Restrictions
Feature flag: Microsoft.Compute/InterconnectBlockPreview
- Subscription must be registered for the InterconnectBlock preview
- Capacity constraints: Must be a multiple of 18 (minimum: 18)
- 1:1 mapping: One InterconnectBlock per InterconnectGroup (MVP limitation)
- Immutable properties:
skuName, location, zone, interconnectGroupId cannot be changed after creation
- Mutable properties: Only
skuCapacity and tags can be updated via PATCH operation
- Delete constraint: Operation fails if any VM/VMSS is still associated with the InterconnectBlock
Test Coverage
CLI commands should support:
CRUD operations:
- Create an InterconnectBlock with all required parameters
- Get an InterconnectBlock (single resource)
- List InterconnectBlocks (by resource group, by subscription)
- Get an InterconnectBlock with
--expand "instanceView" parameter
- Update an InterconnectBlock (capacity scaling up and down)
- Update an InterconnectBlock (tags modification)
- Delete an InterconnectBlock
Error handling:
- Create with invalid capacity (not a multiple of 18)
- Create without InterconnectGroupId
- Delete when VMs/VMSS are still associated
- Update immutable properties (SkuName, Location, Zone, InterconnectGroupId)
Edge cases:
- Create with minimum capacity (18)
- Scale capacity: 18 → 36 → 54
- Create and delete operations with
--no-wait
- Query operations with JMESPath filters
Additional Contacts
Preconditions
Related command
az interconnect-block createaz interconnect-block showaz interconnect-block listaz interconnect-block updateaz interconnect-block deleteResource Provider
Microsoft.Compute/interconnectBlocks
Description of Feature or Work Requested
Feature request to add new command group for InterconnectBlock resource to support large-scale AI/ML workloads requiring high-performance networking and GPU compute resources.
InterconnectBlock enables customers to:
Pre-allocate compute capacity: Reserve a specific number of VMs (in multiples of 18) within a dedicated network boundary, ensuring capacity availability for mission-critical workloads.
Optimize network performance: Group VMs within an InterconnectBlock that's tied to an InterconnectGroup, providing low-latency, high-bandwidth connectivity essential for distributed training and inference workloads.
Manage infrastructure lifecycle: Provision, scale, and deprovision compute blocks independently while maintaining network isolation and performance guarantees.
Target scenarios:
New Commands
az interconnect-block createCreates a new InterconnectBlock resource.
Parameters:
--name-n--resource-group-g--location-l--zone--sku-nameStandard_ND128isr_GB300_v6). Immutable after creation.--sku-capacity--interconnect-group-idMicrosoft.Network/interconnectGroupsresource. Required and immutable (1:1 mapping in MVP).--sku-tier--placement-exclude-zone--placement-include-zone--placement-zone-placement-policy--tags--no-waitExample:
az interconnect-block showRetrieves information about an InterconnectBlock.
Parameters:
--name-n--resource-group-g--ids--expand"instanceView"to get runtime details)* Required unless
--idsis specifiedExample:
Output includes:
interconnectBlockId: Platform-assigned GUIDprovisioningState: Current provisioning statusvirtualMachinesAssociated: List of associated VM resource IDsinstanceView.currentCapacity: Current capacityinstanceView.statuses: Status informationtimeCreated: Creation timestampprovisioningTime: Last provisioning timestampaz interconnect-block listLists InterconnectBlocks.
Parameters:
--resource-group-gExample:
az interconnect-block updateUpdates an InterconnectBlock. Only
--sku-capacityand--tagsare mutable.Parameters:
--name-n--resource-group-g--ids--sku-capacity--sku-name--sku-tier--tags--no-wait* Required unless
--idsis specifiedExample:
az interconnect-block deleteDeletes an InterconnectBlock. Fails if any VM/VMSS is still associated.
Parameters:
--name-n--resource-group-g--ids--yes-y--no-wait* Required unless
--idsis specifiedExample:
Business Logic
--interconnect-group-id: ARM ID of theMicrosoft.Network/interconnectGroupsresource. Required at create and immutable. There's a 1:1 mapping between InterconnectBlock and InterconnectGroup in MVP; an ICB cannot exist without an IG.--sku-name: VM SKU name (e.g.,Standard_ND128isr_GB300_v6). Immutable after creation.--sku-capacity: Number of nodes/VMs reserved. Mutable (the only scale parameter). Must be a multiple of 18 (minimum: 18). Buildout/scale happens rack-by-rack (homogeneous subgroup size of 18). CRP runs a capacity check on scale-out operations.--location/--zone: Set at create and immutable. One zone per InterconnectGroup.Read-only output properties:
interconnectBlockId(platform GUID),virtualMachinesAssociated,provisioningState,provisioningTime,timeCreatedDELETE behavior: Operation fails if any VM/VMSS is still associated. Users must remove/dissociate all VMs first before deletion.
End to End Usage
Scenario 1 - Create and Scale InterconnectBlock
Scenario 2 - List and Query InterconnectBlocks
Scenario 3 - Cleanup Workflow
Scenario 4 - Piping with InterconnectGroup
Minimum API Version Required
2026-03-01
Swagger PR link / SDK link
Request Example
Request/response examples will be available in the swagger PR examples directory once merged:
specification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Create.jsonspecification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Get.jsonspecification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Update.jsonspecification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_Delete.jsonspecification/compute/resource-manager/Microsoft.Compute/Compute/Compute/examples/interconnectBlock_List.jsonTarget Date
2026-08-01 (Private Preview)
PM Contact
yshamavu (yshamavu@microsoft.com)
Engineer Contact
smotwani (smotwani@microsoft.com)
Additional context
Related Work
Feature Flags and Restrictions
Feature flag:
Microsoft.Compute/InterconnectBlockPreviewskuName,location,zone,interconnectGroupIdcannot be changed after creationskuCapacityandtagscan be updated via PATCH operationTest Coverage
CLI commands should support:
CRUD operations:
--expand "instanceView"parameterError handling:
Edge cases:
--no-waitAdditional Contacts