aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorChristian Berendt <berendt@betacloud-solutions.de>2017-05-26 18:58:39 +0200
committerChristian Berendt <berendt@betacloud-solutions.de>2017-06-21 09:00:14 +0000
commit76a2a2b7fb4f7323127dc8f7441d1878994a224b (patch)
tree1de9f52e0ef40a9fbe6fc4089af7caea307ff2a6 /docker
parent2627e3c009b580ef7f28eb3814f019f456674b3f (diff)
downloadkolla-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.py22
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):