diff options
author | Christian Breunig <christian@breunig.cc> | 2023-02-28 07:30:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-28 07:30:35 +0100 |
commit | 16d167ac32a30b6d1b7c4856063beb39cc60f46f (patch) | |
tree | 3c76c5c6f16308993f320c267221e83bdc38d33f /src/conf_mode/container.py | |
parent | 1aeddb187dffb5d861eaacda497922a5eafe638b (diff) | |
parent | 53aebddb4ca54b0cc4a296d6cc4c4d960c5f1d73 (diff) | |
download | vyos-1x-16d167ac32a30b6d1b7c4856063beb39cc60f46f.tar.gz vyos-1x-16d167ac32a30b6d1b7c4856063beb39cc60f46f.zip |
Merge pull request #1784 from Zen3515/current-add-container-command-arg
container: T4014: Add `command`, `arg` and `entrypoint` configuration options for containers
Diffstat (limited to 'src/conf_mode/container.py')
-rwxr-xr-x | src/conf_mode/container.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/conf_mode/container.py b/src/conf_mode/container.py index 90e5f84f2..4f93c93a1 100755 --- a/src/conf_mode/container.py +++ b/src/conf_mode/container.py @@ -279,8 +279,22 @@ def generate_run_arguments(name, container_config): f'--memory {memory}m --shm-size {shared_memory}m --memory-swap 0 --restart {restart} ' \ f'--name {name} {device} {port} {volume} {env_opt}' + entrypoint = '' + if 'entrypoint' in container_config: + # it needs to be json-formatted with single quote on the outside + entrypoint = json_write(container_config['entrypoint'].split()).replace('"', """) + entrypoint = f'--entrypoint '{entrypoint}'' + + command = '' + if 'command' in container_config: + command = container_config['command'].strip() + + command_arguments = '' + if 'arguments' in container_config: + command_arguments = container_config['arguments'].strip() + if 'allow_host_networks' in container_config: - return f'{container_base_cmd} --net host {image}' + return f'{container_base_cmd} --net host {entrypoint} {image} {command} {command_arguments}'.strip() ip_param = '' networks = ",".join(container_config['network']) @@ -289,7 +303,7 @@ def generate_run_arguments(name, container_config): address = container_config['network'][network]['address'] ip_param = f'--ip {address}' - return f'{container_base_cmd} --net {networks} {ip_param} {image}' + return f'{container_base_cmd} --net {networks} {ip_param} {entrypoint} {image} {command} {command_arguments}'.strip() def generate(container): # bail out early - looks like removal from running config @@ -341,7 +355,8 @@ def generate(container): file_path = os.path.join(systemd_unit_path, f'vyos-container-{name}.service') run_args = generate_run_arguments(name, container_config) - render(file_path, 'container/systemd-unit.j2', {'name': name, 'run_args': run_args}) + render(file_path, 'container/systemd-unit.j2', {'name': name, 'run_args': run_args,}, + formater=lambda _: _.replace(""", '"').replace("'", "'")) return None |