]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Big Switch: Check for 'id' in port before lookup
authorKevin Benton <blak111@gmail.com>
Tue, 19 Aug 2014 04:49:31 +0000 (21:49 -0700)
committerKevin Benton <blak111@gmail.com>
Tue, 19 Aug 2014 04:52:00 +0000 (21:52 -0700)
Check for the presence of the 'id' key before trying
to do a lookup based on the value. This is necessary
because a 'fields' param to get_port(s) may exclude
the 'id' field before the host_id lookup.

Closes-Bug: #1358668
Change-Id: If30567d5deaeabd2de6c6287fac7a81695a41cc5

neutron/plugins/bigswitch/plugin.py
neutron/tests/unit/bigswitch/test_restproxy_plugin.py

index dde693ea4da2473074279046aca2acf195dc3636..7a1a7e6b451e80a65cc1ff0c1ac2a5180591ce79 100644 (file)
@@ -357,8 +357,10 @@ class NeutronRestProxyV2Base(db_base_plugin_v2.NeutronDbPluginV2,
         # In ML2, the host_id is already populated
         if portbindings.HOST_ID in port:
             hostid = port[portbindings.HOST_ID]
-        else:
+        elif 'id' in port:
             hostid = porttracker_db.get_port_hostid(context, port['id'])
+        else:
+            hostid = None
         if hostid:
             port[portbindings.HOST_ID] = hostid
             override = self._check_hostvif_override(hostid)
index 81b37496185da42c709c3107cf7567962704c56b..7c5d7f29d0bd35e416a7ef25150894ac67fe4da7 100644 (file)
@@ -81,6 +81,12 @@ class TestBigSwitchProxyPortsV2(test_plugin.TestPortsV2,
         super(TestBigSwitchProxyPortsV2,
               self).setUp(self._plugin_name)
 
+    def test_get_ports_no_id(self):
+        with self.port(name='test'):
+            ports = manager.NeutronManager.get_plugin().get_ports(
+                context.get_admin_context(), fields=['name'])
+            self.assertEqual(['name'], ports[0].keys())
+
     def test_router_port_status_active(self):
         # router ports screw up port auto-deletion so it has to be
         # disabled for this test