diff options
| -rw-r--r-- | interface-definitions/container.xml.in | 1 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_container.py | 15 | ||||
| -rwxr-xr-x | src/conf_mode/container.py | 7 | 
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: | 
