Skip to content

Managing zone allocation strategies

Zone allocation strategies define how logical networks distribute their resources across availability zones. You can configure them on both logical network profiles (as templates) and directly on logical networks (for per-network overrides).

In MetalSoft, a zone represents an availability boundary within a fabric — typically corresponding to a rack, a group of switches, or a failure domain. Zones ensure that MetalSoft distributes network resources (such as VLAN/VNI allocations) across these boundaries according to a defined strategy.

Zone allocation strategies work alongside the existing VLAN, VNI, and IPv4/IPv6 allocation strategies on logical networks and profiles. While those strategies control what resources MetalSoft allocates, zone strategies control where MetalSoft allocates them.

KindDescription
autoMetalSoft automatically assigns zones based on available resources and placement rules. You only need to specify the scope.
manualYou explicitly specify the zone name to use. This gives full control over which zone receives the resource.

Each strategy also has a scope that limits where it applies:

ScopeDescription
globalApplies across all fabrics and sites
site_groupApplies to a group of sites
siteApplies to a single site
fabric_groupApplies to a group of fabrics
fabricApplies to a single fabric
rackApplies to a single rack
device_groupApplies to a group of network devices
network_deviceApplies to a single network device

Zone allocation on logical network profiles

Section titled “Zone allocation on logical network profiles”

Zone allocation strategies on a logical network profile serve as a template. When you create a logical network from the profile, it inherits the zone strategies.

Creating a zone allocation strategy on a profile

Section titled “Creating a zone allocation strategy on a profile”
Terminal window
# Automatic zone allocation
curl -X POST "https://<your-server>/api/v2/logical-network-profiles/{id}/zone/zone-allocation-strategies" \
-H "Content-Type: application/json" \
-d '{
"kind": "auto",
"scope": {
"kind": "fabric",
"resourceId": 1
}
}'
# Manual zone allocation
curl -X POST "https://<your-server>/api/v2/logical-network-profiles/{id}/zone/zone-allocation-strategies" \
-H "Content-Type: application/json" \
-d '{
"kind": "manual",
"zoneName": "zone-a",
"scope": {
"kind": "fabric",
"resourceId": 1
}
}'

Listing zone allocation strategies on a profile

Section titled “Listing zone allocation strategies on a profile”
Terminal window
curl "https://<your-server>/api/v2/logical-network-profiles/{id}/zone/zone-allocation-strategies"
Terminal window
curl "https://<your-server>/api/v2/logical-network-profiles/{id}/zone/zone-allocation-strategies/{allocationStrategyId}"

Use PUT to replace an existing strategy entirely:

Terminal window
curl -X PUT "https://<your-server>/api/v2/logical-network-profiles/{id}/zone/zone-allocation-strategies/{allocationStrategyId}" \
-H "Content-Type: application/json" \
-d '{
"kind": "manual",
"zoneName": "zone-b",
"scope": {
"kind": "fabric",
"resourceId": 1
}
}'
Terminal window
curl -X DELETE "https://<your-server>/api/v2/logical-network-profiles/{id}/zone/zone-allocation-strategies/{allocationStrategyId}"

Logical networks have their own zone allocation strategies under their config. You can inherit these from the profile or set them independently.

The API nests these endpoints under the logical network’s config, following the same pattern:

Creating a zone allocation strategy on a logical network

Section titled “Creating a zone allocation strategy on a logical network”
Terminal window
curl -X POST "https://<your-server>/api/v2/logical-networks/{id}/config/zone/zone-allocation-strategies" \
-H "Content-Type: application/json" \
-d '{
"kind": "auto",
"scope": {
"kind": "fabric",
"resourceId": 1
}
}'
Terminal window
# List all
curl "https://<your-server>/api/v2/logical-networks/{id}/config/zone/zone-allocation-strategies"
# Get one
curl "https://<your-server>/api/v2/logical-networks/{id}/config/zone/zone-allocation-strategies/{allocationStrategyId}"
# Replace
curl -X PUT "https://<your-server>/api/v2/logical-networks/{id}/config/zone/zone-allocation-strategies/{allocationStrategyId}" \
-H "Content-Type: application/json" \
-d '{
"kind": "manual",
"zoneName": "zone-c",
"scope": {
"kind": "rack",
"resourceId": 5
}
}'
# Delete
curl -X DELETE "https://<your-server>/api/v2/logical-networks/{id}/config/zone/zone-allocation-strategies/{allocationStrategyId}"

Once you define zone strategies and deploy a logical network, MetalSoft creates zone allocations — the actual zone assignments. These are visible on the logical network’s zone property:

Terminal window
curl "https://<your-server>/api/v2/logical-networks/{id}"

The zone.zones array contains the allocated zones, each with:

FieldDescription
idUnique ID of the zone allocation
scopeThe scope this allocation applies to
statusAllocation status: allocated, pending_allocation or deleting
zoneNameThe name of the allocated zone

The zone.zoneAllocationStrategies array shows the strategies that produced these allocations.

Specifying zones at logical network creation

Section titled “Specifying zones at logical network creation”

You can also set zone allocation strategies inline when creating a logical network:

Terminal window
curl -X POST "https://<your-server>/api/v2/logical-networks" \
-H "Content-Type: application/json" \
-d '{
"label": "my-network",
"name": "My Network",
"networkProfileId": 1,
"zone": {
"zoneAllocationStrategies": [
{
"kind": "auto",
"scope": {
"kind": "fabric",
"resourceId": 1
}
}
]
}
}'

This is equivalent to creating the logical network and then adding the strategy separately.