diff --git a/workload/bicep/brownfield/newSessionHosts/deploy.bicep b/workload/bicep/brownfield/newSessionHosts/deploy.bicep index 4c8fd4a3a..e17f69be8 100644 --- a/workload/bicep/brownfield/newSessionHosts/deploy.bicep +++ b/workload/bicep/brownfield/newSessionHosts/deploy.bicep @@ -57,12 +57,7 @@ param enableAcceleratedNetworking bool = true ]) param availability string = 'None' -@sys.description('The Availability Zones to use for the session hosts.') -@allowed([ - '1' - '2' - '3' -]) +@sys.description('The Availability Zones to use for the session hosts. Valid values are combinations of \'1\', \'2\', \'3\', or an empty array for regions without availability zones.') param availabilityZones array = ['1', '2', '3'] @sys.description('Set to deploy image from Azure Compute Gallery. (Default: false)') diff --git a/workload/bicep/deploy-baseline.bicep b/workload/bicep/deploy-baseline.bicep index 0f705d275..3ee610dba 100644 --- a/workload/bicep/deploy-baseline.bicep +++ b/workload/bicep/deploy-baseline.bicep @@ -236,12 +236,7 @@ param avdSessionHostCountIndex int = 1 ]) param availability string = 'None' -@sys.description('The Availability Zones to use for the session hosts.') -@allowed([ - '1' - '2' - '3' -]) +@sys.description('The Availability Zones to use for the session hosts. Valid values are combinations of \'1\', \'2\', \'3\', or an empty array for regions without availability zones.') param availabilityZones array = ['1', '2', '3'] @sys.description('When true, Zone Redundant Storage (ZRS) is used, when set to false, Locally Redundant Storage (LRS) is used. (Default: false)') diff --git a/workload/bicep/modules/avdSessionHosts/deploy.bicep b/workload/bicep/modules/avdSessionHosts/deploy.bicep index 0148a3cbd..4a5ad9717 100644 --- a/workload/bicep/modules/avdSessionHosts/deploy.bicep +++ b/workload/bicep/modules/avdSessionHosts/deploy.bicep @@ -168,6 +168,7 @@ var varCustomOsDiskProperties = { diskSizeGB: customOsDiskSizeGB != 0 ? customOsDiskSizeGB : null } var varZones = [for zone in availabilityZones: int(zone)] +var varHasZones = length(availabilityZones) > 0 // =========== // // Deployments // @@ -188,7 +189,7 @@ module sessionHosts '../../../../avm/1.0.0/res/compute/virtual-machine/main.bice name: '${namePrefix}${padLeft((i + countIndex), 4, '0')}' location: location timeZone: timeZone - zone: availability == 'AvailabilityZones' ? varZones[i % length(varZones)] : 0 + zone: availability == 'AvailabilityZones' && varHasZones ? varZones[i % length(varZones)] : 0 managedIdentities: contains(identityServiceProvider, 'EntraID') || deployMonitoring ? { systemAssigned: true diff --git a/workload/portal-ui/brownfield/portalUiNewSessionHosts.json b/workload/portal-ui/brownfield/portalUiNewSessionHosts.json index 8c2436764..23d6ffa47 100644 --- a/workload/portal-ui/brownfield/portalUiNewSessionHosts.json +++ b/workload/portal-ui/brownfield/portalUiNewSessionHosts.json @@ -557,11 +557,7 @@ "name": "availabilityZones", "type": "Microsoft.Common.DropDown", "label": "Select Availability Zones", - "defaultValue": [ - "Zone 1", - "Zone 2", - "Zone 3" - ], + "defaultValue": "[map(first(map(first(map(filter(steps('sessionHosts').resourceSkusApi.value, (sku) => contains(sku.name, steps('sessionHosts').settings.vmSize)), (sku) => sku.locationInfo)), (sku) => sku.zones)), (zone) => parse(concat('{\"label\":\"Zone ', zone, '\",\"value\":\"', zone, '\"}')))]", "multiselect": true, "selectAll": true, "toolTip": "Select the desired Availability Zones", diff --git a/workload/portal-ui/portal-ui-baseline.json b/workload/portal-ui/portal-ui-baseline.json index 2a9994178..a0a358360 100644 --- a/workload/portal-ui/portal-ui-baseline.json +++ b/workload/portal-ui/portal-ui-baseline.json @@ -1025,11 +1025,7 @@ "name": "availabilityZones", "type": "Microsoft.Common.DropDown", "label": "Select Availability Zones", - "defaultValue": [ - "Zone 1", - "Zone 2", - "Zone 3" - ], + "defaultValue": "[map(first(map(first(map(filter(steps('sessionHosts').sessionHostsRegionSection.resourceSkusApi.value, (sku) => contains(sku.name, steps('sessionHosts').sessionHostsSettingsSection.sessionHostSize)), (sku) => sku.locationInfo)), (sku) => sku.zones)), (zone) => parse(concat('{\"label\":\"Zone ', zone, '\",\"value\":\"', zone, '\"}')))]", "multiselect": true, "selectAll": true, "toolTip": "Select the desired Availability Zones",