diff options
| author | Michal Nasiadka <mnasiadka@gmail.com> | 2026-04-27 15:28:17 +0200 |
|---|---|---|
| committer | Michal Nasiadka <mnasiadka@gmail.com> | 2026-05-05 10:34:26 +0000 |
| commit | 33c0e26e8a0290f0b6d647bb67e18a4f500907fc (patch) | |
| tree | d87fa00b1bb4c60e664111bd895bf629c903e060 /docker/base | |
| parent | 1627e5da6d6ac754be3e0afe61eeddf6e38f93b6 (diff) | |
| download | kolla-33c0e26e8a0290f0b6d647bb67e18a4f500907fc.tar.gz kolla-33c0e26e8a0290f0b6d647bb67e18a4f500907fc.zip | |
set_configs: Add support for creating directories and setting perms
Change-Id: Id63c035fafaa68a9004c65161c5a3a3ad5544f02
Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
Diffstat (limited to 'docker/base')
| -rw-r--r-- | docker/base/set_configs.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/docker/base/set_configs.py b/docker/base/set_configs.py index 80c32e507..1a80bd877 100644 --- a/docker/base/set_configs.py +++ b/docker/base/set_configs.py @@ -257,6 +257,7 @@ class ConfigFile(object): def validate_config(config): required_keys = {'source', 'dest'} + required_dir_keys = {'path', 'owner', 'perm'} if 'command' not in config: raise InvalidConfig('Config is missing required "command" key') @@ -272,6 +273,12 @@ def validate_config(config): raise InvalidConfig( 'Config needs preserve_properties or owner and perm') + for data in config.get('directories', list()): + if not set(data.keys()) >= required_dir_keys: + message = ('directories config is missing required keys: %s' + % (required_dir_keys - set(data.keys()))) + raise InvalidConfig(message) + def validate_source(data): source = data.get('source') @@ -334,6 +341,19 @@ def copy_config(config): LOG.exception('Failed to set permission of %s to 0o644', cmd) +def create_directories(config): + if 'directories' not in config: + return + LOG.info('Creating directories') + for data in config['directories']: + path = data['path'] + try: + os.makedirs(path, exist_ok=True) + except Exception: + raise OSError("Can't create destination directory (%s)" % (path)) + handle_permissions({'permissions': [data]}) + + def user_group(owner): if ':' in owner: user, group = owner.split(':', 1) @@ -560,6 +580,7 @@ def execute_config_strategy(config): config_strategy = os.environ.get("KOLLA_CONFIG_STRATEGY") LOG.info("Kolla config strategy set to: %s", config_strategy) if config_strategy == "COPY_ALWAYS": + create_directories(config) handle_defaults(config) copy_config(config) handle_permissions(config) @@ -569,6 +590,7 @@ def execute_config_strategy(config): "The config strategy prevents copying new configs", exit_code=0) else: + create_directories(config) handle_defaults(config) copy_config(config) handle_permissions(config) |
