Skip to content

Commit 523f565

Browse files
[Network] az network vnet-gateway: Support VNET Gateway failover (#31986)
1 parent ca47d7b commit 523f565

File tree

8 files changed

+1951
-0
lines changed

8 files changed

+1951
-0
lines changed

src/azure-cli/azure/cli/command_modules/network/aaz/latest/network/vnet_gateway/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from ._create import *
1313
from ._delete import *
1414
from ._disconnect_vpn_connections import *
15+
from ._get_failover_all_tests_detail import *
16+
from ._get_failover_single_test_detail import *
1517
from ._get_resiliency_information import *
1618
from ._get_routes_information import *
1719
from ._list import *
@@ -21,5 +23,7 @@
2123
from ._reset import *
2224
from ._show import *
2325
from ._show_supported_devices import *
26+
from ._start_site_failover_test import *
27+
from ._stop_site_failover_test import *
2428
from ._update import *
2529
from ._wait import *
Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
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+
"network vnet-gateway get-failover-all-tests-detail",
16+
)
17+
class GetFailoverAllTestsDetail(AAZCommand):
18+
"""This operation retrieves the details of all the failover tests performed on the gateway for different peering locations
19+
20+
:example: VirtualNetworkGatewayGetFailoverAllTestsDetails
21+
az network vnet-gateway get-failover-all-tests-detail --resource-group rg1 --virtual-network-gateway-name ergw --type SingleSiteFailover --fetch-latest true
22+
"""
23+
24+
_aaz_info = {
25+
"version": "2024-05-01",
26+
"resources": [
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.network/virtualnetworkgateways/{}/getfailoveralltestsdetails", "2024-05-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, self._output)
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.virtual_network_gateway_name = AAZStrArg(
52+
options=["--virtual-network-gateway-name", "--name"],
53+
help="The name of the virtual network gateway.",
54+
required=True,
55+
id_part="name",
56+
)
57+
_args_schema.fetch_latest = AAZBoolArg(
58+
options=["--fetch-latest"],
59+
help="Fetch only the latest tests for each peering location",
60+
required=True,
61+
)
62+
_args_schema.type = AAZStrArg(
63+
options=["--type"],
64+
help="The type of failover test",
65+
required=True,
66+
)
67+
return cls._args_schema
68+
69+
def _execute_operations(self):
70+
self.pre_operations()
71+
yield self.VirtualNetworkGatewaysGetFailoverAllTestDetails(ctx=self.ctx)()
72+
self.post_operations()
73+
74+
@register_callback
75+
def pre_operations(self):
76+
pass
77+
78+
@register_callback
79+
def post_operations(self):
80+
pass
81+
82+
def _output(self, *args, **kwargs):
83+
result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True)
84+
return result
85+
86+
class VirtualNetworkGatewaysGetFailoverAllTestDetails(AAZHttpOperation):
87+
CLIENT_TYPE = "MgmtClient"
88+
89+
def __call__(self, *args, **kwargs):
90+
request = self.make_request()
91+
session = self.client.send_request(request=request, stream=False, **kwargs)
92+
if session.http_response.status_code in [202]:
93+
return self.client.build_lro_polling(
94+
self.ctx.args.no_wait,
95+
session,
96+
self.on_200,
97+
self.on_error,
98+
lro_options={"final-state-via": "location"},
99+
path_format_arguments=self.url_parameters,
100+
)
101+
if session.http_response.status_code in [200]:
102+
return self.client.build_lro_polling(
103+
self.ctx.args.no_wait,
104+
session,
105+
self.on_200,
106+
self.on_error,
107+
lro_options={"final-state-via": "location"},
108+
path_format_arguments=self.url_parameters,
109+
)
110+
111+
return self.on_error(session.http_response)
112+
113+
@property
114+
def url(self):
115+
return self.client.format_url(
116+
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways/{virtualNetworkGatewayName}/getFailoverAllTestsDetails",
117+
**self.url_parameters
118+
)
119+
120+
@property
121+
def method(self):
122+
return "POST"
123+
124+
@property
125+
def error_format(self):
126+
return "ODataV4Format"
127+
128+
@property
129+
def url_parameters(self):
130+
parameters = {
131+
**self.serialize_url_param(
132+
"resourceGroupName", self.ctx.args.resource_group,
133+
required=True,
134+
),
135+
**self.serialize_url_param(
136+
"subscriptionId", self.ctx.subscription_id,
137+
required=True,
138+
),
139+
**self.serialize_url_param(
140+
"virtualNetworkGatewayName", self.ctx.args.virtual_network_gateway_name,
141+
required=True,
142+
),
143+
}
144+
return parameters
145+
146+
@property
147+
def query_parameters(self):
148+
parameters = {
149+
**self.serialize_query_param(
150+
"fetchLatest", self.ctx.args.fetch_latest,
151+
required=True,
152+
),
153+
**self.serialize_query_param(
154+
"type", self.ctx.args.type,
155+
required=True,
156+
),
157+
**self.serialize_query_param(
158+
"api-version", "2024-05-01",
159+
required=True,
160+
),
161+
}
162+
return parameters
163+
164+
@property
165+
def header_parameters(self):
166+
parameters = {
167+
**self.serialize_header_param(
168+
"Accept", "application/json",
169+
),
170+
}
171+
return parameters
172+
173+
def on_200(self, session):
174+
data = self.deserialize_http_content(session)
175+
self.ctx.set_var(
176+
"instance",
177+
data,
178+
schema_builder=self._build_schema_on_200
179+
)
180+
181+
_schema_on_200 = None
182+
183+
@classmethod
184+
def _build_schema_on_200(cls):
185+
if cls._schema_on_200 is not None:
186+
return cls._schema_on_200
187+
188+
cls._schema_on_200 = AAZListType()
189+
190+
_schema_on_200 = cls._schema_on_200
191+
_schema_on_200.Element = AAZObjectType()
192+
193+
_element = cls._schema_on_200.Element
194+
_element.circuits = AAZListType()
195+
_element.connections = AAZListType()
196+
_element.end_time = AAZStrType(
197+
serialized_name="endTime",
198+
)
199+
_element.issues = AAZListType()
200+
_element.peering_location = AAZStrType(
201+
serialized_name="peeringLocation",
202+
)
203+
_element.start_time = AAZStrType(
204+
serialized_name="startTime",
205+
)
206+
_element.status = AAZStrType()
207+
_element.test_guid = AAZStrType(
208+
serialized_name="testGuid",
209+
)
210+
_element.test_type = AAZStrType(
211+
serialized_name="testType",
212+
)
213+
214+
circuits = cls._schema_on_200.Element.circuits
215+
circuits.Element = AAZObjectType()
216+
217+
_element = cls._schema_on_200.Element.circuits.Element
218+
_element.connection_name = AAZStrType(
219+
serialized_name="connectionName",
220+
)
221+
_element.name = AAZStrType()
222+
_element.nrp_resource_uri = AAZStrType(
223+
serialized_name="nrpResourceUri",
224+
)
225+
226+
connections = cls._schema_on_200.Element.connections
227+
connections.Element = AAZObjectType()
228+
229+
_element = cls._schema_on_200.Element.connections.Element
230+
_element.last_updated_time = AAZStrType(
231+
serialized_name="lastUpdatedTime",
232+
)
233+
_element.name = AAZStrType()
234+
_element.nrp_resource_uri = AAZStrType(
235+
serialized_name="nrpResourceUri",
236+
)
237+
_element.status = AAZStrType()
238+
239+
issues = cls._schema_on_200.Element.issues
240+
issues.Element = AAZStrType()
241+
242+
return cls._schema_on_200
243+
244+
245+
class _GetFailoverAllTestsDetailHelper:
246+
"""Helper class for GetFailoverAllTestsDetail"""
247+
248+
249+
__all__ = ["GetFailoverAllTestsDetail"]

0 commit comments

Comments
 (0)