diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2023-02-28 14:25:39 +0000 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2023-03-01 08:28:34 +0100 |
commit | 4bcc364559beb0943a725ff6be737630ee78d527 (patch) | |
tree | ab7629eeeda675a9c61be9d5e9ab757b7b9687cc | |
parent | a214896fca177704998314c22fe6a57314c22827 (diff) | |
download | vyos-1x-4bcc364559beb0943a725ff6be737630ee78d527.tar.gz vyos-1x-4bcc364559beb0943a725ff6be737630ee78d527.zip |
T4967: Allow setting container hostname
Ability setting container hostname
This host name is used as /etc/hostname
set container name <tag> host-name 'mybox'
(cherry picked from commit c68d73e6720a7df2b48df17ac7b9b4c906e0294c)
-rw-r--r-- | interface-definitions/container.xml.in | 9 | ||||
-rwxr-xr-x | src/conf_mode/container.py | 12 |
2 files changed, 20 insertions, 1 deletions
diff --git a/interface-definitions/container.xml.in b/interface-definitions/container.xml.in index 479f13355..4614bc892 100644 --- a/interface-definitions/container.xml.in +++ b/interface-definitions/container.xml.in @@ -113,6 +113,15 @@ <constraintErrorMessage>Entrypoint must be ascii characters, use &quot; and &apos for double and single quotes respectively</constraintErrorMessage> </properties> </leafNode> + <leafNode name="host-name"> + <properties> + <help>Container host name</help> + <constraint> + <regex>[A-Za-z0-9][-.A-Za-z0-9]*[A-Za-z0-9]</regex> + </constraint> + <constraintErrorMessage>Host-name must be alphanumeric and can contain hyphens</constraintErrorMessage> + </properties> + </leafNode> <leafNode name="image"> <properties> <help>Image name in the hub-registry</help> diff --git a/src/conf_mode/container.py b/src/conf_mode/container.py index 4f93c93a1..10e9e9213 100755 --- a/src/conf_mode/container.py +++ b/src/conf_mode/container.py @@ -256,6 +256,11 @@ def generate_run_arguments(name, container_config): for k, v in container_config['environment'].items(): env_opt += f" --env \"{k}={v['value']}\"" + hostname = '' + if 'host_name' in container_config: + hostname = container_config['host_name'] + hostname = f'--hostname {hostname}' + # Publish ports port = '' if 'port' in container_config: @@ -277,7 +282,7 @@ def generate_run_arguments(name, container_config): container_base_cmd = f'--detach --interactive --tty --replace {cap_add} ' \ f'--memory {memory}m --shm-size {shared_memory}m --memory-swap 0 --restart {restart} ' \ - f'--name {name} {device} {port} {volume} {env_opt}' + f'--name {name} {hostname} {device} {port} {volume} {env_opt}' entrypoint = '' if 'entrypoint' in container_config: @@ -285,6 +290,11 @@ def generate_run_arguments(name, container_config): entrypoint = json_write(container_config['entrypoint'].split()).replace('"', """) entrypoint = f'--entrypoint '{entrypoint}'' + hostname = '' + if 'host_name' in container_config: + hostname = container_config['host_name'] + hostname = f'--hostname {hostname}' + command = '' if 'command' in container_config: command = container_config['command'].strip() |