Skip to content

Commit f6aff80

Browse files
authored
[Network] az network nat gateway: Add --nat64 to enable/disable NAT64 on StandardV2 NAT gateway (#33679)
1 parent 5c2c287 commit f6aff80

12 files changed

Lines changed: 1002 additions & 199 deletions

File tree

src/azure-cli/azure/cli/command_modules/network/aaz/latest/network/nat/gateway/_create.py

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class Create(AAZCommand):
2222
"""
2323

2424
_aaz_info = {
25-
"version": "2024-07-01",
25+
"version": "2025-07-01",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.network/natgateways/{}", "2024-07-01"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.network/natgateways/{}", "2025-07-01"],
2828
]
2929
}
3030

@@ -83,7 +83,7 @@ def _build_arguments_schema(cls, *args, **kwargs):
8383
options=["--source-vnet"],
8484
help="A reference to the source virtual network using this nat gateway resource.",
8585
)
86-
cls._build_args_sub_resource_create(_args_schema.source_vnet)
86+
cls._build_args_common_sub_resource_create(_args_schema.source_vnet)
8787
_args_schema.sku = AAZStrArg(
8888
options=["--sku"],
8989
help="Name of Nat Gateway SKU.",
@@ -110,7 +110,7 @@ def _build_arguments_schema(cls, *args, **kwargs):
110110

111111
pip_addrs_v6 = cls._args_schema.pip_addrs_v6
112112
pip_addrs_v6.Element = AAZObjectArg()
113-
cls._build_args_sub_resource_create(pip_addrs_v6.Element)
113+
cls._build_args_common_sub_resource_create(pip_addrs_v6.Element)
114114

115115
pip_prefixes = cls._args_schema.pip_prefixes
116116
pip_prefixes.Element = AAZObjectArg()
@@ -123,7 +123,7 @@ def _build_arguments_schema(cls, *args, **kwargs):
123123

124124
pip_prefs_v6 = cls._args_schema.pip_prefs_v6
125125
pip_prefs_v6.Element = AAZObjectArg()
126-
cls._build_args_sub_resource_create(pip_prefs_v6.Element)
126+
cls._build_args_common_sub_resource_create(pip_prefs_v6.Element)
127127

128128
tags = cls._args_schema.tags
129129
tags.Element = AAZStrArg()
@@ -132,25 +132,35 @@ def _build_arguments_schema(cls, *args, **kwargs):
132132
zone.Element = AAZStrArg()
133133

134134
# define Arg Group "Parameters"
135+
136+
# define Arg Group "Properties"
137+
138+
_args_schema = cls._args_schema
139+
_args_schema.nat64 = AAZStrArg(
140+
options=["--nat64"],
141+
arg_group="Properties",
142+
help="Whether Nat64 is enabled for the NAT gateway resource.",
143+
enum={"Disabled": "Disabled", "Enabled": "Enabled", "None": "None"},
144+
)
135145
return cls._args_schema
136146

137-
_args_sub_resource_create = None
147+
_args_common_sub_resource_create = None
138148

139149
@classmethod
140-
def _build_args_sub_resource_create(cls, _schema):
141-
if cls._args_sub_resource_create is not None:
142-
_schema.id = cls._args_sub_resource_create.id
150+
def _build_args_common_sub_resource_create(cls, _schema):
151+
if cls._args_common_sub_resource_create is not None:
152+
_schema.id = cls._args_common_sub_resource_create.id
143153
return
144154

145-
cls._args_sub_resource_create = AAZObjectArg()
155+
cls._args_common_sub_resource_create = AAZObjectArg()
146156

147-
sub_resource_create = cls._args_sub_resource_create
148-
sub_resource_create.id = AAZStrArg(
157+
common_sub_resource_create = cls._args_common_sub_resource_create
158+
common_sub_resource_create.id = AAZStrArg(
149159
options=["id"],
150160
help="Resource ID.",
151161
)
152162

153-
_schema.id = cls._args_sub_resource_create.id
163+
_schema.id = cls._args_common_sub_resource_create.id
154164

155165
def _execute_operations(self):
156166
self.pre_operations()
@@ -233,7 +243,7 @@ def url_parameters(self):
233243
def query_parameters(self):
234244
parameters = {
235245
**self.serialize_query_param(
236-
"api-version", "2024-07-01",
246+
"api-version", "2025-07-01",
237247
required=True,
238248
),
239249
}
@@ -267,11 +277,12 @@ def content(self):
267277
properties = _builder.get(".properties")
268278
if properties is not None:
269279
properties.set_prop("idleTimeoutInMinutes", AAZIntType, ".idle_timeout")
280+
properties.set_prop("nat64", AAZStrType, ".nat64")
270281
properties.set_prop("publicIpAddresses", AAZListType, ".pip_addresses")
271282
properties.set_prop("publicIpAddressesV6", AAZListType, ".pip_addrs_v6")
272283
properties.set_prop("publicIpPrefixes", AAZListType, ".pip_prefixes")
273284
properties.set_prop("publicIpPrefixesV6", AAZListType, ".pip_prefs_v6")
274-
_CreateHelper._build_schema_sub_resource_create(properties.set_prop("sourceVirtualNetwork", AAZObjectType, ".source_vnet"))
285+
_CreateHelper._build_schema_common_sub_resource_create(properties.set_prop("sourceVirtualNetwork", AAZObjectType, ".source_vnet"))
275286

276287
public_ip_addresses = _builder.get(".properties.publicIpAddresses")
277288
if public_ip_addresses is not None:
@@ -283,7 +294,7 @@ def content(self):
283294

284295
public_ip_addresses_v6 = _builder.get(".properties.publicIpAddressesV6")
285296
if public_ip_addresses_v6 is not None:
286-
_CreateHelper._build_schema_sub_resource_create(public_ip_addresses_v6.set_elements(AAZObjectType, "."))
297+
_CreateHelper._build_schema_common_sub_resource_create(public_ip_addresses_v6.set_elements(AAZObjectType, "."))
287298

288299
public_ip_prefixes = _builder.get(".properties.publicIpPrefixes")
289300
if public_ip_prefixes is not None:
@@ -295,7 +306,7 @@ def content(self):
295306

296307
public_ip_prefixes_v6 = _builder.get(".properties.publicIpPrefixesV6")
297308
if public_ip_prefixes_v6 is not None:
298-
_CreateHelper._build_schema_sub_resource_create(public_ip_prefixes_v6.set_elements(AAZObjectType, "."))
309+
_CreateHelper._build_schema_common_sub_resource_create(public_ip_prefixes_v6.set_elements(AAZObjectType, "."))
299310

300311
sku = _builder.get(".sku")
301312
if sku is not None:
@@ -351,6 +362,7 @@ def _build_schema_on_200_201(cls):
351362
properties.idle_timeout_in_minutes = AAZIntType(
352363
serialized_name="idleTimeoutInMinutes",
353364
)
365+
properties.nat64 = AAZStrType()
354366
properties.provisioning_state = AAZStrType(
355367
serialized_name="provisioningState",
356368
flags={"read_only": True},
@@ -371,33 +383,37 @@ def _build_schema_on_200_201(cls):
371383
serialized_name="resourceGuid",
372384
flags={"read_only": True},
373385
)
386+
properties.service_gateway = AAZObjectType(
387+
serialized_name="serviceGateway",
388+
)
389+
_CreateHelper._build_schema_common_sub_resource_read(properties.service_gateway)
374390
properties.source_virtual_network = AAZObjectType(
375391
serialized_name="sourceVirtualNetwork",
376392
)
377-
_CreateHelper._build_schema_sub_resource_read(properties.source_virtual_network)
393+
_CreateHelper._build_schema_common_sub_resource_read(properties.source_virtual_network)
378394
properties.subnets = AAZListType(
379395
flags={"read_only": True},
380396
)
381397

382398
public_ip_addresses = cls._schema_on_200_201.properties.public_ip_addresses
383399
public_ip_addresses.Element = AAZObjectType()
384-
_CreateHelper._build_schema_sub_resource_read(public_ip_addresses.Element)
400+
_CreateHelper._build_schema_common_sub_resource_read(public_ip_addresses.Element)
385401

386402
public_ip_addresses_v6 = cls._schema_on_200_201.properties.public_ip_addresses_v6
387403
public_ip_addresses_v6.Element = AAZObjectType()
388-
_CreateHelper._build_schema_sub_resource_read(public_ip_addresses_v6.Element)
404+
_CreateHelper._build_schema_common_sub_resource_read(public_ip_addresses_v6.Element)
389405

390406
public_ip_prefixes = cls._schema_on_200_201.properties.public_ip_prefixes
391407
public_ip_prefixes.Element = AAZObjectType()
392-
_CreateHelper._build_schema_sub_resource_read(public_ip_prefixes.Element)
408+
_CreateHelper._build_schema_common_sub_resource_read(public_ip_prefixes.Element)
393409

394410
public_ip_prefixes_v6 = cls._schema_on_200_201.properties.public_ip_prefixes_v6
395411
public_ip_prefixes_v6.Element = AAZObjectType()
396-
_CreateHelper._build_schema_sub_resource_read(public_ip_prefixes_v6.Element)
412+
_CreateHelper._build_schema_common_sub_resource_read(public_ip_prefixes_v6.Element)
397413

398414
subnets = cls._schema_on_200_201.properties.subnets
399415
subnets.Element = AAZObjectType()
400-
_CreateHelper._build_schema_sub_resource_read(subnets.Element)
416+
_CreateHelper._build_schema_common_sub_resource_read(subnets.Element)
401417

402418
sku = cls._schema_on_200_201.sku
403419
sku.name = AAZStrType()
@@ -415,25 +431,25 @@ class _CreateHelper:
415431
"""Helper class for Create"""
416432

417433
@classmethod
418-
def _build_schema_sub_resource_create(cls, _builder):
434+
def _build_schema_common_sub_resource_create(cls, _builder):
419435
if _builder is None:
420436
return
421437
_builder.set_prop("id", AAZStrType, ".id")
422438

423-
_schema_sub_resource_read = None
439+
_schema_common_sub_resource_read = None
424440

425441
@classmethod
426-
def _build_schema_sub_resource_read(cls, _schema):
427-
if cls._schema_sub_resource_read is not None:
428-
_schema.id = cls._schema_sub_resource_read.id
442+
def _build_schema_common_sub_resource_read(cls, _schema):
443+
if cls._schema_common_sub_resource_read is not None:
444+
_schema.id = cls._schema_common_sub_resource_read.id
429445
return
430446

431-
cls._schema_sub_resource_read = _schema_sub_resource_read = AAZObjectType()
447+
cls._schema_common_sub_resource_read = _schema_common_sub_resource_read = AAZObjectType()
432448

433-
sub_resource_read = _schema_sub_resource_read
434-
sub_resource_read.id = AAZStrType()
449+
common_sub_resource_read = _schema_common_sub_resource_read
450+
common_sub_resource_read.id = AAZStrType()
435451

436-
_schema.id = cls._schema_sub_resource_read.id
452+
_schema.id = cls._schema_common_sub_resource_read.id
437453

438454

439455
__all__ = ["Create"]

src/azure-cli/azure/cli/command_modules/network/aaz/latest/network/nat/gateway/_delete.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class Delete(AAZCommand):
2222
"""
2323

2424
_aaz_info = {
25-
"version": "2024-07-01",
25+
"version": "2025-07-01",
2626
"resources": [
27-
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.network/natgateways/{}", "2024-07-01"],
27+
["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.network/natgateways/{}", "2025-07-01"],
2828
]
2929
}
3030

@@ -142,7 +142,7 @@ def url_parameters(self):
142142
def query_parameters(self):
143143
parameters = {
144144
**self.serialize_query_param(
145-
"api-version", "2024-07-01",
145+
"api-version", "2025-07-01",
146146
required=True,
147147
),
148148
}

0 commit comments

Comments
 (0)