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:
Kevin Benton 2013-09-17 13:43:02 -07:00
parent 151cff7554
commit 0ed7e3a3f9
2 changed files with 5 additions and 4 deletions

View File

@ -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),

View File

@ -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'],