diff options
| author | Christian Berendt <berendt@betacloud-solutions.de> | 2017-05-26 18:58:39 +0200 |
|---|---|---|
| committer | Christian Berendt <berendt@betacloud-solutions.de> | 2017-06-21 09:00:14 +0000 |
| commit | 76a2a2b7fb4f7323127dc8f7441d1878994a224b (patch) | |
| tree | 1de9f52e0ef40a9fbe6fc4089af7caea307ff2a6 /docker | |
| parent | 2627e3c009b580ef7f28eb3814f019f456674b3f (diff) | |
| download | kolla-76a2a2b7fb4f7323127dc8f7441d1878994a224b.tar.gz kolla-76a2a2b7fb4f7323127dc8f7441d1878994a224b.zip | |
In set_configs.py support perm parameter in permissions section
This allows to set permissions for configuration files.
TrivialFix
Change-Id: Ida2ed62eaba8908fb0bd50bb0be00fb5f9b1adc3
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/base/set_configs.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/docker/base/set_configs.py b/docker/base/set_configs.py index eb4b7ac17..461243b61 100644 --- a/docker/base/set_configs.py +++ b/docker/base/set_configs.py @@ -341,6 +341,7 @@ def handle_permissions(config): path = permission.get('path') owner = permission.get('owner') recurse = permission.get('recurse', False) + perm = permission.get('perm') if ':' in owner: user, group = owner.split(':', 1) @@ -352,24 +353,35 @@ def handle_permissions(config): uid = pwd.getpwnam(user).pw_uid gid = grp.getgrnam(group).gr_gid - def set_perms(path, uid, gid): + def set_perms(path, uid, gid, perm): LOG.info('Setting permission for %s', path) if not os.path.exists(path): LOG.warning('file %s do not exist', path) return + try: os.chown(path, uid, gid) except OSError: - LOG.exception('Set file permission failed for %s', path) + LOG.exception('Set permission failed for %s', path) + + if perm: + if len(perm) == 4 and perm[1] != 'o': + perm = ''.join([perm[:1], 'o', perm[1:]]) + perm = int(perm, base=0) + + try: + os.chmod(path, perm) + except OSError: + LOG.exception('Set permission failed for %s', path) for dest in glob.glob(path): - set_perms(dest, uid, gid) + set_perms(dest, uid, gid, perm) if recurse and os.path.isdir(dest): for root, dirs, files in os.walk(dest): for dir_ in dirs: - set_perms(os.path.join(root, dir_), uid, gid) + set_perms(os.path.join(root, dir_), uid, gid, perm) for file_ in files: - set_perms(os.path.join(root, file_), uid, gid) + set_perms(os.path.join(root, file_), uid, gid, perm) def execute_config_strategy(config): |
