BigSwitch plugin: allow 'external' keyword in router rules
Allows 'external' keyword in addition to 'any' keyword in BigSwitch router rules support. Closes-Bug: #1226814 Change-Id: Ia92513e89b0c95c5b3b98921e126fdd21cc4f405
This commit is contained in:
parent
151cff7554
commit
0ed7e3a3f9
@ -40,12 +40,13 @@ def convert_to_valid_router_rules(data):
|
||||
Validates and converts router rules to the appropriate data structure
|
||||
Example argument = [{'source': 'any', 'destination': 'any',
|
||||
'action':'deny'},
|
||||
{'source': '1.1.1.1/32', 'destination': 'any',
|
||||
{'source': '1.1.1.1/32', 'destination': 'external',
|
||||
'action':'permit',
|
||||
'nexthops': ['1.1.1.254', '1.1.1.253']}
|
||||
]
|
||||
"""
|
||||
V4ANY = '0.0.0.0/0'
|
||||
CIDRALL = ['any', 'external']
|
||||
if not isinstance(data, list):
|
||||
emsg = _("Invalid data format for router rule: '%s'") % data
|
||||
LOG.debug(emsg)
|
||||
@ -58,8 +59,8 @@ def convert_to_valid_router_rules(data):
|
||||
if not isinstance(rule['nexthops'], list):
|
||||
rule['nexthops'] = rule['nexthops'].split('+')
|
||||
|
||||
src = V4ANY if rule['source'] == 'any' else rule['source']
|
||||
dst = V4ANY if rule['destination'] == 'any' else rule['destination']
|
||||
src = V4ANY if rule['source'] in CIDRALL else rule['source']
|
||||
dst = V4ANY if rule['destination'] in CIDRALL else rule['destination']
|
||||
|
||||
errors = [attr._verify_dict_keys(expected_keys, rule, False),
|
||||
attr._validate_subnet(dst),
|
||||
|
@ -327,7 +327,7 @@ class RouterDBTestCase(test_l3_plugin.L3NatDBIntTestCase):
|
||||
rules = body['router']['router_rules']
|
||||
self.assertEqual(_strip_rule_ids(rules), router_rules)
|
||||
# Try after adding another rule
|
||||
router_rules.append({'source': 'any',
|
||||
router_rules.append({'source': 'external',
|
||||
'destination': '8.8.8.8/32',
|
||||
'action': 'permit', 'nexthops': []})
|
||||
body = self._update('routers', r['router']['id'],
|
||||
|
Loading…
Reference in New Issue
Block a user