diff --git a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__init__.py b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__init__.py index 72b1df4b559..5cdfd5803e3 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__init__.py +++ b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/__init__.py @@ -28,3 +28,4 @@ from ._update import * from ._update_domain_walk import * from ._wait import * +from ._manualupgrade import * diff --git a/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/_manualupgrade.py b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/_manualupgrade.py new file mode 100644 index 00000000000..3126a6c3946 --- /dev/null +++ b/src/azure-cli/azure/cli/command_modules/vm/aaz/latest/vmss/_manualupgrade.py @@ -0,0 +1,181 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +class Manualupgrade(AAZCommand): + """Upgrades one or more virtual machines to the latest SKU set in the VM scale set model. + """ + + _aaz_info = { + "version": "2024-11-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/virtualmachinescalesets/{}/manualupgrade", "2024-11-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, None) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.vm_scale_set_name = AAZStrArg( + options=["--vm-scale-set-name"], + help="The name of the VM scale set.", + required=True, + id_part="name", + ) + + # define Arg Group "VmInstanceIDs" + + _args_schema = cls._args_schema + _args_schema.instance_ids = AAZListArg( + options=["--instance-ids"], + arg_group="VmInstanceIDs", + help="The virtual machine scale set instance ids.", + required=True, + ) + + instance_ids = cls._args_schema.instance_ids + instance_ids.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.VirtualMachineScaleSetsUpdateInstances(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class VirtualMachineScaleSetsUpdateInstances(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/manualupgrade", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "vmScaleSetName", self.ctx.args.vm_scale_set_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2024-11-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("instanceIds", AAZListType, ".instance_ids", typ_kwargs={"flags": {"required": True}}) + + instance_ids = _builder.get(".instanceIds") + if instance_ids is not None: + instance_ids.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + pass + + +class _ManualupgradeHelper: + """Helper class for Manualupgrade""" + + +__all__ = ["Manualupgrade"] diff --git a/src/azure-cli/azure/cli/command_modules/vm/custom.py b/src/azure-cli/azure/cli/command_modules/vm/custom.py index 9577f66cc88..a6327e8e7c9 100644 --- a/src/azure-cli/azure/cli/command_modules/vm/custom.py +++ b/src/azure-cli/azure/cli/command_modules/vm/custom.py @@ -4550,11 +4550,13 @@ def stop_vmss(cmd, resource_group_name, vm_scale_set_name, instance_ids=None, no def update_vmss_instances(cmd, resource_group_name, vm_scale_set_name, instance_ids, no_wait=False): - client = _compute_client_factory(cmd.cli_ctx) - VirtualMachineScaleSetVMInstanceRequiredIDs = cmd.get_models('VirtualMachineScaleSetVMInstanceRequiredIDs') - instance_ids = VirtualMachineScaleSetVMInstanceRequiredIDs(instance_ids=instance_ids) - return sdk_no_wait(no_wait, client.virtual_machine_scale_sets.begin_update_instances, - resource_group_name, vm_scale_set_name, instance_ids) + from .aaz.latest.vmss import Manualupgrade + return Manualupgrade(cli_ctx=cmd.cli_ctx)(command_args={ + 'resource_group': resource_group_name, + 'vm_scale_set_name': vm_scale_set_name, + 'instance_ids': instance_ids, + 'no_wait': no_wait, + }) def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False, instance_id=None,