diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-10-02 03:26:58 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-10-02 03:26:58 +0000 |
commit | d3d0460a8d843077dbdeb9b46034bfe28e0ce2a4 (patch) | |
tree | 6eef0496ec0aa95a0632913f065b3f105ea74db8 | |
parent | 68ea7ea0c792b923d6725e851655e51bf2fb18f2 (diff) | |
parent | 20dbbab61c1159a3dc6ef838ec65b04f7e9cf560 (diff) | |
download | neutron-d3d0460a8d843077dbdeb9b46034bfe28e0ce2a4.tar.gz |
Merge "Fix pid file location to avoid I->J changes that break metadata"
-rw-r--r-- | neutron/agent/linux/utils.py | 24 | ||||
-rw-r--r-- | neutron/tests/unit/test_linux_external_process.py | 8 |
2 files changed, 15 insertions, 17 deletions
diff --git a/neutron/agent/linux/utils.py b/neutron/agent/linux/utils.py index e0a66f843c..8243468919 100644 --- a/neutron/agent/linux/utils.py +++ b/neutron/agent/linux/utils.py @@ -14,9 +14,9 @@ # under the License. import fcntl +import glob import os import shlex -import shutil import socket import struct import tempfile @@ -134,19 +134,19 @@ def find_child_pids(pid): return [x.strip() for x in raw_pids.split('\n') if x.strip()] -def _get_conf_dir(cfg_root, uuid, ensure_conf_dir): - confs_dir = os.path.abspath(os.path.normpath(cfg_root)) - conf_dir = os.path.join(confs_dir, uuid) +def _get_conf_base(cfg_root, uuid, ensure_conf_dir): + conf_dir = os.path.abspath(os.path.normpath(cfg_root)) + conf_base = os.path.join(conf_dir, uuid) if ensure_conf_dir: if not os.path.isdir(conf_dir): os.makedirs(conf_dir, 0o755) - return conf_dir + return conf_base def get_conf_file_name(cfg_root, uuid, cfg_file, ensure_conf_dir=False): """Returns the file name for a given kind of config file.""" - conf_dir = _get_conf_dir(cfg_root, uuid, ensure_conf_dir) - return os.path.join(conf_dir, cfg_file) + conf_base = _get_conf_base(cfg_root, uuid, ensure_conf_dir) + return "%s.%s" % (conf_base, cfg_file) def get_value_from_conf_file(cfg_root, uuid, cfg_file, converter=None): @@ -168,15 +168,13 @@ def get_value_from_conf_file(cfg_root, uuid, cfg_file, converter=None): def remove_conf_files(cfg_root, uuid): - conf_dir = _get_conf_dir(cfg_root, uuid, False) - shutil.rmtree(conf_dir, ignore_errors=True) + conf_base = _get_conf_base(cfg_root, uuid, False) + for file_path in glob.iglob("%s.*" % conf_base): + os.unlink(file_path) def remove_conf_file(cfg_root, uuid, cfg_file): - """Remove a config file. Remove the directory if this is the last file.""" + """Remove a config file.""" conf_file = get_conf_file_name(cfg_root, uuid, cfg_file) if os.path.exists(conf_file): os.unlink(conf_file) - conf_dir = _get_conf_dir(cfg_root, uuid, False) - if not os.listdir(conf_dir): - shutil.rmtree(conf_dir, ignore_errors=True) diff --git a/neutron/tests/unit/test_linux_external_process.py b/neutron/tests/unit/test_linux_external_process.py index 88f4bc075b..b16b681e93 100644 --- a/neutron/tests/unit/test_linux_external_process.py +++ b/neutron/tests/unit/test_linux_external_process.py @@ -123,7 +123,7 @@ class TestProcessManager(base.BaseTestCase): isdir.return_value = True manager = ep.ProcessManager(self.conf, 'uuid') retval = manager.get_pid_file_name(ensure_pids_dir=True) - self.assertEqual(retval, '/var/path/uuid/pid') + self.assertEqual(retval, '/var/path/uuid.pid') def test_get_pid_file_name_not_existing(self): with mock.patch.object(ep.utils.os.path, 'isdir') as isdir: @@ -131,15 +131,15 @@ class TestProcessManager(base.BaseTestCase): isdir.return_value = False manager = ep.ProcessManager(self.conf, 'uuid') retval = manager.get_pid_file_name(ensure_pids_dir=True) - self.assertEqual(retval, '/var/path/uuid/pid') - makedirs.assert_called_once_with('/var/path/uuid', 0o755) + self.assertEqual(retval, '/var/path/uuid.pid') + makedirs.assert_called_once_with('/var/path', 0o755) def test_get_pid_file_name_default(self): with mock.patch.object(ep.utils.os.path, 'isdir') as isdir: isdir.return_value = True manager = ep.ProcessManager(self.conf, 'uuid') retval = manager.get_pid_file_name(ensure_pids_dir=False) - self.assertEqual(retval, '/var/path/uuid/pid') + self.assertEqual(retval, '/var/path/uuid.pid') self.assertFalse(isdir.called) def test_pid(self): |