summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-12-09 22:13:26 +0100
committerGitHub <noreply@github.com>2024-12-09 22:13:26 +0100
commit3ed6f02a66fd9d02a4cc3c45b2605cb3d8ad0d2e (patch)
tree7cf2ba952508537dbbd8fbae8bf574033db4d434
parent6733ebcf129193a373eca870ebe5f2d6d65b9476 (diff)
parent1db8a48a8b9d1b7b125d9ca29cc4c48534640375 (diff)
downloadvyos-1x-3ed6f02a66fd9d02a4cc3c45b2605cb3d8ad0d2e.tar.gz
vyos-1x-3ed6f02a66fd9d02a4cc3c45b2605cb3d8ad0d2e.zip
Merge pull request #4218 from nvollmar/T6927
T6927: adds option to set container name server
-rw-r--r--interface-definitions/container.xml.in1
-rwxr-xr-xsmoketest/scripts/cli/test_container.py15
-rwxr-xr-xsrc/conf_mode/container.py7
3 files changed, 22 insertions, 1 deletions
diff --git a/interface-definitions/container.xml.in b/interface-definitions/container.xml.in
index bd2ff820d..ad1815604 100644
--- a/interface-definitions/container.xml.in
+++ b/interface-definitions/container.xml.in
@@ -275,6 +275,7 @@
</properties>
<defaultValue>64</defaultValue>
</leafNode>
+ #include <include/name-server-ipv4-ipv6.xml.i>
<tagNode name="network">
<properties>
<help>Attach user defined network to container</help>
diff --git a/smoketest/scripts/cli/test_container.py b/smoketest/scripts/cli/test_container.py
index 0541384da..5d574ab7d 100755
--- a/smoketest/scripts/cli/test_container.py
+++ b/smoketest/scripts/cli/test_container.py
@@ -96,6 +96,21 @@ class TestContainer(VyOSUnitTestSHIM.TestCase):
tmp = cmd(f'sudo podman exec -it {cont_name} sysctl kernel.msgmax')
self.assertEqual(tmp, 'kernel.msgmax = 4096')
+ def test_name_server(self):
+ cont_name = 'dns-test'
+ name_server = '192.168.0.1'
+ self.cli_set(base_path + ['name', cont_name, 'allow-host-networks'])
+ self.cli_set(base_path + ['name', cont_name, 'image', cont_image])
+ self.cli_set(base_path + ['name', cont_name, 'name-server', name_server])
+
+ self.cli_commit()
+
+ n = cmd_to_json(f'sudo podman inspect {cont_name}')
+ self.assertEqual(n['HostConfig']['Dns'][0], name_server)
+
+ tmp = cmd(f'sudo podman exec -it {cont_name} cat /etc/resolv.conf')
+ self.assertIn(name_server, tmp)
+
def test_cpu_limit(self):
cont_name = 'c2'
diff --git a/src/conf_mode/container.py b/src/conf_mode/container.py
index a7dc33d9d..4d3962029 100755
--- a/src/conf_mode/container.py
+++ b/src/conf_mode/container.py
@@ -363,9 +363,14 @@ def generate_run_arguments(name, container_config):
if 'allow_host_pid' in container_config:
host_pid = '--pid host'
+ name_server = ''
+ if 'name_server' in container_config:
+ for ns in container_config['name_server']:
+ name_server += f'--dns {ns}'
+
container_base_cmd = f'--detach --interactive --tty --replace {capabilities} --cpus {cpu_quota} {sysctl_opt} ' \
f'--memory {memory}m --shm-size {shared_memory}m --memory-swap 0 --restart {restart} ' \
- f'--name {name} {hostname} {device} {port} {volume} {env_opt} {label} {uid} {host_pid}'
+ f'--name {name} {hostname} {device} {port} {name_server} {volume} {env_opt} {label} {uid} {host_pid}'
entrypoint = ''
if 'entrypoint' in container_config: