Skip to content

Commit 458e8cb

Browse files
authored
[Network] az network application-gateway rewrite-rule create: support url configuration (#12277)
1 parent 37dc3d8 commit 458e8cb

File tree

4 files changed

+7116
-858
lines changed

4 files changed

+7116
-858
lines changed

src/azure-cli/azure/cli/command_modules/network/_params.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,11 @@ def load_arguments(self, _):
238238
c.argument('request_headers', nargs='+', help='Space-separated list of HEADER=VALUE pairs.', validator=get_header_configuration_validator('request_headers'), completer=get_sdk_completer('application_gateways', 'list_available_request_headers'))
239239
c.argument('sequence', type=int, help='Determines the execution order of the rule in the rule set.')
240240

241+
with self.argument_context('network application-gateway rewrite-rule', arg_group='URL Configuration') as c:
242+
c.argument('modified_path', help='Url path for url rewrite')
243+
c.argument('modified_query_string', help='Query string for url rewrite.')
244+
c.argument('enable_reroute', arg_type=get_three_state_flag(), help='If set as true, it will re-evaluate the url path map provided in path based request routing rules using modified path.')
245+
241246
with self.argument_context('network application-gateway rewrite-rule condition') as c:
242247
c.argument('rule_name', rewrite_rule_name_type)
243248
c.argument('variable', help='The variable whose value is being evaluated.', completer=get_sdk_completer('application_gateways', 'list_available_server_variables'))

src/azure-cli/azure/cli/command_modules/network/custom.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -556,21 +556,31 @@ def update_ag_rewrite_rule_set(instance, parent, item_name):
556556

557557

558558
def create_ag_rewrite_rule(cmd, resource_group_name, application_gateway_name, rule_set_name, rule_name,
559-
sequence=None, request_headers=None, response_headers=None, no_wait=False):
560-
ApplicationGatewayRewriteRule, ApplicationGatewayRewriteRuleActionSet = cmd.get_models(
561-
'ApplicationGatewayRewriteRule', 'ApplicationGatewayRewriteRuleActionSet')
559+
sequence=None, request_headers=None, response_headers=None, no_wait=False,
560+
modified_path=None, modified_query_string=None, enable_reroute=None):
561+
(ApplicationGatewayRewriteRule,
562+
ApplicationGatewayRewriteRuleActionSet,
563+
ApplicationGatewayUrlConfiguration) = cmd.get_models('ApplicationGatewayRewriteRule',
564+
'ApplicationGatewayRewriteRuleActionSet',
565+
'ApplicationGatewayUrlConfiguration')
562566
if not request_headers and not response_headers:
563567
raise CLIError('usage error: --response-headers HEADER=VALUE | --request-headers HEADER=VALUE')
564568
ncf = network_client_factory(cmd.cli_ctx).application_gateways
565569
ag = ncf.get(resource_group_name, application_gateway_name)
566570
rule_set = find_child_item(ag, rule_set_name,
567571
path='rewrite_rule_sets', key_path='name')
572+
url_configuration = None
573+
if any([modified_path, modified_query_string, enable_reroute]):
574+
url_configuration = ApplicationGatewayUrlConfiguration(modified_path=modified_path,
575+
modified_query_string=modified_query_string,
576+
reroute=enable_reroute)
568577
new_rule = ApplicationGatewayRewriteRule(
569578
name=rule_name,
570579
rule_sequence=sequence,
571580
action_set=ApplicationGatewayRewriteRuleActionSet(
572581
request_header_configurations=request_headers,
573-
response_header_configurations=response_headers
582+
response_header_configurations=response_headers,
583+
url_configuration=url_configuration
574584
)
575585
)
576586
upsert_to_collection(rule_set, 'rewrite_rules', new_rule, 'name')
@@ -582,11 +592,19 @@ def create_ag_rewrite_rule(cmd, resource_group_name, application_gateway_name, r
582592

583593

584594
def update_ag_rewrite_rule(instance, parent, cmd, rule_set_name, rule_name, sequence=None,
585-
request_headers=None, response_headers=None):
595+
request_headers=None, response_headers=None,
596+
modified_path=None, modified_query_string=None, enable_reroute=None):
586597
with cmd.update_context(instance) as c:
587598
c.set_param('rule_sequence', sequence)
588599
c.set_param('action_set.request_header_configurations', request_headers)
589600
c.set_param('action_set.response_header_configurations', response_headers)
601+
ApplicationGatewayUrlConfiguration = cmd.get_models('ApplicationGatewayUrlConfiguration')
602+
url_configuration = None
603+
if any([modified_path, modified_query_string, enable_reroute]):
604+
url_configuration = ApplicationGatewayUrlConfiguration(modified_path=modified_path,
605+
modified_query_string=modified_query_string,
606+
reroute=enable_reroute)
607+
c.set_param('action_set.url_configuration', url_configuration)
590608
return parent
591609

592610

@@ -2002,7 +2020,7 @@ def dict_matches_filter(d, filter_dict):
20022020

20032021
def lists_match(l1, l2):
20042022
try:
2005-
return Counter(l1) == Counter(l2)
2023+
return Counter(l1) == Counter(l2) # pylint: disable=too-many-function-args
20062024
except TypeError:
20072025
return False
20082026
# endregion

0 commit comments

Comments
 (0)