From: Kevin Benton Date: Wed, 10 Jun 2015 07:04:25 +0000 (+0000) Subject: Revert "Defer segment lookup in NetworkContext object" X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=328b72cf8c5f514434de0b73c9137bde52b5eeea;p=openstack-build%2Fneutron-build.git Revert "Defer segment lookup in NetworkContext object" 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 --- diff --git a/neutron/plugins/ml2/driver_context.py b/neutron/plugins/ml2/driver_context.py index 6e9b295b5..ef418fe16 100644 --- a/neutron/plugins/ml2/driver_context.py +++ b/neutron/plugins/ml2/driver_context.py @@ -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 diff --git a/neutron/tests/unit/plugins/ml2/test_driver_context.py b/neutron/tests/unit/plugins/ml2/test_driver_context.py index 8171071b6..e30349c9c 100644 --- a/neutron/tests/unit/plugins/ml2/test_driver_context.py +++ b/neutron/tests/unit/plugins/ml2/test_driver_context.py @@ -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)