Merge "Fix pid file location to avoid I->J changes that break metadata"
This commit is contained in:
commit
d3d0460a8d
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue