Merge "Add snap package paths to default config dirs"

This commit is contained in:
Jenkins 2017-06-19 15:09:31 +00:00 committed by Gerrit Code Review
commit 83d69f888f
2 changed files with 41 additions and 2 deletions

View File

@ -613,16 +613,27 @@ def _get_config_dirs(project=None):
/etc/${project}/ /etc/${project}/
/etc/ /etc/
Otherwise, these directories:: If a project is specified and installed from a snap package, following
directories are also returned:
${SNAP}/etc/${project}
${SNAP_COMMON}/etc/${project}
Otherwise, if project is not specified, these directories are returned:
~/ ~/
/etc/ /etc/
""" """
snap = os.environ.get('SNAP')
snap_c = os.environ.get('SNAP_COMMON')
cfg_dirs = [ cfg_dirs = [
_fixpath(os.path.join('~', '.' + project)) if project else None, _fixpath(os.path.join('~', '.' + project)) if project else None,
_fixpath('~'), _fixpath('~'),
os.path.join('/etc', project) if project else None, os.path.join('/etc', project) if project else None,
'/etc' '/etc',
os.path.join(snap, "etc", project) if snap and project else None,
os.path.join(snap_c, "etc", project) if snap_c and project else None,
] ]
return [x for x in cfg_dirs if x] return [x for x in cfg_dirs if x]
@ -673,6 +684,8 @@ def find_config_files(project=None, prog=None, extension='.conf'):
~/ ~/
/etc/${project}/ /etc/${project}/
/etc/ /etc/
${SNAP}/etc/${project}
${SNAP_COMMON}/etc/${project}
We return an absolute path for (at most) one of each the default config We return an absolute path for (at most) one of each the default config
files, for the topmost directory it exists in. files, for the topmost directory it exists in.
@ -703,6 +716,8 @@ def find_config_dirs(project=None, prog=None, extension='.conf.d'):
~/ ~/
/etc/${project}/ /etc/${project}/
/etc/ /etc/
${SNAP}/etc/${project}
${SNAP_COMMON}/etc/${project}
We return an absolute path for each of the two config dirs, We return an absolute path for each of the two config dirs,
in the first place we find it (iff we find it). in the first place we find it (iff we find it).

View File

@ -223,6 +223,18 @@ class FindConfigFilesTestCase(BaseTestCase):
self.assertEqual(cfg.find_config_files(project='blaa'), config_files) self.assertEqual(cfg.find_config_files(project='blaa'), config_files)
def test_find_config_files_snap(self):
config_files = ['/snap/nova/current/etc/blaa/blaa.conf']
fake_env = {'SNAP': '/snap/nova/current/',
'SNAP_COMMON': '/var/snap/nova/common/'}
self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo']))
self.useFixture(fixtures.MonkeyPatch('os.path.exists',
lambda p: p in config_files))
self.useFixture(fixtures.MonkeyPatch('os.environ', fake_env))
self.assertEqual(cfg.find_config_files(project='blaa'), config_files)
def test_find_config_files_with_extension(self): def test_find_config_files_with_extension(self):
config_files = ['/etc/foo.json'] config_files = ['/etc/foo.json']
@ -248,6 +260,18 @@ class FindConfigDirsTestCase(BaseTestCase):
self.assertEqual(cfg.find_config_dirs(project='blaa'), config_dirs) self.assertEqual(cfg.find_config_dirs(project='blaa'), config_dirs)
def test_find_config_dirs_snap(self):
config_dirs = ['/var/snap/nova/common/etc/blaa/blaa.conf.d']
fake_env = {'SNAP': '/snap/nova/current/',
'SNAP_COMMON': '/var/snap/nova/common/'}
self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo']))
self.useFixture(fixtures.MonkeyPatch('os.path.exists',
lambda p: p in config_dirs))
self.useFixture(fixtures.MonkeyPatch('os.environ', fake_env))
self.assertEqual(cfg.find_config_dirs(project='blaa'), config_dirs)
def test_find_config_dirs_non_exists(self): def test_find_config_dirs_non_exists(self):
self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo'])) self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo']))
self.assertEqual(cfg.find_config_dirs(project='blaa'), []) self.assertEqual(cfg.find_config_dirs(project='blaa'), [])