Skip to content

Commit 85f55c3

Browse files
add delete_instances command
1 parent 4d9eb14 commit 85f55c3

1 file changed

Lines changed: 194 additions & 0 deletions

File tree

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
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+
@register_command(
15+
"vmss delete-instances",
16+
)
17+
class DeleteInstances(AAZCommand):
18+
"""Delete virtual machines in a VM scale set.
19+
20+
:example: VirtualMachineScaleSet_DeleteInstances_MaximumSet_Gen
21+
az vmss delete-instances --resource-group rgcompute --vm-scale-set-name aaaaaaaaaaaaaaaaaaaa --force-deletion True --instance-ids "[aaaaaaaaaaaaaaaaaaaaaaaaa]"
22+
"""
23+
24+
_aaz_info = {
25+
"version": "2024-11-01",
26+
"resources": [
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.compute/virtualmachinescalesets/{}/delete", "2024-11-01"],
28+
]
29+
}
30+
31+
AZ_SUPPORT_NO_WAIT = True
32+
33+
def _handler(self, command_args):
34+
super()._handler(command_args)
35+
return self.build_lro_poller(self._execute_operations, None)
36+
37+
_args_schema = None
38+
39+
@classmethod
40+
def _build_arguments_schema(cls, *args, **kwargs):
41+
if cls._args_schema is not None:
42+
return cls._args_schema
43+
cls._args_schema = super()._build_arguments_schema(*args, **kwargs)
44+
45+
# define Arg Group ""
46+
47+
_args_schema = cls._args_schema
48+
_args_schema.resource_group = AAZResourceGroupNameArg(
49+
required=True,
50+
)
51+
_args_schema.vm_scale_set_name = AAZStrArg(
52+
options=["--vm-scale-set-name"],
53+
help="The name of the VM scale set.",
54+
required=True,
55+
id_part="name",
56+
)
57+
_args_schema.force_deletion = AAZBoolArg(
58+
options=["--force-deletion"],
59+
help="Optional parameter to force delete virtual machines from the VM scale set. (Feature in Preview)",
60+
)
61+
62+
# define Arg Group "VmInstanceIDs"
63+
64+
_args_schema = cls._args_schema
65+
_args_schema.instance_ids = AAZListArg(
66+
options=["--instance-ids"],
67+
arg_group="VmInstanceIDs",
68+
help="The virtual machine scale set instance ids.",
69+
required=True,
70+
)
71+
72+
instance_ids = cls._args_schema.instance_ids
73+
instance_ids.Element = AAZStrArg()
74+
return cls._args_schema
75+
76+
def _execute_operations(self):
77+
self.pre_operations()
78+
yield self.VirtualMachineScaleSetsDeleteInstances(ctx=self.ctx)()
79+
self.post_operations()
80+
81+
@register_callback
82+
def pre_operations(self):
83+
pass
84+
85+
@register_callback
86+
def post_operations(self):
87+
pass
88+
89+
class VirtualMachineScaleSetsDeleteInstances(AAZHttpOperation):
90+
CLIENT_TYPE = "MgmtClient"
91+
92+
def __call__(self, *args, **kwargs):
93+
request = self.make_request()
94+
session = self.client.send_request(request=request, stream=False, **kwargs)
95+
if session.http_response.status_code in [202]:
96+
return self.client.build_lro_polling(
97+
self.ctx.args.no_wait,
98+
session,
99+
self.on_200,
100+
self.on_error,
101+
lro_options={"final-state-via": "location"},
102+
path_format_arguments=self.url_parameters,
103+
)
104+
if session.http_response.status_code in [200]:
105+
return self.client.build_lro_polling(
106+
self.ctx.args.no_wait,
107+
session,
108+
self.on_200,
109+
self.on_error,
110+
lro_options={"final-state-via": "location"},
111+
path_format_arguments=self.url_parameters,
112+
)
113+
114+
return self.on_error(session.http_response)
115+
116+
@property
117+
def url(self):
118+
return self.client.format_url(
119+
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/delete",
120+
**self.url_parameters
121+
)
122+
123+
@property
124+
def method(self):
125+
return "POST"
126+
127+
@property
128+
def error_format(self):
129+
return "ODataV4Format"
130+
131+
@property
132+
def url_parameters(self):
133+
parameters = {
134+
**self.serialize_url_param(
135+
"resourceGroupName", self.ctx.args.resource_group,
136+
required=True,
137+
),
138+
**self.serialize_url_param(
139+
"subscriptionId", self.ctx.subscription_id,
140+
required=True,
141+
),
142+
**self.serialize_url_param(
143+
"vmScaleSetName", self.ctx.args.vm_scale_set_name,
144+
required=True,
145+
),
146+
}
147+
return parameters
148+
149+
@property
150+
def query_parameters(self):
151+
parameters = {
152+
**self.serialize_query_param(
153+
"forceDeletion", self.ctx.args.force_deletion,
154+
),
155+
**self.serialize_query_param(
156+
"api-version", "2024-11-01",
157+
required=True,
158+
),
159+
}
160+
return parameters
161+
162+
@property
163+
def header_parameters(self):
164+
parameters = {
165+
**self.serialize_header_param(
166+
"Content-Type", "application/json",
167+
),
168+
}
169+
return parameters
170+
171+
@property
172+
def content(self):
173+
_content_value, _builder = self.new_content_builder(
174+
self.ctx.args,
175+
typ=AAZObjectType,
176+
typ_kwargs={"flags": {"required": True, "client_flatten": True}}
177+
)
178+
_builder.set_prop("instanceIds", AAZListType, ".instance_ids", typ_kwargs={"flags": {"required": True}})
179+
180+
instance_ids = _builder.get(".instanceIds")
181+
if instance_ids is not None:
182+
instance_ids.set_elements(AAZStrType, ".")
183+
184+
return self.serialize_content(_content_value)
185+
186+
def on_200(self, session):
187+
pass
188+
189+
190+
class _DeleteInstancesHelper:
191+
"""Helper class for DeleteInstances"""
192+
193+
194+
__all__ = ["DeleteInstances"]

0 commit comments

Comments
 (0)