]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Avoid KeyError 'distributed' exception when using NVP <3.x
authorarmando-migliaccio <amigliaccio@nicira.com>
Mon, 9 Sep 2013 21:54:32 +0000 (14:54 -0700)
committerarmando-migliaccio <amigliaccio@nicira.com>
Mon, 9 Sep 2013 21:54:32 +0000 (14:54 -0700)
This patch fixes an issue found when creating routers with
NVP plugin and NVP platform 2.2

Fixes bug 1220931

Change-Id: Ia7b358b59e48a723c07efec015bb650accaa3322

neutron/plugins/nicira/NeutronPlugin.py
neutron/tests/unit/nicira/test_nicira_plugin.py

index 3f74ac1d3652cf6db9bf5f83fc218d18de9e7b81..cf49b4c69ad6389f45e0d3112108cb65f572c29d 100644 (file)
@@ -1420,8 +1420,9 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin,
             r['id'] = lrouter['uuid']
             # Update 'distributed' with value returned from NVP
             # This will be useful for setting the value if the API request
-            # did not specify any value for the 'distributed' attribute
-            r['distributed'] = lrouter['distributed']
+            # did not specify any value for the 'distributed' attribute.
+            # Platforms older than 3.x do not support the attribute
+            r['distributed'] = lrouter.get('distributed', False)
         except nvp_exc.NvpInvalidVersion:
             msg = _("Cannot create a distributed router with the NVP "
                     "platform currently in execution. Please, try "
index 2be1b37f785988e52de754f5a2de1067b623e1a9..467eb6a84f98b22d5758ee983827993c425d317c 100644 (file)
@@ -548,6 +548,17 @@ class TestNiciraL3NatTestCase(test_l3_plugin.L3NatDBTestCase,
     def test_router_create_distributed_returns_400(self):
         self._test_router_create_with_distributed(True, None, '3.0', 400)
 
+    def test_router_create_on_obsolete_platform(self):
+
+        def obsolete_response(*args, **kwargs):
+            response = nvplib._create_implicit_routing_lrouter(*args, **kwargs)
+            response.pop('distributed')
+            return response
+
+        with mock.patch.object(
+            nvplib, 'create_lrouter', new=obsolete_response):
+            self._test_router_create_with_distributed(None, False, '2.2')
+
     def test_router_create_nvp_error_returns_500(self, vlan_id=None):
         with mock.patch.object(nvplib,
                                'create_router_lport',