From: Akihiro MOTOKI Date: Tue, 4 Jun 2013 03:45:23 +0000 (+0900) Subject: NEC plugin: Ensure to delete portinfo when port_removed RPC. X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=d98f8141a17b9d118e9e4c6b1a82dc3d83211c1f;p=openstack-build%2Fneutron-build.git NEC plugin: Ensure to delete portinfo when port_removed RPC. Fixes bug #1187249 Change-Id: Iaccfd1d4918df5dc4ba1c0478689fd4c833da7b3 --- diff --git a/quantum/plugins/nec/nec_plugin.py b/quantum/plugins/nec/nec_plugin.py index 12db44f4e..0d62f0b29 100644 --- a/quantum/plugins/nec/nec_plugin.py +++ b/quantum/plugins/nec/nec_plugin.py @@ -667,7 +667,7 @@ class NECPluginV2RPCCallbacks(object): "due to portinfo for port_id=%s was not " "registered"), id) continue - if portinfo.datapath_id is not datapath_id: + if portinfo.datapath_id != datapath_id: LOG.debug(_("update_ports(): ignore port_removed message " "received from different host " "(registered_datapath_id=%(registered)s, " diff --git a/quantum/tests/unit/nec/test_nec_plugin.py b/quantum/tests/unit/nec/test_nec_plugin.py index cb8c5971c..9638b6cbd 100644 --- a/quantum/tests/unit/nec/test_nec_plugin.py +++ b/quantum/tests/unit/nec/test_nec_plugin.py @@ -19,6 +19,7 @@ from quantum.common import topics from quantum import context as q_context from quantum.extensions import portbindings from quantum import manager +from quantum.plugins.nec.db import api as ndb from quantum.plugins.nec import nec_plugin from quantum.tests.unit import _test_extension_portbindings as test_bindings from quantum.tests.unit import test_db_plugin as test_plugin @@ -110,17 +111,22 @@ class TestNecPortsV2Callback(NecPluginV2TestCase): 'port_added': added, 'port_removed': removed} self.callbacks.update_ports(self.context, **kwargs) + def _get_portinfo(self, port_id): + return ndb.get_portinfo(self.context.session, port_id) + def test_port_create(self): with self.port() as port: port_id = port['port']['id'] sport = self.plugin.get_port(self.context, port_id) self.assertEqual(sport['status'], 'DOWN') + self.assertIsNone(self._get_portinfo(port_id)) portinfo = {'id': port_id, 'port_no': 123} self._rpcapi_update_ports(added=[portinfo]) sport = self.plugin.get_port(self.context, port_id) self.assertEqual(sport['status'], 'ACTIVE') + self.assertIsNotNone(self._get_portinfo(port_id)) expected = [ mock.call.exists_ofc_port(mock.ANY, port_id), @@ -132,7 +138,13 @@ class TestNecPortsV2Callback(NecPluginV2TestCase): with self.port() as port: port_id = port['port']['id'] portinfo = {'id': port_id, 'port_no': 456} + self.assertIsNone(self._get_portinfo(port_id)) + self._rpcapi_update_ports(added=[portinfo]) + self.assertIsNotNone(self._get_portinfo(port_id)) + + self._rpcapi_update_ports(removed=[port_id]) + self.assertIsNone(self._get_portinfo(port_id)) expected = [ mock.call.exists_ofc_port(mock.ANY, port_id),