diff --git a/neutron/plugins/bigswitch/extensions/routerrule.py b/neutron/plugins/bigswitch/extensions/routerrule.py index 5f682de2ff..2563d113d5 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 f5275ed2d5..ae655bafa6 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'],