]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Merge "Switch to using neutron.common.utils:replace_file()"
authorJenkins <jenkins@review.openstack.org>
Mon, 16 Nov 2015 13:58:19 +0000 (13:58 +0000)
committerGerrit Code Review <review@openstack.org>
Mon, 16 Nov 2015 13:58:19 +0000 (13:58 +0000)
1  2 
neutron/agent/linux/dhcp.py
neutron/common/utils.py
neutron/tests/unit/agent/l3/test_agent.py
neutron/tests/unit/agent/l3/test_dvr_local_router.py
neutron/tests/unit/agent/linux/test_dhcp.py

Simple merge
index b6d1e7492e76c03684a88fd92d5f6884eab0e099,190d3e6242cd28d861cf61b39538b4325e0bde1d..fa1df4483c623098431cf72f4f6cdfb381766c61
@@@ -493,34 -485,5 +493,34 @@@ def replace_file(file_name, data, file_
                                       dir=base_dir,
                                       delete=False) as tmp_file:
          tmp_file.write(data)
-     os.chmod(tmp_file.name, 0o644)
+     os.chmod(tmp_file.name, file_mode)
      os.rename(tmp_file.name, file_name)
 +
 +
 +def load_class_by_alias_or_classname(namespace, name):
 +    """Load class using stevedore alias or the class name
 +    :param namespace: namespace where the alias is defined
 +    :param name: alias or class name of the class to be loaded
 +    :returns class if calls can be loaded
 +    :raises ImportError if class cannot be loaded
 +    """
 +
 +    if not name:
 +        LOG.error(_LE("Alias or class name is not set"))
 +        raise ImportError(_("Class not found."))
 +    try:
 +        # Try to resolve class by alias
 +        mgr = driver.DriverManager(namespace, name)
 +        class_to_load = mgr.driver
 +    except RuntimeError:
 +        e1_info = sys.exc_info()
 +        # Fallback to class name
 +        try:
 +            class_to_load = importutils.import_class(name)
 +        except (ImportError, ValueError):
 +            LOG.error(_LE("Error loading class by alias"),
 +                      exc_info=e1_info)
 +            LOG.error(_LE("Error loading class by class name"),
 +                      exc_info=True)
 +            raise ImportError(_("Class not found."))
 +    return class_to_load
index 3a00ee86694f7b85d1ccdcbd74c2e6e665a6670e,1604fe7fb703e357b572045776196a24430e3a5b..abb082f77dfc4ac2cc9e2e6a9992c0004a8ee9f3
@@@ -967,14 -985,15 +967,14 @@@ class TestDhcpLocalProcess(TestBase)
          parent.assert_has_calls(expected)
  
      def test_get_interface_name(self):
 -        with mock.patch('six.moves.builtins.open') as mock_open:
 -            mock_open.return_value.__enter__ = lambda s: s
 -            mock_open.return_value.__exit__ = mock.Mock()
 -            mock_open.return_value.read.return_value = 'tap0'
 -            lp = LocalChild(self.conf, FakeDualNetwork())
 -            self.assertEqual(lp.interface_name, 'tap0')
 +        net = FakeDualNetwork()
 +        path = '/dhcp/%s/interface' % net.id
 +        self.useFixture(tools.OpenFixture(path, 'tap0'))
 +        lp = LocalChild(self.conf, net)
 +        self.assertEqual(lp.interface_name, 'tap0')
  
      def test_set_interface_name(self):
-         with mock.patch('neutron.agent.linux.utils.replace_file') as replace:
+         with mock.patch('neutron.common.utils.replace_file') as replace:
              lp = LocalChild(self.conf, FakeDualNetwork())
              with mock.patch.object(lp, 'get_conf_file_name') as conf_file:
                  conf_file.return_value = '/interface'