From: Kevin Benton Date: Tue, 17 Sep 2013 20:43:02 +0000 (-0700) Subject: BigSwitch plugin: allow 'external' keyword in router rules X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=276a3b422d54b6976fed8c23ed54bd9bb707e4ff;p=openstack-build%2Fneutron-build.git 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 --- diff --git a/neutron/plugins/bigswitch/extensions/routerrule.py b/neutron/plugins/bigswitch/extensions/routerrule.py index 5f682de2f..2563d113d 100644 --- a/neutron/plugins/bigswitch/extensions/routerrule.py +++ b/neutron/plugins/bigswitch/extensions/routerrule.py @@ -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), diff --git a/neutron/tests/unit/bigswitch/test_router_db.py b/neutron/tests/unit/bigswitch/test_router_db.py index f5275ed2d..ae655bafa 100644 --- a/neutron/tests/unit/bigswitch/test_router_db.py +++ b/neutron/tests/unit/bigswitch/test_router_db.py @@ -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'],