Skip to content

Commit aa347a1

Browse files
authored
[Compute] az vmss create/update: Add new parameter --security-posture-reference-is-overridable to support setting security posture reference overridable (#29958)
1 parent ef6af57 commit aa347a1

File tree

6 files changed

+2238
-1444
lines changed

6 files changed

+2238
-1444
lines changed

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

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -767,13 +767,6 @@ def load_arguments(self, _):
767767
c.argument('enable_vtpm', enable_vtpm_type)
768768
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).')
769769
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)')
770-
c.argument('security_posture_reference_id', min_api='2023-03-01',
771-
options_list=['--security-posture-reference-id', '--security-posture-id'],
772-
help='The security posture reference id in the form of /CommunityGalleries/{communityGalleryName}/securityPostures/{securityPostureName}/versions/{major.minor.patch}|{major.*}|latest')
773-
c.argument('security_posture_reference_exclude_extensions', min_api='2023-03-01', type=validate_file_or_dict,
774-
options_list=['--security-posture-reference-exclude-extensions', '--exclude-extensions'],
775-
help='List of virtual machine extensions to exclude when applying the Security Posture. Either a Json string or a file path is acceptable. '
776-
'Please refer to https://learn.microsoft.com/rest/api/compute/virtualmachinescalesets/get#virtualmachineextension for the data format.')
777770
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.')
778771
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.')
779772

@@ -821,13 +814,6 @@ def load_arguments(self, _):
821814
c.argument('enable_vtpm', enable_vtpm_type)
822815
c.argument('custom_data', help='Custom init script file or text (cloud-init, cloud-config, etc..)', completer=FilesCompleter(), type=file_type)
823816
c.argument('security_type', arg_type=get_enum_type(["TrustedLaunch", "Standard"]), min_api='2020-06-01', help='Specify the security type of the virtual machine scale set.')
824-
c.argument('security_posture_reference_id', min_api='2023-03-01',
825-
options_list=['--security-posture-reference-id', '--security-posture-id'],
826-
help='The security posture reference id in the form of /CommunityGalleries/{communityGalleryName}/securityPostures/{securityPostureName}/versions/{major.minor.patch}|{major.*}|latest')
827-
c.argument('security_posture_reference_exclude_extensions', min_api='2023-03-01', type=validate_file_or_dict,
828-
options_list=['--security-posture-reference-exclude-extensions', '--exclude-extensions'],
829-
help='List of virtual machine extensions to exclude when applying the Security Posture. Either a Json string or a file path is acceptable. '
830-
'Please refer to https://learn.microsoft.com/rest/api/compute/virtualmachinescalesets/get#virtualmachineextension for the data format.')
831817
c.argument('ephemeral_os_disk', arg_type=get_three_state_flag(), min_api='2024-03-01', help='Allow you to specify the ephemeral disk settings for the operating system disk. Specify it to false to set ephemeral disk setting as empty and migrate it to non ephemeral')
832818
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.')
833819
c.argument('zones', zones_type, min_api='2023-03-01')
@@ -871,6 +857,14 @@ def load_arguments(self, _):
871857
c.argument('enable_user_redeploy_scheduled_events', options_list=['--enable-user-redeploy-scheduled-events', '--enable-redeploy'], arg_type=get_three_state_flag(), min_api='2024-03-01', help='The configuration parameter used while creating user initiated redeploy scheduled event setting creation.')
872858
c.argument('enable_auto_os_upgrade', enable_auto_os_upgrade_type)
873859
c.argument('upgrade_policy_mode', help='Specify the mode of an upgrade to virtual machines in the scale set.', arg_type=get_enum_type(UpgradeMode))
860+
c.argument('security_posture_reference_id', min_api='2023-03-01',
861+
options_list=['--security-posture-reference-id', '--security-posture-id'],
862+
help='The security posture reference id in the form of /CommunityGalleries/{communityGalleryName}/securityPostures/{securityPostureName}/versions/{major.minor.patch}|{major.*}|latest')
863+
c.argument('security_posture_reference_exclude_extensions', min_api='2023-03-01', nargs='*',
864+
options_list=['--security-posture-reference-exclude-extensions', '--exclude-extensions'],
865+
help='List of virtual machine extensions to exclude when applying the Security Posture. Either a Json string or a file path is acceptable. '
866+
'Please refer to https://docs.microsoft.com/rest/api/compute/virtualmachinescalesets/get#virtualmachineextension for the data format.')
867+
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.')
874868

875869
with self.argument_context('vmss update') as c:
876870
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: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -978,8 +978,8 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
978978
security_posture_reference_id=None, security_posture_reference_exclude_extensions=None,
979979
enable_resilient_vm_creation=None, enable_resilient_vm_deletion=None,
980980
additional_scheduled_events=None, enable_user_reboot_scheduled_events=None,
981-
enable_user_redeploy_scheduled_events=None,
982-
skuprofile_vmsizes=None, skuprofile_allostrat=None):
981+
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None, skuprofile_allostrat=None,
982+
security_posture_reference_is_overridable=None):
983983

984984
# Build IP configuration
985985
ip_configuration = {}
@@ -1527,6 +1527,11 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
15271527
security_posture_reference['excludeExtensions'] = security_posture_reference_exclude_extensions
15281528
virtual_machine_profile['securityPostureReference'] = security_posture_reference
15291529

1530+
if security_posture_reference_is_overridable is not None:
1531+
security_posture_reference = virtual_machine_profile.get('securityPostureReference', {})
1532+
security_posture_reference['isOverridable'] = security_posture_reference_is_overridable
1533+
virtual_machine_profile['securityPostureReference'] = security_posture_reference
1534+
15301535
if virtual_machine_profile:
15311536
vmss_properties['virtualMachineProfile'] = virtual_machine_profile
15321537

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3196,8 +3196,8 @@ def create_vmss(cmd, vmss_name, resource_group_name, image=None,
31963196
security_posture_reference_id=None, security_posture_reference_exclude_extensions=None,
31973197
enable_resilient_creation=None, enable_resilient_deletion=None,
31983198
additional_scheduled_events=None, enable_user_reboot_scheduled_events=None,
3199-
enable_user_redeploy_scheduled_events=None,
3200-
skuprofile_vmsizes=None, skuprofile_allostrat=None):
3199+
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None, skuprofile_allostrat=None,
3200+
security_posture_reference_is_overridable=None):
32013201
from azure.cli.core.commands.client_factory import get_subscription_id
32023202
from azure.cli.core.util import random_string, hash_string
32033203
from azure.cli.core.commands.arm import ArmTemplateBuilder
@@ -3511,8 +3511,8 @@ def _get_public_ip_address_allocation(value, sku):
35113511
additional_scheduled_events=additional_scheduled_events,
35123512
enable_user_reboot_scheduled_events=enable_user_reboot_scheduled_events,
35133513
enable_user_redeploy_scheduled_events=enable_user_redeploy_scheduled_events,
3514-
skuprofile_vmsizes=skuprofile_vmsizes,
3515-
skuprofile_allostrat=skuprofile_allostrat)
3514+
skuprofile_vmsizes=skuprofile_vmsizes, skuprofile_allostrat=skuprofile_allostrat,
3515+
security_posture_reference_is_overridable=security_posture_reference_is_overridable)
35163516

35173517
vmss_resource['dependsOn'] = vmss_dependencies
35183518

@@ -3951,8 +3951,8 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
39513951
max_surge=None, enable_resilient_creation=None, enable_resilient_deletion=None,
39523952
ephemeral_os_disk=None, ephemeral_os_disk_option=None, zones=None, additional_scheduled_events=None,
39533953
enable_user_reboot_scheduled_events=None, enable_user_redeploy_scheduled_events=None,
3954-
upgrade_policy_mode=None, enable_auto_os_upgrade=None,
3955-
skuprofile_vmsizes=None, skuprofile_allostrat=None, **kwargs):
3954+
upgrade_policy_mode=None, enable_auto_os_upgrade=None, skuprofile_vmsizes=None,
3955+
skuprofile_allostrat=None, security_posture_reference_is_overridable=None, **kwargs):
39563956
vmss = kwargs['parameters']
39573957
aux_subscriptions = None
39583958
# pylint: disable=too-many-boolean-expressions
@@ -4230,7 +4230,8 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
42304230
else:
42314231
vmss.additional_capabilities.hibernation_enabled = enable_hibernation
42324232

4233-
if security_posture_reference_id is not None or security_posture_reference_exclude_extensions is not None:
4233+
if security_posture_reference_id is not None or security_posture_reference_exclude_extensions is not None or \
4234+
security_posture_reference_is_overridable is not None:
42344235
security_posture_reference = vmss.virtual_machine_profile.security_posture_reference
42354236
if security_posture_reference is None:
42364237
SecurityPostureReference = cmd.get_models('SecurityPostureReference')
@@ -4240,6 +4241,8 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
42404241
security_posture_reference.id = security_posture_reference_id
42414242
if security_posture_reference_exclude_extensions is not None:
42424243
security_posture_reference.exclude_extensions = security_posture_reference_exclude_extensions
4244+
if security_posture_reference_is_overridable is not None:
4245+
security_posture_reference.is_overridable = security_posture_reference_is_overridable
42434246

42444247
vmss.virtual_machine_profile.security_posture_reference = security_posture_reference
42454248

0 commit comments

Comments
 (0)