@@ -20,8 +20,17 @@ class Create(AAZCommand):
2020 :example: Create a Azure Bastion host machine.
2121 az network bastion create --location westus2 --name MyBastionHost --public-ip-address MyPublicIpAddress --resource-group MyResourceGroup --vnet-name MyVnet
2222
23- :example: Create a Azure Bastion host machine with zones.
23+ :example: Create Bastion Host With Zones
2424 az network bastion create --location westus2 --name MyBastionHost --public-ip-address MyPublicIpAddress --resource-group MyResourceGroup --vnet-name MyVnet --zones 1 2 3
25+
26+ :example: Create Bastion Host with Session Recording.
27+ az network bastion create --location westus2 --name MyBastionHost --public-ip-address MyPublicIpAddress --resource-group MyResourceGroup --vnet-name MyVnet --zones 1 2 3 --sku Premium --session-recording
28+
29+ :example: Create Developer SKU Bastion
30+ az network bastion create --name MyBastion --resource-group MyResourceGroup --sku Developer --vnet-name MyVnet
31+
32+ :example: Create Developer SKU Bastion with Network ACLs IP rules
33+ az network bastion create --name MyBastion --resource-group MyResourceGroup --sku Developer --vnet-name MyVnet --network-acls-ips "1.1.1.1/16 100.64.0.0/10"
2534 """
2635
2736 _aaz_info = {
@@ -57,6 +66,12 @@ def _build_arguments_schema(cls, *args, **kwargs):
5766 help = "Resource group name of the Bastion Host." ,
5867 required = True ,
5968 )
69+ _args_schema .sku = AAZStrArg (
70+ options = ["--sku" ],
71+ help = "The name of the sku of this Bastion Host." ,
72+ default = "Standard" ,
73+ enum = {"Basic" : "Basic" , "Developer" : "Developer" , "Premium" : "Premium" , "Standard" : "Standard" },
74+ )
6075
6176 # define Arg Group "Parameters"
6277
@@ -68,25 +83,18 @@ def _build_arguments_schema(cls, *args, **kwargs):
6883 resource_group_arg = "resource_group" ,
6984 ),
7085 )
71-
7286 _args_schema .tags = AAZDictArg (
7387 options = ["--tags" ],
7488 arg_group = "Parameters" ,
7589 help = "Resource tags." ,
90+ default = {},
7691 )
7792 _args_schema .zones = AAZListArg (
7893 options = ["--zones" ],
7994 arg_group = "Parameters" ,
8095 help = "A list of availability zones denoting where the resource needs to come from." ,
8196 )
8297
83- _args_schema .sku = AAZStrArg (
84- options = ["--sku" ],
85- help = "Sku of this Bastion Host." ,
86- default = "Standard" ,
87- enum = {"Basic" : "Basic" , "Premium" : "Premium" , "Standard" : "Standard" },
88- )
89-
9098 tags = cls ._args_schema .tags
9199 tags .Element = AAZStrArg ()
92100
@@ -143,6 +151,11 @@ def _build_arguments_schema(cls, *args, **kwargs):
143151 arg_group = "Properties" ,
144152 help = "IP configuration of the Bastion Host resource." ,
145153 )
154+ _args_schema .network_acls = AAZListArg (
155+ options = ["--network-acls" ],
156+ arg_group = "Properties" ,
157+ help = "[Supported in Developer SKU only] The Network ACLs IP rules." ,
158+ )
146159 _args_schema .scale_units = AAZIntArg (
147160 options = ["--scale-units" ],
148161 arg_group = "Properties" ,
@@ -153,6 +166,12 @@ def _build_arguments_schema(cls, *args, **kwargs):
153166 minimum = 2 ,
154167 ),
155168 )
169+ _args_schema .virtual_network = AAZObjectArg (
170+ options = ["--virtual-network" ],
171+ arg_group = "Properties" ,
172+ help = "Reference to an existing virtual network required for Developer Bastion Host only." ,
173+ )
174+ cls ._build_args_sub_resource_create (_args_schema .virtual_network )
156175
157176 ip_configurations = cls ._args_schema .ip_configurations
158177 ip_configurations .Element = AAZObjectArg ()
@@ -182,6 +201,14 @@ def _build_arguments_schema(cls, *args, **kwargs):
182201 )
183202 cls ._build_args_sub_resource_create (_element .subnet )
184203
204+ network_acls = cls ._args_schema .network_acls
205+ network_acls .Element = AAZObjectArg ()
206+
207+ _element = cls ._args_schema .network_acls .Element
208+ _element .address_prefix = AAZStrArg (
209+ options = ["address-prefix" ],
210+ help = "Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed." ,
211+ )
185212 return cls ._args_schema
186213
187214 _args_sub_resource_create = None
@@ -316,15 +343,19 @@ def content(self):
316343
317344 properties = _builder .get (".properties" )
318345 if properties is not None :
319- properties .set_prop ("disableCopyPaste" , AAZBoolType , ".disable_copy_paste" )
320- properties .set_prop ("enableFileCopy" , AAZBoolType , ".enable_file_copy" )
321- properties .set_prop ("enableIpConnect" , AAZBoolType , ".enable_ip_connect" )
322- properties .set_prop ("enableKerberos" , AAZBoolType , ".enable_kerberos" )
323- properties .set_prop ("enableSessionRecording" , AAZBoolType , ".enable_session_recording" )
324- properties .set_prop ("enableShareableLink" , AAZBoolType , ".enable_shareable_link" )
325- properties .set_prop ("enableTunneling" , AAZBoolType , ".enable_tunneling" )
326- properties .set_prop ("ipConfigurations" , AAZListType , ".ip_configurations" )
327- properties .set_prop ("scaleUnits" , AAZIntType , ".scale_units" )
346+ if (self .ctx .args .sku == "Developer" ):
347+ properties .set_prop ("networkAcls" , AAZObjectType )
348+ _CreateHelper ._build_schema_sub_resource_create (properties .set_prop ("virtualNetwork" , AAZObjectType , ".virtual_network" ))
349+ else :
350+ properties .set_prop ("disableCopyPaste" , AAZBoolType , ".disable_copy_paste" )
351+ properties .set_prop ("enableFileCopy" , AAZBoolType , ".enable_file_copy" )
352+ properties .set_prop ("enableIpConnect" , AAZBoolType , ".enable_ip_connect" )
353+ properties .set_prop ("enableKerberos" , AAZBoolType , ".enable_kerberos" )
354+ properties .set_prop ("enableSessionRecording" , AAZBoolType , ".enable_session_recording" )
355+ properties .set_prop ("enableShareableLink" , AAZBoolType , ".enable_shareable_link" )
356+ properties .set_prop ("enableTunneling" , AAZBoolType , ".enable_tunneling" )
357+ properties .set_prop ("ipConfigurations" , AAZListType , ".ip_configurations" )
358+ properties .set_prop ("scaleUnits" , AAZIntType , ".scale_units" )
328359
329360 ip_configurations = _builder .get (".properties.ipConfigurations" )
330361 if ip_configurations is not None :
@@ -342,6 +373,18 @@ def content(self):
342373 _CreateHelper ._build_schema_sub_resource_create (properties .set_prop ("publicIPAddress" , AAZObjectType , ".public_ip_address" , typ_kwargs = {"flags" : {"required" : True }}))
343374 _CreateHelper ._build_schema_sub_resource_create (properties .set_prop ("subnet" , AAZObjectType , ".subnet" , typ_kwargs = {"flags" : {"required" : True }}))
344375
376+ network_acls = _builder .get (".properties.networkAcls" )
377+ if network_acls is not None :
378+ network_acls .set_prop ("ipRules" , AAZListType , ".network_acls" )
379+
380+ ip_rules = _builder .get (".properties.networkAcls.ipRules" )
381+ if ip_rules is not None :
382+ ip_rules .set_elements (AAZObjectType , "." )
383+
384+ _elements = _builder .get (".properties.networkAcls.ipRules[]" )
385+ if _elements is not None :
386+ _elements .set_prop ("addressPrefix" , AAZStrType , ".address_prefix" )
387+
345388 sku = _builder .get (".sku" )
346389 if sku is not None :
347390 sku .set_prop ("name" , AAZStrType , ".sku" )
@@ -420,6 +463,9 @@ def _build_schema_on_200_201(cls):
420463 properties .ip_configurations = AAZListType (
421464 serialized_name = "ipConfigurations" ,
422465 )
466+ properties .network_acls = AAZObjectType (
467+ serialized_name = "networkAcls" ,
468+ )
423469 properties .provisioning_state = AAZStrType (
424470 serialized_name = "provisioningState" ,
425471 flags = {"read_only" : True },
@@ -465,6 +511,20 @@ def _build_schema_on_200_201(cls):
465511 flags = {"required" : True },
466512 )
467513 _CreateHelper ._build_schema_sub_resource_read (properties .subnet )
514+
515+ network_acls = cls ._schema_on_200_201 .properties .network_acls
516+ network_acls .ip_rules = AAZListType (
517+ serialized_name = "ipRules" ,
518+ )
519+
520+ ip_rules = cls ._schema_on_200_201 .properties .network_acls .ip_rules
521+ ip_rules .Element = AAZObjectType ()
522+
523+ _element = cls ._schema_on_200_201 .properties .network_acls .ip_rules .Element
524+ _element .address_prefix = AAZStrType (
525+ serialized_name = "addressPrefix" ,
526+ )
527+
468528 sku = cls ._schema_on_200_201 .sku
469529 sku .name = AAZStrType ()
470530
0 commit comments