Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/azure-cli/azure/cli/command_modules/vm/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -764,7 +764,8 @@ def load_arguments(self, _):
c.argument('os_disk_delete_option', arg_type=get_enum_type(self.get_models('DiskDeleteOptionTypes')), min_api='2022-03-01', arg_group='Storage', help='Specify whether OS disk should be deleted or detached upon VMSS Flex deletion (This feature is only for VMSS with flexible orchestration mode).')
c.argument('data_disk_delete_option', arg_type=get_enum_type(self.get_models('DiskDeleteOptionTypes')), min_api='2022-03-01', arg_group='Storage', help='Specify whether data disk should be deleted or detached upon VMSS Flex deletion (This feature is only for VMSS with flexible orchestration mode)')
c.argument('skuprofile_vmsizes', nargs='+', min_api='2024-07-01', help='A list of VM sizes in the scale set. See https://azure.microsoft.com/pricing/details/virtual-machines/ for size info.')
c.argument('skuprofile_allostrat', options_list=['--skuprofile-allocation-strategy', '--sku-allocat-strat'], arg_type=get_enum_type(['LowestPrice', 'CapacityOptimized']), min_api='2024-07-01', help='Allocation strategy for vm sizes in SKU profile.')
c.argument('skuprofile_allostrat', options_list=['--skuprofile-allocation-strategy', '--sku-allocat-strat'], arg_type=get_enum_type(['LowestPrice', 'CapacityOptimized', 'Prioritized']), min_api='2024-07-01', help='Allocation strategy for vm sizes in SKU profile.')
c.argument('skuprofile_rank', nargs='+', min_api='2024-11-01', help='A list for ranks associated with the SKU profile vm sizes.')

with self.argument_context('vmss create', arg_group='Network Balancer') as c:
c.argument('application_gateway', help='Name to use when creating a new application gateway (default) or referencing an existing one. Can also reference an existing application gateway by ID or specify "" for none.', options_list=['--app-gateway'])
Expand Down Expand Up @@ -813,7 +814,8 @@ def load_arguments(self, _):
c.argument('ephemeral_os_disk_option', options_list=['--ephemeral-os-disk-option', '--ephemeral-option'], arg_type=get_enum_type(self.get_models('DiffDiskOptions')), min_api='2024-03-01', help='Specify the ephemeral disk settings for operating system disk.')
c.argument('zones', zones_type, min_api='2023-03-01')
c.argument('skuprofile_vmsizes', nargs='+', min_api='2024-07-01', help='A list of VM sizes in the scale set. See https://azure.microsoft.com/pricing/details/virtual-machines/ for size info.')
c.argument('skuprofile_allostrat', options_list=['--skuprofile-allocation-strategy', '--sku-allocat-strat'], arg_type=get_enum_type(['LowestPrice', 'CapacityOptimized']), min_api='2024-07-01', help='Allocation strategy for vm sizes in SKU profile.')
c.argument('skuprofile_allostrat', options_list=['--skuprofile-allocation-strategy', '--sku-allocat-strat'], arg_type=get_enum_type(['LowestPrice', 'CapacityOptimized', 'Prioritized']), min_api='2024-07-01', help='Allocation strategy for vm sizes in SKU profile.')
c.argument('skuprofile_rank', nargs='+', min_api='2024-11-01', help='A list for ranks associated with the SKU profile vm sizes.')

with self.argument_context('vmss update', min_api='2018-10-01', arg_group='Automatic Repairs') as c:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1039,7 +1039,8 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
security_posture_reference_id=None, security_posture_reference_exclude_extensions=None,
enable_resilient_vm_creation=None, enable_resilient_vm_deletion=None,
additional_scheduled_events=None, enable_user_reboot_scheduled_events=None,
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None, skuprofile_allostrat=None,
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None,
skuprofile_allostrat=None, skuprofile_rank=None,
security_posture_reference_is_overridable=None, zone_balance=None, wire_server_mode=None,
imds_mode=None, wire_server_access_control_profile_reference_id=None,
imds_access_control_profile_reference_id=None, enable_automatic_zone_balancing=None,
Expand Down Expand Up @@ -1649,6 +1650,16 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
'name': vm_size
}
sku_profile_vmsizes_list.append(vmsize_obj)

if skuprofile_rank:
if len(skuprofile_rank) != len(skuprofile_vmsizes):
raise ValidationError(
'The SKU profile rank list does not specify a rank for every VM size. ' +
'The number of ranks must match the number of VM sizes.')

for vm_size, rank in zip(sku_profile_vmsizes_list, skuprofile_rank):
vm_size['rank'] = rank

sku_profile = {
'vmSizes': sku_profile_vmsizes_list,
'allocationStrategy': skuprofile_allostrat
Expand Down
12 changes: 10 additions & 2 deletions src/azure-cli/azure/cli/command_modules/vm/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -3247,7 +3247,8 @@ def create_vmss(cmd, vmss_name, resource_group_name, image=None,
security_posture_reference_id=None, security_posture_reference_exclude_extensions=None,
enable_resilient_creation=None, enable_resilient_deletion=None,
additional_scheduled_events=None, enable_user_reboot_scheduled_events=None,
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None, skuprofile_allostrat=None,
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None,
skuprofile_allostrat=None, skuprofile_rank=None,
security_posture_reference_is_overridable=None, zone_balance=None, wire_server_mode=None,
imds_mode=None, wire_server_access_control_profile_reference_id=None,
imds_access_control_profile_reference_id=None, enable_automatic_zone_balancing=None,
Expand Down Expand Up @@ -3566,6 +3567,7 @@ def _get_public_ip_address_allocation(value, sku):
enable_user_reboot_scheduled_events=enable_user_reboot_scheduled_events,
enable_user_redeploy_scheduled_events=enable_user_redeploy_scheduled_events,
skuprofile_vmsizes=skuprofile_vmsizes, skuprofile_allostrat=skuprofile_allostrat,
skuprofile_rank=skuprofile_rank,
security_posture_reference_is_overridable=security_posture_reference_is_overridable,
zone_balance=zone_balance, wire_server_mode=wire_server_mode, imds_mode=imds_mode,
wire_server_access_control_profile_reference_id=wire_server_access_control_profile_reference_id,
Expand Down Expand Up @@ -4021,7 +4023,8 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
ephemeral_os_disk=None, ephemeral_os_disk_option=None, zones=None, additional_scheduled_events=None,
enable_user_reboot_scheduled_events=None, enable_user_redeploy_scheduled_events=None,
upgrade_policy_mode=None, enable_auto_os_upgrade=None, skuprofile_vmsizes=None,
skuprofile_allostrat=None, security_posture_reference_is_overridable=None, zone_balance=None,
skuprofile_allostrat=None, skuprofile_rank=None,
security_posture_reference_is_overridable=None, zone_balance=None,
wire_server_mode=None, imds_mode=None, wire_server_access_control_profile_reference_id=None,
imds_access_control_profile_reference_id=None, enable_automatic_zone_balancing=None,
automatic_zone_balancing_strategy=None, automatic_zone_balancing_behavior=None, **kwargs):
Expand Down Expand Up @@ -4286,6 +4289,11 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
}
sku_profile_vmsizes_list.append(vmsize_obj)
sku_profile['vmSizes'] = sku_profile_vmsizes_list

if skuprofile_rank:
for vm_size, rank in zip(sku_profile_vmsizes_list, skuprofile_rank):
vm_size['rank'] = rank

if skuprofile_allostrat is not None:
sku_profile['allocationStrategy'] = skuprofile_allostrat
vmss.sku_profile = sku_profile
Expand Down
Loading
Loading