Skip to content
6 changes: 6 additions & 0 deletions src/azure-cli/azure/cli/command_modules/vm/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,8 @@ def load_arguments(self, _):
c.argument('additional_scheduled_events', options_list=['--additional-scheduled-events', '--additional-events'], arg_type=get_three_state_flag(), min_api='2024-07-01', help='The configuration parameter used while creating event grid and resource graph scheduled event setting.')
c.argument('enable_user_reboot_scheduled_events', options_list=['--enable-user-reboot-scheduled-events', '--enable-reboot'], arg_type=get_three_state_flag(), min_api='2024-07-01', help='The configuration parameter used while publishing scheduled events additional publishing targets.')
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-07-01', help='The configuration parameter used while creating user initiated redeploy scheduled event setting creation.')
c.argument('scheduled_events_api_version', options_list=['--scheduled-events-api-version', '--se-api-version'], help='Specifies the api-version to determine which Scheduled Events configuration schema version will be delivered.')
c.argument('enable_all_instance_down', options_list=['--enable-all-instance-down', '--all-instance-down'], arg_type=get_three_state_flag(), help='Specifies if Scheduled Events should be auto-approved when all instances are down. Its default value is true.')
Comment on lines +403 to +404
# endregion

# region VirtualMachines
Expand Down Expand Up @@ -472,6 +474,8 @@ def load_arguments(self, _):
c.argument('additional_scheduled_events', options_list=['--additional-scheduled-events', '--additional-events'], arg_type=get_three_state_flag(), min_api='2024-07-01', help='The configuration parameter used while creating event grid and resource graph scheduled event setting.')
c.argument('enable_user_reboot_scheduled_events', options_list=['--enable-user-reboot-scheduled-events', '--enable-reboot'], arg_type=get_three_state_flag(), min_api='2024-07-01', help='The configuration parameter used while publishing scheduled events additional publishing targets.')
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-07-01', help='The configuration parameter used while creating user initiated redeploy scheduled event setting creation.')
c.argument('scheduled_events_api_version', options_list=['--scheduled-events-api-version', '--se-api-version'], help='Specifies the api-version to determine which Scheduled Events configuration schema version will be delivered.')
c.argument('enable_all_instance_down', options_list=['--enable-all-instance-down', '--all-instance-down'], arg_type=get_three_state_flag(), help='Specifies if Scheduled Events should be auto-approved when all instances are down. Its default value is true.')
Comment on lines +477 to +478
c.argument('align_regional_disks_to_vm_zone', options_list=['--align-regional-disks-to-vm-zone', '--align-regional-disks'], arg_type=get_three_state_flag(), min_api='2024-11-01', help='Specify whether the regional disks should be aligned/moved to the VM zone. This is applicable only for VMs with placement property set. Please note that this change is irreversible.')
c.argument('key_incarnation_id', type=int, min_api='2024-11-01', help='Increase the value of this property allows user to reset the key used for securing communication channel between guest and host.')
c.argument('security_type', arg_type=get_enum_type(["TrustedLaunch", "Standard", "ConfidentialVM"], default=None), help='Specify the security type of the virtual machine. The value Standard can be used if subscription has feature flag UseStandardSecurityType registered under Microsoft.Compute namespace. Refer to https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/preview-features for steps to enable required feature.')
Expand Down Expand Up @@ -926,6 +930,8 @@ def load_arguments(self, _):
c.argument('additional_scheduled_events', options_list=['--additional-scheduled-events', '--additional-events'], arg_type=get_three_state_flag(), min_api='2024-03-01', help='The configuration parameter used while creating event grid and resource graph scheduled event setting.')
c.argument('enable_user_reboot_scheduled_events', options_list=['--enable-user-reboot-scheduled-events', '--enable-reboot'], arg_type=get_three_state_flag(), min_api='2024-03-01', help='The configuration parameter used while publishing scheduled events additional publishing targets.')
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.')
c.argument('scheduled_events_api_version', options_list=['--scheduled-events-api-version', '--se-api-version'], help='Specifies the api-version to determine which Scheduled Events configuration schema version will be delivered.')
c.argument('enable_all_instance_down', options_list=['--enable-all-instance-down', '--all-instance-down'], arg_type=get_three_state_flag(), help='Specifies if Scheduled Events should be auto-approved when all instances are down. Its default value is true.')
Comment on lines +933 to +934
c.argument('enable_auto_os_upgrade', enable_auto_os_upgrade_type)
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))
c.argument('security_posture_reference_id', min_api='2023-03-01',
Expand Down
65 changes: 48 additions & 17 deletions src/azure-cli/azure/cli/command_modules/vm/_template_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,7 @@ def build_vm_resource( # pylint: disable=too-many-locals, too-many-statements,
os_disk_security_encryption_type=None, os_disk_secure_vm_disk_encryption_set=None, disk_controller_type=None,
enable_proxy_agent=None, proxy_agent_mode=None, additional_scheduled_events=None,
enable_user_reboot_scheduled_events=None, enable_user_redeploy_scheduled_events=None,
scheduled_events_api_version=None, enable_all_instance_down=None,
zone_placement_policy=None, include_zones=None, exclude_zones=None, align_regional_disks_to_vm_zone=None,
wire_server_mode=None, imds_mode=None, wire_server_access_control_profile_reference_id=None,
imds_access_control_profile_reference_id=None, key_incarnation_id=None, add_proxy_agent_extension=None,
Expand Down Expand Up @@ -599,12 +600,15 @@ def _build_storage_profile():
vm_properties['resiliencyProfile'] = resiliency_profile

scheduled_events_policy = {}
if additional_scheduled_events is not None:
if additional_scheduled_events is not None or scheduled_events_api_version is not None:
event_grid_and_resource_graph = {}
if additional_scheduled_events is not None:
event_grid_and_resource_graph["enable"] = additional_scheduled_events
if scheduled_events_api_version is not None:
event_grid_and_resource_graph["scheduledEventsApiVersion"] = scheduled_events_api_version
scheduled_events_policy.update({
"scheduledEventsAdditionalPublishingTargets": {
"eventGridAndResourceGraph": {
"enable": additional_scheduled_events
}
"eventGridAndResourceGraph": event_grid_and_resource_graph
}
})
if enable_user_redeploy_scheduled_events is not None:
Expand All @@ -619,6 +623,12 @@ def _build_storage_profile():
"automaticallyApprove": enable_user_reboot_scheduled_events
}
})
if enable_all_instance_down is not None:
scheduled_events_policy.update({
"allInstancesDown": {
"automaticallyApprove": enable_all_instance_down
}
})
if scheduled_events_policy:
vm_properties['scheduledEventsPolicy'] = scheduled_events_policy

Expand Down Expand Up @@ -747,7 +757,7 @@ def _build_storage_profile():
}

vm = {
'apiVersion': '2025-04-01',
'apiVersion': '2025-11-01',
'type': 'Microsoft.Compute/virtualMachines',
'name': name,
'location': location,
Expand Down Expand Up @@ -1057,7 +1067,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,
enable_user_redeploy_scheduled_events=None, scheduled_events_api_version=None,
enable_all_instance_down=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, add_proxy_agent_extension=None,
Expand Down Expand Up @@ -1520,12 +1531,15 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
virtual_machine_profile['scheduledEventsProfile'] = scheduled_events_profile

scheduled_events_policy = {}
if additional_scheduled_events is not None:
if additional_scheduled_events is not None or scheduled_events_api_version is not None:
event_grid_and_resource_graph = {}
if additional_scheduled_events is not None:
event_grid_and_resource_graph["enable"] = additional_scheduled_events
if scheduled_events_api_version is not None:
event_grid_and_resource_graph["scheduledEventsApiVersion"] = scheduled_events_api_version
scheduled_events_policy.update({
"scheduledEventsAdditionalPublishingTargets": {
"eventGridAndResourceGraph": {
"enable": additional_scheduled_events
}
"eventGridAndResourceGraph": event_grid_and_resource_graph
}
})
if enable_user_redeploy_scheduled_events is not None:
Expand All @@ -1540,6 +1554,12 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
"automaticallyApprove": enable_user_reboot_scheduled_events
}
})
if enable_all_instance_down is not None:
scheduled_events_policy.update({
"allInstancesDown": {
"automaticallyApprove": enable_all_instance_down
}
})
if scheduled_events_policy:
vmss_properties['scheduledEventsPolicy'] = scheduled_events_policy

Expand Down Expand Up @@ -1717,7 +1737,7 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
'name': name,
'location': location,
'tags': tags,
'apiVersion': '2025-04-01',
'apiVersion': '2025-11-01',
'dependsOn': [],
'properties': vmss_properties
}
Expand Down Expand Up @@ -1754,13 +1774,15 @@ def build_av_set_resource(cmd, name, location, tags, platform_update_domain_coun
platform_fault_domain_count, unmanaged, proximity_placement_group=None,
additional_scheduled_events=None,
enable_user_reboot_scheduled_events=None,
enable_user_redeploy_scheduled_events=None):
enable_user_redeploy_scheduled_events=None,
scheduled_events_api_version=None,
enable_all_instance_down=None):
av_set = {
'type': 'Microsoft.Compute/availabilitySets',
'name': name,
'location': location,
'tags': tags,
'apiVersion': cmd.get_api_version(ResourceType.MGMT_COMPUTE, operation_group='availability_sets'),
'apiVersion': "2025-04-01",
}

if cmd.supported_api_version(min_api='2016-04-30-preview', operation_group='availability_sets'):
Expand All @@ -1770,12 +1792,15 @@ def build_av_set_resource(cmd, name, location, tags, platform_update_domain_coun

properties = {"platformFaultDomainCount": platform_fault_domain_count}
scheduled_events_policy = {}
if additional_scheduled_events is not None:
if additional_scheduled_events is not None or scheduled_events_api_version is not None:
event_grid_and_resource_graph = {}
if additional_scheduled_events is not None:
event_grid_and_resource_graph["enable"] = additional_scheduled_events
if scheduled_events_api_version is not None:
event_grid_and_resource_graph["scheduledEventsApiVersion"] = scheduled_events_api_version
scheduled_events_policy.update({
"scheduledEventsAdditionalPublishingTargets": {
"eventGridAndResourceGraph": {
"enable": additional_scheduled_events
}
"eventGridAndResourceGraph": event_grid_and_resource_graph
}
})
if enable_user_redeploy_scheduled_events is not None:
Expand All @@ -1790,6 +1815,12 @@ def build_av_set_resource(cmd, name, location, tags, platform_update_domain_coun
"automaticallyApprove": enable_user_reboot_scheduled_events
}
})
if enable_all_instance_down is not None:
scheduled_events_policy.update({
"allInstancesDown": {
"automaticallyApprove": enable_all_instance_down
}
})

if scheduled_events_policy:
properties['scheduledEventsPolicy'] = scheduled_events_policy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class Show(AAZCommand):
"""

_aaz_info = {
"version": "2024-07-01",
"version": "2025-04-01",
"resources": [
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/availabilitysets/{}", "2024-07-01"],
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/availabilitysets/{}", "2025-04-01"],
]
}

Expand Down Expand Up @@ -120,7 +120,7 @@ def url_parameters(self):
def query_parameters(self):
parameters = {
**self.serialize_query_param(
"api-version", "2024-07-01",
"api-version", "2025-04-01",
required=True,
),
}
Expand Down Expand Up @@ -166,6 +166,10 @@ def _build_schema_on_200(cls):
flags={"client_flatten": True},
)
_schema_on_200.sku = AAZObjectType()
_schema_on_200.system_data = AAZObjectType(
serialized_name="systemData",
flags={"read_only": True},
)
_schema_on_200.tags = AAZDictType()
_schema_on_200.type = AAZStrType(
flags={"read_only": True},
Expand All @@ -188,11 +192,18 @@ def _build_schema_on_200(cls):
properties.statuses = AAZListType(
flags={"read_only": True},
)
properties.virtual_machine_scale_set_migration_info = AAZObjectType(
serialized_name="virtualMachineScaleSetMigrationInfo",
flags={"read_only": True},
)
properties.virtual_machines = AAZListType(
serialized_name="virtualMachines",
)

scheduled_events_policy = cls._schema_on_200.properties.scheduled_events_policy
scheduled_events_policy.all_instances_down = AAZObjectType(
serialized_name="allInstancesDown",
)
scheduled_events_policy.scheduled_events_additional_publishing_targets = AAZObjectType(
serialized_name="scheduledEventsAdditionalPublishingTargets",
)
Expand All @@ -203,13 +214,21 @@ def _build_schema_on_200(cls):
serialized_name="userInitiatedRedeploy",
)

all_instances_down = cls._schema_on_200.properties.scheduled_events_policy.all_instances_down
all_instances_down.automatically_approve = AAZBoolType(
serialized_name="automaticallyApprove",
)

scheduled_events_additional_publishing_targets = cls._schema_on_200.properties.scheduled_events_policy.scheduled_events_additional_publishing_targets
scheduled_events_additional_publishing_targets.event_grid_and_resource_graph = AAZObjectType(
serialized_name="eventGridAndResourceGraph",
)

event_grid_and_resource_graph = cls._schema_on_200.properties.scheduled_events_policy.scheduled_events_additional_publishing_targets.event_grid_and_resource_graph
event_grid_and_resource_graph.enable = AAZBoolType()
event_grid_and_resource_graph.scheduled_events_api_version = AAZStrType(
serialized_name="scheduledEventsApiVersion",
)

user_initiated_reboot = cls._schema_on_200.properties.scheduled_events_policy.user_initiated_reboot
user_initiated_reboot.automatically_approve = AAZBoolType(
Expand All @@ -233,6 +252,28 @@ def _build_schema_on_200(cls):
_element.message = AAZStrType()
_element.time = AAZStrType()

virtual_machine_scale_set_migration_info = cls._schema_on_200.properties.virtual_machine_scale_set_migration_info
virtual_machine_scale_set_migration_info.default_virtual_machine_scale_set_info = AAZObjectType(
serialized_name="defaultVirtualMachineScaleSetInfo",
flags={"read_only": True},
)
virtual_machine_scale_set_migration_info.migrate_to_virtual_machine_scale_set = AAZObjectType(
serialized_name="migrateToVirtualMachineScaleSet",
flags={"read_only": True},
)
_ShowHelper._build_schema_sub_resource_read(virtual_machine_scale_set_migration_info.migrate_to_virtual_machine_scale_set)

default_virtual_machine_scale_set_info = cls._schema_on_200.properties.virtual_machine_scale_set_migration_info.default_virtual_machine_scale_set_info
default_virtual_machine_scale_set_info.constrained_maximum_capacity = AAZBoolType(
serialized_name="constrainedMaximumCapacity",
flags={"read_only": True},
)
default_virtual_machine_scale_set_info.default_virtual_machine_scale_set = AAZObjectType(
serialized_name="defaultVirtualMachineScaleSet",
flags={"read_only": True},
)
_ShowHelper._build_schema_sub_resource_read(default_virtual_machine_scale_set_info.default_virtual_machine_scale_set)

virtual_machines = cls._schema_on_200.properties.virtual_machines
virtual_machines.Element = AAZObjectType()
_ShowHelper._build_schema_sub_resource_read(virtual_machines.Element)
Expand All @@ -242,6 +283,26 @@ def _build_schema_on_200(cls):
sku.name = AAZStrType()
sku.tier = AAZStrType()

system_data = cls._schema_on_200.system_data
system_data.created_at = AAZStrType(
serialized_name="createdAt",
)
system_data.created_by = AAZStrType(
serialized_name="createdBy",
)
system_data.created_by_type = AAZStrType(
serialized_name="createdByType",
)
system_data.last_modified_at = AAZStrType(
serialized_name="lastModifiedAt",
)
system_data.last_modified_by = AAZStrType(
serialized_name="lastModifiedBy",
)
system_data.last_modified_by_type = AAZStrType(
serialized_name="lastModifiedByType",
)

tags = cls._schema_on_200.tags
tags.Element = AAZStrType()

Expand Down
Loading
Loading