Skip to content

Commit 1c8b8e4

Browse files
[Compute] az vm/vmss create/update: Support --add-proxy-agent-extension parameter to specify whether to implicitly install the ProxyAgent Extension (#32298)
1 parent a469a8c commit 1c8b8e4

12 files changed

+15151
-14075
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
@@ -1254,6 +1254,7 @@ def load_arguments(self, _):
12541254
c.argument('wire_server_access_control_profile_reference_id', options_list=['--wire-server-access-control-profile-reference-id', '--wire-server-profile-id'], min_api='2024-11-01', help='Specify the access control profile version resource id of wire server.')
12551255
c.argument('imds_mode', arg_type=get_enum_type(self.get_models('Mode')), min_api='2024-11-01', help='Specify the mode that proxy agent will execute on if the feature is enabled.')
12561256
c.argument('imds_access_control_profile_reference_id', options_list=['--imds-access-control-profile-reference-id', '--imds-profile-id'], min_api='2024-11-01', help='Specify the access control profile version resource id resource id of imds.')
1257+
c.argument('add_proxy_agent_extension', options_list=['--add-proxy-agent-extension', '--add-proxy-agent-ext'], arg_type=get_three_state_flag(), help="Specify whether to implicitly install the ProxyAgent Extension. This option is currently applicable only for Linux OS. Use with --enable-proxy-agent.")
12571258

12581259
with self.argument_context('vm update') as c:
12591260
c.argument('license_type', license_type)

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ def build_vm_resource( # pylint: disable=too-many-locals, too-many-statements,
311311
enable_user_reboot_scheduled_events=None, enable_user_redeploy_scheduled_events=None,
312312
zone_placement_policy=None, include_zones=None, exclude_zones=None, align_regional_disks_to_vm_zone=None,
313313
wire_server_mode=None, imds_mode=None, wire_server_access_control_profile_reference_id=None,
314-
imds_access_control_profile_reference_id=None, key_incarnation_id=None):
314+
imds_access_control_profile_reference_id=None, key_incarnation_id=None, add_proxy_agent_extension=None):
315315

316316
os_caching = disk_info['os'].get('caching')
317317

@@ -695,6 +695,9 @@ def _build_storage_profile():
695695
if imds:
696696
proxy_agent_settings['imds'] = imds
697697

698+
if add_proxy_agent_extension is not None:
699+
proxy_agent_settings['addProxyAgentExtension'] = add_proxy_agent_extension
700+
698701
if proxy_agent_settings:
699702
vm_properties['securityProfile']['proxyAgentSettings'] = proxy_agent_settings
700703

@@ -1042,7 +1045,8 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
10421045
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None,
10431046
skuprofile_allostrat=None, skuprofile_rank=None,
10441047
security_posture_reference_is_overridable=None, zone_balance=None, wire_server_mode=None,
1045-
imds_mode=None, wire_server_access_control_profile_reference_id=None,
1048+
imds_mode=None, add_proxy_agent_extension=None,
1049+
wire_server_access_control_profile_reference_id=None,
10461050
imds_access_control_profile_reference_id=None, enable_automatic_zone_balancing=None,
10471051
automatic_zone_balancing_strategy=None, automatic_zone_balancing_behavior=None,
10481052
enable_automatic_repairs=None):
@@ -1598,6 +1602,9 @@ def build_vmss_resource(cmd, name, computer_name_prefix, location, tags, overpro
15981602
if imds:
15991603
proxy_agent_settings['imds'] = imds
16001604

1605+
if add_proxy_agent_extension is not None:
1606+
proxy_agent_settings['addProxyAgentExtension'] = add_proxy_agent_extension
1607+
16011608
if proxy_agent_settings:
16021609
security_profile['proxyAgentSettings'] = proxy_agent_settings
16031610

src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vm/_update.py

Lines changed: 177 additions & 28 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/_update.py

Lines changed: 980 additions & 274 deletions
Large diffs are not rendered by default.

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

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
from .aaz.latest.vm.disk import AttachDetachDataDisk
4949
from .aaz.latest.vm import Update as UpdateVM
50+
from .aaz.latest.vmss import Update as UpdateVMSS
5051

5152
from .generated.custom import * # noqa: F403, pylint: disable=unused-wildcard-import,wildcard-import
5253
try:
@@ -873,7 +874,7 @@ def create_vm(cmd, vm_name, resource_group_name, image=None, size='Standard_DS1_
873874
enable_user_redeploy_scheduled_events=None, zone_placement_policy=None, include_zones=None,
874875
exclude_zones=None, align_regional_disks_to_vm_zone=None, wire_server_mode=None, imds_mode=None,
875876
wire_server_access_control_profile_reference_id=None, imds_access_control_profile_reference_id=None,
876-
key_incarnation_id=None):
877+
key_incarnation_id=None, add_proxy_agent_extension=None):
877878

878879
from azure.cli.core.commands.client_factory import get_subscription_id
879880
from azure.cli.core.util import random_string, hash_string
@@ -1103,7 +1104,7 @@ def create_vm(cmd, vm_name, resource_group_name, image=None, size='Standard_DS1_
11031104
imds_mode=imds_mode,
11041105
wire_server_access_control_profile_reference_id=wire_server_access_control_profile_reference_id,
11051106
imds_access_control_profile_reference_id=imds_access_control_profile_reference_id,
1106-
key_incarnation_id=key_incarnation_id)
1107+
key_incarnation_id=key_incarnation_id, add_proxy_agent_extension=add_proxy_agent_extension)
11071108

11081109
vm_resource['dependsOn'] = vm_dependencies
11091110

@@ -1649,6 +1650,7 @@ def update_vm(cmd, resource_group_name, vm_name, os_disk=None, disk_caching=None
16491650
security_type=None, enable_proxy_agent=None, proxy_agent_mode=None, additional_scheduled_events=None,
16501651
enable_user_reboot_scheduled_events=None, enable_user_redeploy_scheduled_events=None,
16511652
align_regional_disks_to_vm_zone=None, wire_server_mode=None, imds_mode=None,
1653+
add_proxy_agent_extension=None,
16521654
wire_server_access_control_profile_reference_id=None, imds_access_control_profile_reference_id=None,
16531655
key_incarnation_id=None, **kwargs):
16541656
from azure.mgmt.core.tools import parse_resource_id, resource_id, is_valid_resource_id
@@ -1680,6 +1682,21 @@ def _output(self, *args, **kwargs):
16801682
}))
16811683
vm = get_vm_to_update(cmd, resource_group_name, vm_name)
16821684

1685+
if add_proxy_agent_extension is not None:
1686+
args = {
1687+
'resource_group': resource_group_name,
1688+
'vm_name': vm_name,
1689+
'no_wait': no_wait,
1690+
'security_profile': {
1691+
'proxy_agent_settings': {
1692+
'add_proxy_agent_extension': add_proxy_agent_extension
1693+
}
1694+
}
1695+
}
1696+
1697+
LongRunningOperation(cmd.cli_ctx)(UpdateVM(cli_ctx=cmd.cli_ctx)(command_args=args))
1698+
vm = get_vm_to_update(cmd, resource_group_name, vm_name)
1699+
16831700
disk_name = None
16841701
if os_disk is not None:
16851702
if is_valid_resource_id(os_disk):
@@ -1897,7 +1914,8 @@ def _output(self, *args, **kwargs):
18971914
}
18981915
client = _compute_client_factory(cmd.cli_ctx, aux_subscriptions=aux_subscriptions)
18991916
if wire_server_access_control_profile_reference_id is not None or \
1900-
imds_access_control_profile_reference_id is not None:
1917+
imds_access_control_profile_reference_id is not None or \
1918+
add_proxy_agent_extension is not None:
19011919
kwargs['parameters'] = vm
19021920
return sdk_no_wait(no_wait, client.virtual_machines.begin_create_or_update, resource_group_name, vm_name, **kwargs)
19031921
# endregion
@@ -3407,7 +3425,7 @@ def create_vmss(cmd, vmss_name, resource_group_name, image=None,
34073425
enable_user_redeploy_scheduled_events=None, skuprofile_vmsizes=None,
34083426
skuprofile_allostrat=None, skuprofile_rank=None,
34093427
security_posture_reference_is_overridable=None, zone_balance=None, wire_server_mode=None,
3410-
imds_mode=None, wire_server_access_control_profile_reference_id=None,
3428+
imds_mode=None, add_proxy_agent_extension=None, wire_server_access_control_profile_reference_id=None,
34113429
imds_access_control_profile_reference_id=None, enable_automatic_zone_balancing=None,
34123430
automatic_zone_balancing_strategy=None, automatic_zone_balancing_behavior=None,
34133431
enable_automatic_repairs=None):
@@ -3728,6 +3746,7 @@ def _get_public_ip_address_allocation(value, sku):
37283746
skuprofile_rank=skuprofile_rank,
37293747
security_posture_reference_is_overridable=security_posture_reference_is_overridable,
37303748
zone_balance=zone_balance, wire_server_mode=wire_server_mode, imds_mode=imds_mode,
3749+
add_proxy_agent_extension=add_proxy_agent_extension,
37313750
wire_server_access_control_profile_reference_id=wire_server_access_control_profile_reference_id,
37323751
imds_access_control_profile_reference_id=imds_access_control_profile_reference_id,
37333752
enable_automatic_zone_balancing=enable_automatic_zone_balancing,
@@ -4166,7 +4185,8 @@ def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False
41664185
upgrade_policy_mode=None, enable_auto_os_upgrade=None, skuprofile_vmsizes=None,
41674186
skuprofile_allostrat=None, skuprofile_rank=None,
41684187
security_posture_reference_is_overridable=None, zone_balance=None,
4169-
wire_server_mode=None, imds_mode=None, wire_server_access_control_profile_reference_id=None,
4188+
wire_server_mode=None, imds_mode=None, add_proxy_agent_extension=None,
4189+
wire_server_access_control_profile_reference_id=None,
41704190
imds_access_control_profile_reference_id=None, enable_automatic_zone_balancing=None,
41714191
automatic_zone_balancing_strategy=None, automatic_zone_balancing_behavior=None, **kwargs):
41724192
vmss = kwargs['parameters']
@@ -4197,6 +4217,23 @@ def _output(self, *args, **kwargs):
41974217
}))
41984218
vmss = get_vmss_modified(cmd, resource_group_name, name, instance_id, security_type)
41994219

4220+
if add_proxy_agent_extension is not None:
4221+
args = {
4222+
'resource_group': resource_group_name,
4223+
'vm_scale_set_name': name,
4224+
'no_wait': no_wait,
4225+
'virtual_machine_profile': {
4226+
'security_profile': {
4227+
'proxy_agent_settings': {
4228+
'add_proxy_agent_extension': add_proxy_agent_extension
4229+
}
4230+
}
4231+
}
4232+
}
4233+
4234+
LongRunningOperation(cmd.cli_ctx)(UpdateVMSS(cli_ctx=cmd.cli_ctx)(command_args=args))
4235+
vmss = get_vmss_modified(cmd, resource_group_name, name, instance_id, security_type)
4236+
42004237
aux_subscriptions = None
42014238
# pylint: disable=too-many-boolean-expressions
42024239
if vmss and hasattr(vmss, 'virtual_machine_profile') and vmss.virtual_machine_profile and \
@@ -4542,7 +4579,8 @@ def _output(self, *args, **kwargs):
45424579
vmss.zone_balance = zone_balance
45434580

45444581
if wire_server_access_control_profile_reference_id is not None or \
4545-
imds_access_control_profile_reference_id is not None:
4582+
imds_access_control_profile_reference_id is not None or \
4583+
add_proxy_agent_extension is not None:
45464584
kwargs['parameters'] = vmss
45474585

45484586
return sdk_no_wait(no_wait, client.virtual_machine_scale_sets.begin_create_or_update,

0 commit comments

Comments
 (0)