Big Switch: Check for 'id' in port before lookup

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.

Conflicts:
	neutron/tests/unit/bigswitch/test_restproxy_plugin.py

Closes-Bug: #1358668
Change-Id: If30567d5deaeabd2de6c6287fac7a81695a41cc5
(cherry picked from commit 295efa0008)
This commit is contained in:
Kevin Benton 2014-08-18 21:49:31 -07:00
parent 0869b5baa7
commit b464d893fe
2 changed files with 9 additions and 1 deletions

View File

@ -362,8 +362,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)

View File

@ -79,6 +79,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 = NeutronManager.get_plugin().get_ports(
context.get_admin_context(), fields=['name'])
self.assertEqual(['name'], ports[0].keys())
def test_update_port_status_build(self):
with self.port() as port:
self.assertEqual(port['port']['status'], 'BUILD')