]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
NEC plugin: Ensure to delete portinfo when port_removed RPC.
authorAkihiro MOTOKI <motoki@da.jp.nec.com>
Tue, 4 Jun 2013 03:45:23 +0000 (12:45 +0900)
committerAkihiro MOTOKI <motoki@da.jp.nec.com>
Tue, 4 Jun 2013 05:30:29 +0000 (14:30 +0900)
Fixes bug #1187249

Change-Id: Iaccfd1d4918df5dc4ba1c0478689fd4c833da7b3

quantum/plugins/nec/nec_plugin.py
quantum/tests/unit/nec/test_nec_plugin.py

index 12db44f4e4076e9418cbf0e8fa35ab58b3d75a8a..0d62f0b29b9ebdde840aa0a5ba0354644e5e6732 100644 (file)
@@ -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, "
index cb8c5971c8e1c4f297c668f497008d900cd191e5..9638b6cbd684d18d977decfa0b23d16a236a135a 100644 (file)
@@ -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),