Skip to content

{Compute} az vm/ vmss create: Support Aligned Zonal Fault Domains with --data-disk-storage-fault-domain-alignment, --os-disk-storage-fault-domain-alignment and --zonal-platform-fault-domain-align-mode#33390

Open
william051200 wants to merge 7 commits into
Azure:devfrom
william051200:32693-zone-fault-domains

Conversation

@william051200
Copy link
Copy Markdown
Member

Related command

az vm create
az vmss create

Description

Resolve #32693

I do notice:
Aligned zonal platform storage fault domain mode can not be applied when feature 'VMOrchestratorZonalMultiFD' is registered.
image

Testing Guide

Refer to vm\tests\latest\test_vm_commands.py - test_vmss_zonal_aligned_fault_domains

Not able to run live recording, due to:
Feature Microsoft.Compute/ZonalAlignedMultipleFDs doesn't support registration.
image
Currently waiting for Service Team's support on this.

History Notes

[Compute] az vm create: Support Aligned Zonal Fault Domains with --data-disk-storage-fault-domain-alignment and --os-disk-storage-fault-domain-alignment
[Compute] az vmss create: Support Aligned Zonal Fault Domains with --data-disk-storage-fault-domain-alignment, --os-disk-storage-fault-domain-alignment and --zonal-platform-fault-domain-align-mode


This checklist is used to make sure that common guidelines for a pull request are followed.

Copilot AI review requested due to automatic review settings May 18, 2026 00:08
@azure-client-tools-bot-prd
Copy link
Copy Markdown

azure-client-tools-bot-prd Bot commented May 18, 2026

️✔️AzureCLI-FullTest
️✔️acr
️✔️latest
️✔️3.12
️✔️3.13
️✔️acs
️✔️latest
️✔️3.12
️✔️3.13
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.13
️✔️ams
️✔️latest
️✔️3.12
️✔️3.13
️✔️apim
️✔️latest
️✔️3.12
️✔️3.13
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.13
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️aro
️✔️latest
️✔️3.12
️✔️3.13
️✔️backup
️✔️latest
️✔️3.12
️✔️3.13
️✔️batch
️✔️latest
️✔️3.12
️✔️3.13
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.13
️✔️billing
️✔️latest
️✔️3.12
️✔️3.13
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️cdn
️✔️latest
️✔️3.12
️✔️3.13
️✔️cloud
️✔️latest
️✔️3.12
️✔️3.13
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.13
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.13
️✔️config
️✔️latest
️✔️3.12
️✔️3.13
️✔️configure
️✔️latest
️✔️3.12
️✔️3.13
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.13
️✔️container
️✔️latest
️✔️3.12
️✔️3.13
️✔️containerapp
️✔️latest
️✔️3.12
️✔️3.13
️✔️core
️✔️latest
️✔️3.12
️✔️3.13
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.13
️✔️databoxedge
️✔️latest
️✔️3.12
️✔️3.13
️✔️dls
️✔️latest
️✔️3.12
️✔️3.13
️✔️dms
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.13
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.13
️✔️find
️✔️latest
️✔️3.12
️✔️3.13
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.13
️✔️identity
️✔️latest
️✔️3.12
️✔️3.13
️✔️iot
️✔️latest
️✔️3.12
️✔️3.13
️✔️keyvault
️✔️latest
️✔️3.12
️✔️3.13
️✔️lab
️✔️latest
️✔️3.12
️✔️3.13
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️maps
️✔️latest
️✔️3.12
️✔️3.13
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.13
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.13
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.13
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.13
️✔️network
️✔️latest
️✔️3.12
️✔️3.13
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.13
️✔️postgresql
️✔️latest
️✔️3.12
️✔️3.13
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.13
️✔️profile
️✔️latest
️✔️3.12
️✔️3.13
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.13
️✔️redis
️✔️latest
️✔️3.12
️✔️3.13
️✔️relay
️✔️latest
️✔️3.12
️✔️3.13
️✔️resource
️✔️latest
️✔️3.12
️✔️3.13
️✔️role
️✔️latest
️✔️3.12
️✔️3.13
️✔️search
️✔️latest
️✔️3.12
️✔️3.13
️✔️security
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.13
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.13
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.13
️✔️sql
️✔️latest
️✔️3.12
️✔️3.13
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.13
️✔️storage
️✔️latest
️✔️3.12
️✔️3.13
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.13
️✔️telemetry
️✔️latest
️✔️3.12
️✔️3.13
️✔️util
️✔️latest
️✔️3.12
️✔️3.13
️✔️vm
️✔️latest
️✔️3.12
️✔️3.13

@azure-client-tools-bot-prd
Copy link
Copy Markdown

Hi @william051200,
Since the current milestone time is less than 7 days, this pr will be reviewed in the next milestone.

@yonzhan
Copy link
Copy Markdown
Collaborator

yonzhan commented May 18, 2026

Thank you for your contribution! We will review the pull request and get back to you soon.

@azure-client-tools-bot-prd
Copy link
Copy Markdown

azure-client-tools-bot-prd Bot commented May 18, 2026

⚠️AzureCLI-BreakingChangeTest
⚠️vm
rule cmd_name rule_message suggest_message
⚠️ 1006 - ParaAdd vm create cmd vm create added parameter data_disk_storage_fault_domain_alignment
⚠️ 1006 - ParaAdd vm create cmd vm create added parameter os_disk_storage_fault_domain_alignment
⚠️ 1006 - ParaAdd vmss create cmd vmss create added parameter data_disk_storage_fault_domain_alignment
⚠️ 1006 - ParaAdd vmss create cmd vmss create added parameter os_disk_storage_fault_domain_alignment
⚠️ 1006 - ParaAdd vmss create cmd vmss create added parameter zonal_platform_fault_domain_align_mode

@github-actions
Copy link
Copy Markdown

The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support in the vm command module for configuring “Aligned Zonal Fault Domains” for Flex VMSS and member VMs by introducing new CLI parameters, wiring them into the ARM template builder payload, and adding a live-only scenario test.

Changes:

  • Adds new vm create and vmss create parameters to set VMSS-level zonal alignment mode and per-disk storage fault domain alignment.
  • Propagates the new arguments through custom.py into _template_builder.py (VM + VMSS template payload).
  • Adds validators and a live-only scenario test covering positive and negative cases.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/azure-cli/azure/cli/command_modules/vm/tests/latest/test_vm_commands.py Adds a live-only scenario test for aligned zonal fault domains.
src/azure-cli/azure/cli/command_modules/vm/custom.py Threads new parameters through create_vm/create_vmss into the template builder.
src/azure-cli/azure/cli/command_modules/vm/_vm_utils.py Introduces enums backing the new CLI parameters.
src/azure-cli/azure/cli/command_modules/vm/_validators.py Adds validation for Flex/single-zone requirements and wires it into vm create / vmss create.
src/azure-cli/azure/cli/command_modules/vm/_template_builder.py Emits new Compute properties in VM/VMSS ARM template resources.
src/azure-cli/azure/cli/command_modules/vm/_params.py Defines the new CLI parameters and their enums.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +564 to +565
if os_disk_storage_fault_domain_alignment is not None:
profile['osDisk']['storageFaultDomainAlignment'] = os_disk_storage_fault_domain_alignment
min_api='2017-12-01', operation_group='virtual_machine_scale_sets'):
vmss_properties['platformFaultDomainCount'] = platform_fault_domain_count

if zonal_platform_fault_domain_align_mode is not None:
'--os-disk-storage-fault-domain-alignment '
'is only available for VM in a Flex VMSS.')

if len(vmss_show.get('zones', [])) > 1:
Comment on lines +763 to +767
if not namespace.vmss:
raise InvalidArgumentValueError('usage error: --data-disk-storage-fault-domain-alignment/'
'--os-disk-storage-fault-domain-alignment '
'is only available for VM in a Flex VMSS.')

Comment on lines +1857 to +1861
if namespace.zones and len(namespace.zones) > 1:
raise InvalidArgumentValueError('usage error: --data-disk-storage-fault-domain-alignment/'
'--os-disk-storage-fault-domain-alignment/'
'--zonal-platform-fault-domain-align-mode '
'is only available for VMSS with single Availability Zone')
Comment on lines +11816 to +11817
from azure.cli.core.azclierror import ArgumentUsageError
with self.assertRaisesRegex(ArgumentUsageError, 'Flex'):
Comment on lines +491 to +495
'data_disk_storage_fault_domain_alignment',
options_list=['--data-disk-storage-fault-domain-alignment', '--data-disk-storage-fda'],
arg_type=get_enum_type(DiskStorageAlignment),
help='Specifies the storage fault domain alignment type for the disk.'
)
Comment on lines +837 to +849
arg_type=get_enum_type(DiskStorageAlignment),
help='Specifies the storage fault domain alignment type for the disk.'
)
c.argument(
'os_disk_storage_fault_domain_alignment',
options_list=['--os-disk-storage-fault-domain-alignment', '--os-disk-storage-fda'],
arg_type=get_enum_type(DiskStorageAlignment),
help='Specifies the storage fault domain alignment type for the disk.'
)
c.argument(
'zonal_platform_fault_domain_align_mode',
options_list=['--zonal-platform-fault-domain-align-mode', '--zonal-fda'],
arg_type=get_enum_type(FaultDomainAlignment),
@william051200 william051200 changed the title {Compute} az vm create/ update: Support Aligned Zonal Fault Domains with --data-disk-storage-fault-domain-alignment, --os-disk-storage-fault-domain-alignment and --zonal-platform-fault-domain-align-mode {Compute} az vm/ vmss create: Support Aligned Zonal Fault Domains with --data-disk-storage-fault-domain-alignment, --os-disk-storage-fault-domain-alignment and --zonal-platform-fault-domain-align-mode May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Support Aligned Zonal Fault Domains for VMSS Flex

6 participants