Skip to content

Commit b7861d2

Browse files
authored
{Compute} migrate vmss update-instances to aaz (#32851)
1 parent da8aea6 commit b7861d2

3 files changed

Lines changed: 189 additions & 5 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,4 @@
2828
from ._update import *
2929
from ._update_domain_walk import *
3030
from ._wait import *
31+
from ._manualupgrade import *
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
# --------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for license information.
4+
#
5+
# Code generated by aaz-dev-tools
6+
# --------------------------------------------------------------------------------------------
7+
8+
# pylint: skip-file
9+
# flake8: noqa
10+
11+
from azure.cli.core.aaz import *
12+
13+
14+
class Manualupgrade(AAZCommand):
15+
"""Upgrades one or more virtual machines to the latest SKU set in the VM scale set model.
16+
"""
17+
18+
_aaz_info = {
19+
"version": "2024-11-01",
20+
"resources": [
21+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/virtualmachinescalesets/{}/manualupgrade", "2024-11-01"],
22+
]
23+
}
24+
25+
AZ_SUPPORT_NO_WAIT = True
26+
27+
def _handler(self, command_args):
28+
super()._handler(command_args)
29+
return self.build_lro_poller(self._execute_operations, None)
30+
31+
_args_schema = None
32+
33+
@classmethod
34+
def _build_arguments_schema(cls, *args, **kwargs):
35+
if cls._args_schema is not None:
36+
return cls._args_schema
37+
cls._args_schema = super()._build_arguments_schema(*args, **kwargs)
38+
39+
# define Arg Group ""
40+
41+
_args_schema = cls._args_schema
42+
_args_schema.resource_group = AAZResourceGroupNameArg(
43+
required=True,
44+
)
45+
_args_schema.vm_scale_set_name = AAZStrArg(
46+
options=["--vm-scale-set-name"],
47+
help="The name of the VM scale set.",
48+
required=True,
49+
id_part="name",
50+
)
51+
52+
# define Arg Group "VmInstanceIDs"
53+
54+
_args_schema = cls._args_schema
55+
_args_schema.instance_ids = AAZListArg(
56+
options=["--instance-ids"],
57+
arg_group="VmInstanceIDs",
58+
help="The virtual machine scale set instance ids.",
59+
required=True,
60+
)
61+
62+
instance_ids = cls._args_schema.instance_ids
63+
instance_ids.Element = AAZStrArg()
64+
return cls._args_schema
65+
66+
def _execute_operations(self):
67+
self.pre_operations()
68+
yield self.VirtualMachineScaleSetsUpdateInstances(ctx=self.ctx)()
69+
self.post_operations()
70+
71+
@register_callback
72+
def pre_operations(self):
73+
pass
74+
75+
@register_callback
76+
def post_operations(self):
77+
pass
78+
79+
class VirtualMachineScaleSetsUpdateInstances(AAZHttpOperation):
80+
CLIENT_TYPE = "MgmtClient"
81+
82+
def __call__(self, *args, **kwargs):
83+
request = self.make_request()
84+
session = self.client.send_request(request=request, stream=False, **kwargs)
85+
if session.http_response.status_code in [202]:
86+
return self.client.build_lro_polling(
87+
self.ctx.args.no_wait,
88+
session,
89+
self.on_200,
90+
self.on_error,
91+
lro_options={"final-state-via": "location"},
92+
path_format_arguments=self.url_parameters,
93+
)
94+
if session.http_response.status_code in [200]:
95+
return self.client.build_lro_polling(
96+
self.ctx.args.no_wait,
97+
session,
98+
self.on_200,
99+
self.on_error,
100+
lro_options={"final-state-via": "location"},
101+
path_format_arguments=self.url_parameters,
102+
)
103+
104+
return self.on_error(session.http_response)
105+
106+
@property
107+
def url(self):
108+
return self.client.format_url(
109+
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/manualupgrade",
110+
**self.url_parameters
111+
)
112+
113+
@property
114+
def method(self):
115+
return "POST"
116+
117+
@property
118+
def error_format(self):
119+
return "ODataV4Format"
120+
121+
@property
122+
def url_parameters(self):
123+
parameters = {
124+
**self.serialize_url_param(
125+
"resourceGroupName", self.ctx.args.resource_group,
126+
required=True,
127+
),
128+
**self.serialize_url_param(
129+
"subscriptionId", self.ctx.subscription_id,
130+
required=True,
131+
),
132+
**self.serialize_url_param(
133+
"vmScaleSetName", self.ctx.args.vm_scale_set_name,
134+
required=True,
135+
),
136+
}
137+
return parameters
138+
139+
@property
140+
def query_parameters(self):
141+
parameters = {
142+
**self.serialize_query_param(
143+
"api-version", "2024-11-01",
144+
required=True,
145+
),
146+
}
147+
return parameters
148+
149+
@property
150+
def header_parameters(self):
151+
parameters = {
152+
**self.serialize_header_param(
153+
"Content-Type", "application/json",
154+
),
155+
}
156+
return parameters
157+
158+
@property
159+
def content(self):
160+
_content_value, _builder = self.new_content_builder(
161+
self.ctx.args,
162+
typ=AAZObjectType,
163+
typ_kwargs={"flags": {"required": True, "client_flatten": True}}
164+
)
165+
_builder.set_prop("instanceIds", AAZListType, ".instance_ids", typ_kwargs={"flags": {"required": True}})
166+
167+
instance_ids = _builder.get(".instanceIds")
168+
if instance_ids is not None:
169+
instance_ids.set_elements(AAZStrType, ".")
170+
171+
return self.serialize_content(_content_value)
172+
173+
def on_200(self, session):
174+
pass
175+
176+
177+
class _ManualupgradeHelper:
178+
"""Helper class for Manualupgrade"""
179+
180+
181+
__all__ = ["Manualupgrade"]

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4580,11 +4580,13 @@ def stop_vmss(cmd, resource_group_name, vm_scale_set_name, instance_ids=None, no
45804580

45814581

45824582
def update_vmss_instances(cmd, resource_group_name, vm_scale_set_name, instance_ids, no_wait=False):
4583-
client = _compute_client_factory(cmd.cli_ctx)
4584-
VirtualMachineScaleSetVMInstanceRequiredIDs = cmd.get_models('VirtualMachineScaleSetVMInstanceRequiredIDs')
4585-
instance_ids = VirtualMachineScaleSetVMInstanceRequiredIDs(instance_ids=instance_ids)
4586-
return sdk_no_wait(no_wait, client.virtual_machine_scale_sets.begin_update_instances,
4587-
resource_group_name, vm_scale_set_name, instance_ids)
4583+
from .aaz.latest.vmss import Manualupgrade
4584+
return Manualupgrade(cli_ctx=cmd.cli_ctx)(command_args={
4585+
'resource_group': resource_group_name,
4586+
'vm_scale_set_name': vm_scale_set_name,
4587+
'instance_ids': instance_ids,
4588+
'no_wait': no_wait,
4589+
})
45884590

45894591

45904592
def update_vmss(cmd, resource_group_name, name, license_type=None, no_wait=False, instance_id=None,

0 commit comments

Comments
 (0)