diff --git a/neutron/plugins/nicira/nvplib.py b/neutron/plugins/nicira/nvplib.py index 37802f1d5b..181d35fb2e 100644 --- a/neutron/plugins/nicira/nvplib.py +++ b/neutron/plugins/nicira/nvplib.py @@ -383,7 +383,7 @@ def create_explicit_routing_lrouter(cluster, tenant_id, def create_lrouter(cluster, *args, **kwargs): if kwargs.get('distributed', None): v = cluster.api_client.get_nvp_version() - if (v.major < 3) or (v.major >= 3 and v.minor < 1): + if (v.major < 3) or (v.major == 3 and v.minor < 1): raise nvp_exc.NvpInvalidVersion(version=v) return v diff --git a/neutron/tests/unit/nicira/fake_nvpapiclient.py b/neutron/tests/unit/nicira/fake_nvpapiclient.py index b1eb31bfd1..577be6c51f 100644 --- a/neutron/tests/unit/nicira/fake_nvpapiclient.py +++ b/neutron/tests/unit/nicira/fake_nvpapiclient.py @@ -175,8 +175,11 @@ class FakeClient: fake_lrouter['tenant_id'] = self._get_tag(fake_lrouter, 'os_tid') default_nexthop = fake_lrouter['routing_config'].get( 'default_route_next_hop') - fake_lrouter['default_next_hop'] = default_nexthop.get( - 'gateway_ip_address', '0.0.0.0') + if default_nexthop: + fake_lrouter['default_next_hop'] = default_nexthop.get( + 'gateway_ip_address', '0.0.0.0') + else: + fake_lrouter['default_next_hop'] = '0.0.0.0' # NOTE(salv-orlando): We won't make the Fake NVP API client # aware of NVP version. The long term plan is to replace it # with behavioral mocking of NVP API requests diff --git a/neutron/tests/unit/nicira/test_nicira_plugin.py b/neutron/tests/unit/nicira/test_nicira_plugin.py index dbbbf8f1d1..5bb369b438 100644 --- a/neutron/tests/unit/nicira/test_nicira_plugin.py +++ b/neutron/tests/unit/nicira/test_nicira_plugin.py @@ -593,9 +593,15 @@ class TestNiciraL3NatTestCase(NiciraL3NatTest, if res.status_int == 201: self._delete('routers', router['router']['id']) - def test_router_create_distributed(self): + def test_router_create_distributed_with_3_1(self): self._test_router_create_with_distributed(True, True) + def test_router_create_distributed_with_new_nvp_versions(self): + with mock.patch.object(nvplib, 'create_explicit_route_lrouter'): + self._test_router_create_with_distributed(True, True, '3.2') + self._test_router_create_with_distributed(True, True, '4.0') + self._test_router_create_with_distributed(True, True, '4.1') + def test_router_create_not_distributed(self): self._test_router_create_with_distributed(False, False)