]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Use correct device_manager member in dhcp driver
authorJoe Mills <joe@midokura.com>
Mon, 28 Oct 2013 08:08:20 +0000 (08:08 +0000)
committerJoe Mills <joe@midokura.com>
Wed, 30 Oct 2013 05:01:52 +0000 (05:01 +0000)
* The DHCP driver used to use device_delegate, but that has
  changed to device_manager. referencing device_delegate
  caused the cleanup of the dhcp agent namespaces to fail.
  This fixes the issue by using the correct member name,
  device_manager

Change-Id: Iab8ea0549383335ff66f3f13df1953d206eeb28f
Closes-Bug: #1245408

neutron/plugins/midonet/agent/midonet_driver.py
neutron/tests/unit/midonet/test_midonet_driver.py

index 4b4b82d2886caaae8b7020a675bbcba5a9b155b6..ccdc4ade2ee82c895891e465e08d859215b761dd 100644 (file)
@@ -47,7 +47,7 @@ class DhcpNoOpDriver(dhcp.DhcpLocalProcess):
     def disable(self, retain_port=False):
         """Disable DHCP for this network."""
         if not retain_port:
-            self.device_delegate.destroy(self.network, self.interface_name)
+            self.device_manager.destroy(self.network, self.interface_name)
         self._remove_config_files()
 
     def release_lease(self, mac_address, removed_ips):
index 0304389ffe6f22c9e59e4c9662dd406963c5e4c5..a4662e163646deff62633f5554b431377bff651d 100644 (file)
@@ -24,8 +24,10 @@ import sys
 sys.modules["midonetclient"] = mock.Mock()
 
 from neutron.agent.common import config
+from neutron.agent.linux import dhcp
 from neutron.agent.linux import interface
 from neutron.agent.linux import ip_lib
+from neutron.common import config as base_config
 from neutron.openstack.common import uuidutils
 import neutron.plugins.midonet.agent.midonet_driver as driver
 from neutron.tests import base
@@ -102,3 +104,31 @@ class MidoInterfaceDriverTestCase(base.BaseTestCase):
                       self.namespace),
             mock.call().link.delete()])
         self.ip.assert_has_calls(mock.call().garbage_collect_namespace())
+
+
+class FakeNetwork:
+    id = 'aaaabbbb-cccc-dddd-eeee-ffff00001111'
+    namespace = 'qdhcp-ns'
+
+
+class TestDhcpNoOpDriver(base.BaseTestCase):
+    def setUp(self):
+        super(TestDhcpNoOpDriver, self).setUp()
+        self.conf = config.setup_conf()
+        self.conf.register_opts(base_config.core_opts)
+        self.conf.register_opts(dhcp.OPTS)
+        self.conf.enable_isolated_metadata = True
+        self.conf.use_namespaces = True
+        instance = mock.patch("neutron.agent.linux.dhcp.DeviceManager")
+        self.mock_mgr = instance.start()
+        self.addCleanup(instance.stop)
+
+    def test_disable_no_retain_port(self):
+        dhcp_driver = driver.DhcpNoOpDriver(self.conf, FakeNetwork())
+        dhcp_driver.disable(retain_port=False)
+        self.assertTrue(self.mock_mgr.return_value.destroy.called)
+
+    def test_disable_retain_port(self):
+        dhcp_driver = driver.DhcpNoOpDriver(self.conf, FakeNetwork())
+        dhcp_driver.disable(retain_port=True)
+        self.assertFalse(self.mock_mgr.return_value.destroy.called)