]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Revert "Defer segment lookup in NetworkContext object"
authorKevin Benton <kevinbenton@buttewifi.com>
Wed, 10 Jun 2015 07:04:25 +0000 (07:04 +0000)
committerKevin Benton <kevinbenton@buttewifi.com>
Wed, 10 Jun 2015 07:04:38 +0000 (07:04 +0000)
This reverts commit e61865807c4c8ff959a7746fe3e17f1ae574c9d0.

This patch likely violated the idea of a NetworkContext
being a snapshot of the network at the time it was created.
This needs a different approach.

Change-Id: I20b132a0181d35b0517330fb7fbf293c3e979d0e

neutron/plugins/ml2/driver_context.py
neutron/tests/unit/plugins/ml2/test_driver_context.py

index 6e9b295b594de9056cf9c36d1b160738f9614c42..ef418fe16e21770dc2569fcac7401ddc2c485736 100644 (file)
@@ -42,8 +42,8 @@ class NetworkContext(MechanismDriverContext, api.NetworkContext):
         super(NetworkContext, self).__init__(plugin, plugin_context)
         self._network = network
         self._original_network = original_network
-        self._segments = None
-        self._session = plugin_context.session
+        self._segments = db.get_network_segments(plugin_context.session,
+                                                 network['id'])
 
     @property
     def current(self):
@@ -55,9 +55,6 @@ class NetworkContext(MechanismDriverContext, api.NetworkContext):
 
     @property
     def network_segments(self):
-        if not self._segments:
-            self._segments = db.get_network_segments(self._session,
-                                                     self._network['id'])
         return self._segments
 
 
index 8171071b6c243f4b2e6b2841efdbc791cc8e69a2..e30349c9c6c39d1e31e8e898241c26768531c277 100644 (file)
@@ -37,12 +37,13 @@ class TestPortContext(base.BaseTestCase):
         port = {'device_owner': constants.DEVICE_OWNER_DVR_INTERFACE}
         binding.host = 'foohost'
 
-        ctx = driver_context.PortContext(plugin,
-                                         plugin_context,
-                                         port,
-                                         network,
-                                         binding,
-                                         None)
+        with mock.patch.object(driver_context.db, 'get_network_segments'):
+            ctx = driver_context.PortContext(plugin,
+                                             plugin_context,
+                                             port,
+                                             network,
+                                             binding,
+                                             None)
         self.assertEqual('foohost', ctx.host)
 
     def test_host_super(self):
@@ -55,12 +56,13 @@ class TestPortContext(base.BaseTestCase):
                 portbindings.HOST_ID: 'host'}
         binding.host = 'foohost'
 
-        ctx = driver_context.PortContext(plugin,
-                                         plugin_context,
-                                         port,
-                                         network,
-                                         binding,
-                                         None)
+        with mock.patch.object(driver_context.db, 'get_network_segments'):
+            ctx = driver_context.PortContext(plugin,
+                                             plugin_context,
+                                             port,
+                                             network,
+                                             binding,
+                                             None)
         self.assertEqual('host', ctx.host)
 
     def test_status(self):
@@ -72,12 +74,13 @@ class TestPortContext(base.BaseTestCase):
         port = {'device_owner': constants.DEVICE_OWNER_DVR_INTERFACE}
         binding.status = 'foostatus'
 
-        ctx = driver_context.PortContext(plugin,
-                                         plugin_context,
-                                         port,
-                                         network,
-                                         binding,
-                                         None)
+        with mock.patch.object(driver_context.db, 'get_network_segments'):
+            ctx = driver_context.PortContext(plugin,
+                                             plugin_context,
+                                             port,
+                                             network,
+                                             binding,
+                                             None)
         self.assertEqual('foostatus', ctx.status)
 
     def test_status_super(self):
@@ -90,37 +93,11 @@ class TestPortContext(base.BaseTestCase):
                 'status': 'status'}
         binding.status = 'foostatus'
 
-        ctx = driver_context.PortContext(plugin,
-                                         plugin_context,
-                                         port,
-                                         network,
-                                         binding,
-                                         None)
-        self.assertEqual('status', ctx.status)
-
-    def test_segments_lazy_lookup(self):
-        plugin = mock.Mock()
-        plugin_context = mock.Mock()
-        network = mock.MagicMock()
-        binding = mock.Mock()
-
-        port = {'device_owner': 'compute',
-                'status': 'status'}
-        binding.status = 'foostatus'
-
-        with mock.patch.object(driver_context.db,
-                               'get_network_segments') as gs:
+        with mock.patch.object(driver_context.db, 'get_network_segments'):
             ctx = driver_context.PortContext(plugin,
                                              plugin_context,
                                              port,
                                              network,
                                              binding,
                                              None)
-            self.assertFalse(gs.called)
-            # accessing the network_segments property should trigger
-            # a lookup the first time
-            seg = ctx.network.network_segments
-            self.assertTrue(gs.called)
-            gs.reset_mock()
-            self.assertEqual(seg, ctx.network.network_segments)
-            self.assertFalse(gs.called)
+        self.assertEqual('status', ctx.status)