@@ -33,7 +33,7 @@ def load_arguments(self, _):
3333
3434 ExemptionCategory = self .get_models ('ExemptionCategory' , resource_type = ResourceType .MGMT_RESOURCE_POLICY ,
3535 operation_group = 'policy_exemptions' )
36- DeploymentMode , WhatIfResultFormat , ChangeType = self .get_models ('DeploymentMode' , 'WhatIfResultFormat' , 'ChangeType' )
36+ DeploymentMode , WhatIfResultFormat , ChangeType , ValidationLevel = self .get_models ('DeploymentMode' , 'WhatIfResultFormat' , 'ChangeType' , 'ValidationLevel ' )
3737
3838 # BASIC PARAMETER CONFIGURATION
3939
@@ -58,6 +58,13 @@ def load_arguments(self, _):
5858 deployment_template_spec_type = CLIArgumentType (options_list = ['--template-spec' , '-s' ], min_api = '2019-06-01' , help = "The template spec resource id." )
5959 deployment_query_string_type = CLIArgumentType (options_list = ['--query-string' , '-q' ], help = "The query string (a SAS token) to be used with the template-uri in the case of linked templates." )
6060 deployment_parameters_type = CLIArgumentType (options_list = ['--parameters' , '-p' ], action = 'append' , nargs = '+' , completer = FilesCompleter (), help = 'the deployment parameters' )
61+ deployment_validation_level_type = CLIArgumentType (options_list = ['--validation-level' ], arg_type = get_enum_type (ValidationLevel , None ),
62+ help = 'The deployment validation level. May be set to "Provider" (the default), "Template", or '
63+ '"ProviderNoRbac". With a validation level of "provider", ARM will perform full validation and check that'
64+ ' you have sufficient permission to deploy all resources in the template. With a validation level of '
65+ '"providerNoRbac", ARM will perform full validation but only check for read permissions on each resource.'
66+ ' With a validation level of "template", only static validation will be performed: preflight and '
67+ 'permissions checks will be skipped.' )
6168 filter_type = CLIArgumentType (options_list = ['--filter' ], is_preview = True ,
6269 help = 'Filter expression using OData notation. You can use --filter "provisioningState eq \' {state}\' " to filter provisioningState. '
6370 'To get more information, please visit https://learn.microsoft.com/rest/api/resources/deployments/listatsubscriptionscope#uri-parameters' )
@@ -366,12 +373,14 @@ def load_arguments(self, _):
366373 help = "Space-separated list of resource change types to be excluded from What-If results. Applicable when --confirm-with-what-if is set." )
367374 c .argument ('what_if' , arg_type = deployment_what_if_type )
368375 c .argument ('proceed_if_no_change' , arg_type = deployment_what_if_proceed_if_no_change_type )
376+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
369377
370378 with self .argument_context ('deployment validate' ) as c :
371379 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
372380 c .argument ('handle_extended_json_format' , arg_type = extended_json_format_type ,
373381 deprecate_info = c .deprecate (target = '--handle-extended-json-format/-j' ))
374382 c .argument ('no_prompt' , arg_type = no_prompt )
383+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
375384
376385 with self .argument_context ('deployment operation' ) as c :
377386 c .argument ('operation_ids' , nargs = '+' , help = 'A list of operation ids to show' )
@@ -395,19 +404,22 @@ def load_arguments(self, _):
395404 help = "Space-separated list of resource change types to be excluded from What-If results. Applicable when --confirm-with-what-if is set." )
396405 c .argument ('what_if' , arg_type = deployment_what_if_type )
397406 c .argument ('proceed_if_no_change' , arg_type = deployment_what_if_proceed_if_no_change_type )
407+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
398408
399409 with self .argument_context ('deployment sub what-if' ) as c :
400410 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
401411 c .argument ('no_prompt' , arg_type = no_prompt )
402412 c .argument ('result_format' , arg_type = deployment_what_if_result_format_type )
403413 c .argument ('no_pretty_print' , arg_type = deployment_what_if_no_pretty_print_type )
404414 c .argument ('exclude_change_types' , arg_type = deployment_what_if_exclude_change_types_type )
415+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
405416
406417 with self .argument_context ('deployment sub validate' ) as c :
407418 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
408419 c .argument ('handle_extended_json_format' , arg_type = extended_json_format_type ,
409420 deprecate_info = c .deprecate (target = '--handle-extended-json-format/-j' ))
410421 c .argument ('no_prompt' , arg_type = no_prompt )
422+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
411423
412424 with self .argument_context ('deployment sub list' ) as c :
413425 c .argument ('filter_string' , arg_type = filter_type )
@@ -436,6 +448,7 @@ def load_arguments(self, _):
436448 help = "Space-separated list of resource change types to be excluded from What-If results. Applicable when --confirm-with-what-if is set." )
437449 c .argument ('what_if' , arg_type = deployment_what_if_type )
438450 c .argument ('proceed_if_no_change' , arg_type = deployment_what_if_proceed_if_no_change_type )
451+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
439452
440453 with self .argument_context ('deployment group what-if' ) as c :
441454 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
@@ -446,12 +459,14 @@ def load_arguments(self, _):
446459 c .argument ('no_pretty_print' , arg_type = deployment_what_if_no_pretty_print_type )
447460 c .argument ('exclude_change_types' , arg_type = deployment_what_if_exclude_change_types_type )
448461 c .ignore ("rollback_on_error" )
462+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
449463
450464 with self .argument_context ('deployment group validate' ) as c :
451465 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
452466 c .argument ('handle_extended_json_format' , arg_type = extended_json_format_type ,
453467 deprecate_info = c .deprecate (target = '--handle-extended-json-format/-j' ))
454468 c .argument ('no_prompt' , arg_type = no_prompt )
469+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
455470
456471 with self .argument_context ('deployment group list' ) as c :
457472 c .argument ('filter_string' , arg_type = filter_type )
@@ -475,19 +490,22 @@ def load_arguments(self, _):
475490 c .argument ('what_if' , arg_type = deployment_what_if_type )
476491 c .argument ('proceed_if_no_change' , arg_type = deployment_what_if_proceed_if_no_change_type )
477492 c .argument ('mode' , arg_type = get_enum_type (DeploymentMode , default = 'incremental' ), help = 'The mode that is used to deploy resources. This value can be either Incremental or Complete. In Incremental mode, resources are deployed without deleting existing resources that are not included in the template. In Complete mode, resources are deployed and existing resources in the resource group that are not included in the template are deleted. Be careful when using Complete mode as you may unintentionally delete resources.' )
493+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
478494
479495 with self .argument_context ('deployment mg what-if' ) as c :
480496 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
481497 c .argument ('no_prompt' , arg_type = no_prompt )
482498 c .argument ('result_format' , arg_type = deployment_what_if_result_format_type )
483499 c .argument ('no_pretty_print' , arg_type = deployment_what_if_no_pretty_print_type )
484500 c .argument ('exclude_change_types' , arg_type = deployment_what_if_exclude_change_types_type )
501+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
485502
486503 with self .argument_context ('deployment mg validate' ) as c :
487504 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
488505 c .argument ('handle_extended_json_format' , arg_type = extended_json_format_type ,
489506 deprecate_info = c .deprecate (target = '--handle-extended-json-format/-j' ))
490507 c .argument ('no_prompt' , arg_type = no_prompt )
508+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
491509
492510 with self .argument_context ('deployment mg list' ) as c :
493511 c .argument ('filter_string' , arg_type = filter_type )
@@ -512,19 +530,22 @@ def load_arguments(self, _):
512530 min_api = "2019-10-01" )
513531 c .argument ('what_if' , arg_type = deployment_what_if_type )
514532 c .argument ('proceed_if_no_change' , arg_type = deployment_what_if_proceed_if_no_change_type )
533+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
515534
516535 with self .argument_context ('deployment tenant what-if' ) as c :
517536 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
518537 c .argument ('no_prompt' , arg_type = no_prompt )
519538 c .argument ('result_format' , arg_type = deployment_what_if_result_format_type )
520539 c .argument ('no_pretty_print' , arg_type = deployment_what_if_no_pretty_print_type )
521540 c .argument ('exclude_change_types' , arg_type = deployment_what_if_exclude_change_types_type )
541+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
522542
523543 with self .argument_context ('deployment tenant validate' ) as c :
524544 c .argument ('deployment_name' , arg_type = deployment_create_name_type )
525545 c .argument ('handle_extended_json_format' , arg_type = extended_json_format_type ,
526546 deprecate_info = c .deprecate (target = '--handle-extended-json-format/-j' ))
527547 c .argument ('no_prompt' , arg_type = no_prompt )
548+ c .argument ('validation_level' , arg_type = deployment_validation_level_type )
528549
529550 with self .argument_context ('deployment tenant list' ) as c :
530551 c .argument ('filter_string' , arg_type = filter_type )
0 commit comments