Skip to content

Commit db09a85

Browse files
authored
[Compute] az vmss create/update: Add new paramter --zone-balance to support setting zone balance (#30692)
1 parent ceeff1e commit db09a85

File tree

5 files changed

+2276
-8
lines changed

5 files changed

+2276
-8
lines changed

src/azure-cli/azure/cli/command_modules/vm/_params.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,7 @@ def load_arguments(self, _):
871871
help='List of virtual machine extensions to exclude when applying the Security Posture. Either a Json string or a file path is acceptable. '
872872
'Please refer to https://docs.microsoft.com/rest/api/compute/virtualmachinescalesets/get#virtualmachineextension for the data format.')
873873
c.argument('security_posture_reference_is_overridable', arg_type=get_three_state_flag(), min_api='2024-03-01', options_list=['--security-posture-reference-is-overridable', '--is-overridable'], help='Whether the security posture can be overridden by the user.')
874+
c.argument('zone_balance', arg_type=get_three_state_flag(), min_api='2017-12-01', help='Whether to force strictly even Virtual Machine distribution cross x-zones in case there is zone outage.')
874875

875876
with self.argument_context('vmss update') as c:
876877
c.argument('instance_id', id_part='child_name_1', help="Update the VM instance with this ID. If missing, update the VMSS.")

src/azure-cli/azure/cli/command_modules/vm/_template_builder.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1004,7 +1004,7 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
10041004
enable_resilient_vm_creation=None, enable_resilient_vm_deletion=None,
10051005
additional_scheduled_events=None, enable_user_reboot_scheduled_events=None,
10061006
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None, skuprofile_allostrat=None,
1007-
security_posture_reference_is_overridable=None):
1007+
security_posture_reference_is_overridable=None, zone_balance=None):
10081008

10091009
# Build IP configuration
10101010
ip_configuration = {}
@@ -1436,6 +1436,9 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
14361436
if proximity_placement_group:
14371437
vmss_properties['proximityPlacementGroup'] = {'id': proximity_placement_group}
14381438

1439+
if zone_balance is not None:
1440+
vmss_properties['zoneBalance'] = zone_balance
1441+
14391442
scheduled_events_profile = {}
14401443
if terminate_notification_time is not None:
14411444
scheduled_events_profile.update({

src/azure-cli/azure/cli/command_modules/vm/custom.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3234,7 +3234,7 @@ def create_vmss(cmd, vmss_name, resource_group_name, image=None,
32343234
enable_resilient_creation=None, enable_resilient_deletion=None,
32353235
additional_scheduled_events=None, enable_user_reboot_scheduled_events=None,
32363236
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None, skuprofile_allostrat=None,
3237-
security_posture_reference_is_overridable=None):
3237+
security_posture_reference_is_overridable=None, zone_balance=None):
32383238
from azure.cli.core.commands.client_factory import get_subscription_id
32393239
from azure.cli.core.util import random_string, hash_string
32403240
from azure.cli.core.commands.arm import ArmTemplateBuilder
@@ -3549,7 +3549,8 @@ def _get_public_ip_address_allocation(value, sku):
35493549
enable_user_reboot_scheduled_events=enable_user_reboot_scheduled_events,
35503550
enable_user_redeploy_scheduled_events=enable_user_redeploy_scheduled_events,
35513551
skuprofile_vmsizes=skuprofile_vmsizes, skuprofile_allostrat=skuprofile_allostrat,
3552-
security_posture_reference_is_overridable=security_posture_reference_is_overridable)
3552+
security_posture_reference_is_overridable=security_posture_reference_is_overridable,
3553+
zone_balance=zone_balance)
35533554

35543555
vmss_resource['dependsOn'] = vmss_dependencies
35553556

@@ -3989,7 +3990,7 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
39893990
ephemeral_os_disk=None, ephemeral_os_disk_option=None, zones=None, additional_scheduled_events=None,
39903991
enable_user_reboot_scheduled_events=None, enable_user_redeploy_scheduled_events=None,
39913992
upgrade_policy_mode=None, enable_auto_os_upgrade=None, skuprofile_vmsizes=None,
3992-
skuprofile_allostrat=None, security_posture_reference_is_overridable=None, **kwargs):
3993+
skuprofile_allostrat=None, security_posture_reference_is_overridable=None, zone_balance=None, **kwargs):
39933994
vmss = kwargs['parameters']
39943995
aux_subscriptions = None
39953996
# pylint: disable=too-many-boolean-expressions
@@ -4293,6 +4294,9 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
42934294
if zones is not None:
42944295
vmss.zones = zones
42954296

4297+
if zone_balance is not None:
4298+
vmss.zone_balance = zone_balance
4299+
42964300
return sdk_no_wait(no_wait, client.virtual_machine_scale_sets.begin_create_or_update,
42974301
resource_group_name, name, **kwargs)
42984302

0 commit comments

Comments
 (0)