NSXv3: Change reponse code for L7 redirect and reject

Upstream only supports the following the following response code:
 - REDIRECT_TO_URL: 302
 - REJECT: 403
Change in driver to use these code only.

Also, this patch fixes LB HTTP phase for redirect based on nsxv3
platform enforcement.

Change-Id: I25d0e5e7165200f2f6c56bea848a0318560bca1b
This commit is contained in:
Tong Liu 2017-09-29 11:10:20 -07:00 committed by garyk
parent 54a809c4fa
commit 05dbe6be4e
2 changed files with 6 additions and 15 deletions

View File

@ -90,11 +90,6 @@ LB_STATS_MAP = {'active_connections': 'current_sessions',
'bytes_in': 'bytes_in',
'bytes_out': 'bytes_out',
'total_connections': 'total_sessions'}
LB_SELECT_POOL_ACTION = 'LbSelectPoolAction'
LB_HTTP_REDIRECT_ACTION = 'LbHttpRedirectAction'
LB_REJECT_ACTION = 'LbHttpRejectAction'
LB_HTTP_REDIRECT_STATUS = '301'
LB_HTTP_REJECT_STATUS = '501'
LR_ROUTER_TYPE = 'os-neutron-router-id'
LR_PORT_TYPE = 'os-neutron-rport-id'
DEFAULT_LB_SIZE = 'SMALL'
@ -105,6 +100,11 @@ LB_RULE_MATCH_TYPE = {
L7_RULE_COMPARE_TYPE_EQUAL_TO: 'EQUALS',
L7_RULE_COMPARE_TYPE_REGEX: 'REGEX',
L7_RULE_COMPARE_TYPE_STARTS_WITH: 'STARTS_WITH'}
LB_SELECT_POOL_ACTION = 'LbSelectPoolAction'
LB_HTTP_REDIRECT_ACTION = 'LbHttpRedirectAction'
LB_REJECT_ACTION = 'LbHttpRejectAction'
LB_HTTP_REDIRECT_STATUS = '302'
LB_HTTP_REJECT_STATUS = '403'
LB_RULE_HTTP_REQUEST_REWRITE = 'HTTP_REQUEST_REWRITE'
LB_RULE_HTTP_FORWARDING = 'HTTP_FORWARDING'
LB_RULE_HTTP_RESPONSE_REWRITE = 'HTTP_RESPONSE_REWRITE'

View File

@ -105,21 +105,12 @@ class EdgeL7RuleManager(base_mgr.Nsxv3LoadbalancerBaseManager):
msg=msg)
return actions
@log_helpers.log_method_call
def _get_rule_phase(self, rule):
l7policy = rule.policy
if (l7policy.action == lb_const.L7_POLICY_ACTION_REDIRECT_TO_POOL or
l7policy.action == lb_const.L7_POLICY_ACTION_REJECT):
return lb_const.LB_RULE_HTTP_FORWARDING
if l7policy.action == lb_const.L7_POLICY_ACTION_REDIRECT_TO_URL:
return lb_const.LB_RULE_HTTP_REQUEST_REWRITE
@log_helpers.log_method_call
def _convert_l7policy_to_lb_rule(self, context, rule):
body = {}
body['match_conditions'] = self._get_rule_match_conditions(rule)
body['actions'] = self._get_rule_actions(context, rule)
body['phase'] = self._get_rule_phase(rule)
body['phase'] = lb_const.LB_RULE_HTTP_FORWARDING
body['match_strategy'] = 'ANY'
return body