Skip to content
Draft
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
11 changes: 11 additions & 0 deletions src/azure-cli/azure/cli/command_modules/vm/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -994,6 +994,8 @@
examples:
- name: Create an availability set.
text: az vm availability-set create -n MyAvSet -g MyResourceGroup --platform-fault-domain-count 2 --platform-update-domain-count 2
- name: Create an availability set with Scheduled Events auto-approval and API version.
text: az vm availability-set create -n MyAvSet -g MyResourceGroup --platform-fault-domain-count 2 --platform-update-domain-count 2 --enable-all-instance-down true --scheduled-events-api-version 2020-07-01
"""

helps['vm boot-diagnostics'] = """
Expand Down Expand Up @@ -1084,6 +1086,9 @@
- name: Create a default Ubuntu2204 VM with automatic SSH authentication.
text: >
az vm create -n MyVm -g MyResourceGroup --image Ubuntu2204
- name: Create a VM with Scheduled Events auto-approval and API version.
text: >
az vm create -n MyVm -g MyResourceGroup --image Ubuntu2204 --enable-all-instance-down true --scheduled-events-api-version 2020-07-01
- name: Create a default RedHat VM with automatic SSH authentication using an image URN.
text: >
az vm create -n MyVm -g MyResourceGroup --image RedHat:RHEL:7-RAW:7.4.2018010506
Expand Down Expand Up @@ -2239,6 +2244,9 @@
- name: Create a Windows VM scale set with 5 instances, a load balancer, a public IP address, a 2GB data disk and 40GB OS disk.
text: >
az vmss create -n MyVmss -g MyResourceGroup --instance-count 5 --image Win2016Datacenter --data-disk-sizes-gb 2 --os-disk-size-gb 40
- name: Create a VMSS with Scheduled Events auto-approval and API version.
text: >
az vmss create -n MyVmss -g MyResourceGroup --image Ubuntu2204 --enable-all-instance-down true --scheduled-events-api-version 2020-07-01
- name: Create a Linux VM scale set with an auto-generated ssh key pair, a public IP address, a DNS entry, an existing load balancer, and an existing virtual network.
text: |
az vmss create -n MyVmss -g MyResourceGroup --public-ip-address-dns-name my-globally-dns-name \\
Expand Down Expand Up @@ -2807,6 +2815,9 @@
text: >
az vmss update -n MyVmss -g MyResourceGroup --security-posture-reference-id /CommunityGalleries/{communityGalleryName}/securityPostures/{securityPostureName}/versions/{version} \\
--security-posture-reference-exclude-extensions "c:\\tmp\\exclude_extensions.json"
- name: Update a VMSS with Scheduled Events auto-approval and API version.
text: >
az vmss update -n MyVmss -g MyResourceGroup --enable-all-instance-down true --scheduled-events-api-version 2020-07-01
"""

helps['vmss update-instances'] = """
Expand Down
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('enable_all_instance_down', options_list=['--all-instance-down', '--enable-all-instance-down'], arg_type=get_three_state_flag(), min_api='2025-04-01', help='Specify if Scheduled Events should be auto-approved when all instances are down. Its default value is true.')
c.argument('scheduled_events_api_version', options_list=['--se-api-version', '--scheduled-events-api-version'], min_api='2025-04-01', help='Specify the api-version to determine which Scheduled Events configuration schema version will be delivered.')
# 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('enable_all_instance_down', options_list=['--all-instance-down', '--enable-all-instance-down'], arg_type=get_three_state_flag(), min_api='2025-04-01', help='Specify if Scheduled Events should be auto-approved when all instances are down. Its default value is true.')
c.argument('scheduled_events_api_version', options_list=['--se-api-version', '--scheduled-events-api-version'], min_api='2025-04-01', help='Specify the api-version to determine which Scheduled Events configuration schema version will be delivered.')
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('enable_all_instance_down', options_list=['--all-instance-down', '--enable-all-instance-down'], arg_type=get_three_state_flag(), min_api='2025-04-01', help='Specify if Scheduled Events should be auto-approved when all instances are down. Its default value is true.')
c.argument('scheduled_events_api_version', options_list=['--se-api-version', '--scheduled-events-api-version'], min_api='2025-04-01', help='Specify the api-version to determine which Scheduled Events configuration schema version will be delivered.')
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
68 changes: 46 additions & 22 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,8 +309,9 @@ 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,
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,
enable_all_instance_down=None, scheduled_events_api_version=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,
disk_iops_read_write=None, disk_mbps_read_write=None, zone_movement=None):

Expand Down Expand Up @@ -599,12 +600,19 @@ 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["scheduledEventsAdditionalPublishingTargets"] = {
"eventGridAndResourceGraph": event_grid_and_resource_graph
}
if enable_all_instance_down is not None:
scheduled_events_policy.update({
"scheduledEventsAdditionalPublishingTargets": {
"eventGridAndResourceGraph": {
"enable": additional_scheduled_events
}
"allInstancesDown": {
"automaticallyApprove": enable_all_instance_down
}
})
if enable_user_redeploy_scheduled_events is not None:
Expand Down Expand Up @@ -1057,10 +1065,10 @@ 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, skuprofile_rank=None,
security_posture_reference_is_overridable=None, zone_balance=None, wire_server_mode=None,
imds_mode=None, add_proxy_agent_extension=None,
enable_user_redeploy_scheduled_events=None, enable_all_instance_down=None,
scheduled_events_api_version=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,
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,
Expand Down Expand Up @@ -1520,12 +1528,19 @@ 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["scheduledEventsAdditionalPublishingTargets"] = {
"eventGridAndResourceGraph": event_grid_and_resource_graph
}
if enable_all_instance_down is not None:
scheduled_events_policy.update({
"scheduledEventsAdditionalPublishingTargets": {
"eventGridAndResourceGraph": {
"enable": additional_scheduled_events
}
"allInstancesDown": {
"automaticallyApprove": enable_all_instance_down
}
})
if enable_user_redeploy_scheduled_events is not None:
Expand Down Expand Up @@ -1754,7 +1769,9 @@ 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,
enable_all_instance_down=None,
scheduled_events_api_version=None):
av_set = {
'type': 'Microsoft.Compute/availabilitySets',
'name': name,
Expand All @@ -1770,12 +1787,19 @@ 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["scheduledEventsAdditionalPublishingTargets"] = {
"eventGridAndResourceGraph": event_grid_and_resource_graph
}
if enable_all_instance_down is not None:
scheduled_events_policy.update({
"scheduledEventsAdditionalPublishingTargets": {
"eventGridAndResourceGraph": {
"enable": additional_scheduled_events
}
"allInstancesDown": {
"automaticallyApprove": enable_all_instance_down
}
})
if enable_user_redeploy_scheduled_events is not None:
Expand Down
Loading
Loading