Skip to content

Az.Compute - InterconnectBlock #33707

Description

@jiaosummer

Preconditions

  • No need to upgrade Python SDK or the Python SDK is ready.

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:

  1. 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.

  2. 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.

  3. 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

Role Contact
Main developer contacts smotwani@microsoft.com
PM contact yshamavu@microsoft.com
Distribution list cplatsdkdev@microsoft.com

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions