sailesh1993 / rpms / cloud-init

Forked from rpms/cloud-init a year ago
Clone
3956c3
From 3774ec0a9873b4dfbc647ee57f16fe461706c1b2 Mon Sep 17 00:00:00 2001
7fc49f
From: Ryan McCabe <rmccabe@redhat.com>
3956c3
Date: Tue, 21 Nov 2017 11:50:18 -0500
3956c3
Subject: [PATCH] Render DNS and DOMAIN lines for sysconfig
7fc49f
7fc49f
Currently when dns and dns search info is provided, it is not
7fc49f
rendered when outputting to sysconfig format.
7fc49f
7fc49f
This patch causes the DNS and DOMAIN lines to be written out rendering
7fc49f
sysconfig.
7fc49f
7fc49f
This is a backport of upstream commit
7fc49f
bbe91cdc6917adb503b455e6860c21ea7b3f567f which will not apply to the
7fc49f
0.7.9 tree.
7fc49f
7fc49f
Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
3956c3
Resolves: rhbz#1489270
7fc49f
---
7fc49f
 cloudinit/net/sysconfig.py  | 17 +++++++++++++++++
3956c3
 tests/unittests/test_net.py | 11 ++++++++---
3956c3
 2 files changed, 25 insertions(+), 3 deletions(-)
7fc49f
7fc49f
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
3956c3
index ca031691..e34c8491 100644
7fc49f
--- a/cloudinit/net/sysconfig.py
7fc49f
+++ b/cloudinit/net/sysconfig.py
3956c3
@@ -350,6 +350,23 @@ class Renderer(renderer.Renderer):
3956c3
                 if 'gateway' in subnet:
3956c3
                     iface_cfg['GATEWAY'] = subnet['gateway']
7fc49f
 
7fc49f
+                if 'dns_search' in subnet:
7fc49f
+                    if isinstance(subnet['dns_search'], (list, tuple)):
7fc49f
+                        # Currently limited to 6 entries per resolv.conf(5)
7fc49f
+                        search_list = subnet['dns_search'][:6]
7fc49f
+                        iface_cfg['DOMAIN'] = ' '.join(search_list)
7fc49f
+                    else:
7fc49f
+                        iface_cfg['DOMAIN'] = subnet['dns_search']
7fc49f
+
7fc49f
+                if 'dns_nameservers' in subnet:
3956c3
+                    if isinstance(subnet['dns_search'], (list, tuple)):
7fc49f
+                        # Currently limited to 3 entries per resolv.conf(5)
7fc49f
+                        dns_list = subnet['dns_nameservers'][:3]
7fc49f
+                        for i, k in enumerate(dns_list, 1):
7fc49f
+                            iface_cfg['DNS' + str(i)] = k
7fc49f
+                    else:
7fc49f
+                        iface_cfg['DNS1'] = subnet['dns_nameservers']
7fc49f
+
7fc49f
     @classmethod
7fc49f
     def _render_subnet_routes(cls, iface_cfg, route_cfg, subnets):
7fc49f
         for i, subnet in enumerate(subnets, start=len(iface_cfg.children)):
7fc49f
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
3956c3
index 4a32eb88..551370d4 100644
7fc49f
--- a/tests/unittests/test_net.py
7fc49f
+++ b/tests/unittests/test_net.py
3956c3
@@ -820,7 +820,9 @@ USERCTL=no
3956c3
 
3956c3
     def test_network_config_v1_samples(self):
3956c3
         ns = network_state.parse_net_config_data(CONFIG_V1_SIMPLE_SUBNET)
3956c3
-        render_dir = self.tmp_path("render")
3956c3
+        tmp_dir = tempfile.mkdtemp()
3956c3
+        self.addCleanup(shutil.rmtree, tmp_dir)
3956c3
+        render_dir = os.path.join(tmp_dir, "render")
3956c3
         os.makedirs(render_dir)
3956c3
         renderer = sysconfig.Renderer()
3956c3
         renderer.render_network_state(render_dir, ns)
3956c3
@@ -844,7 +846,9 @@ USERCTL=no
7fc49f
 
7fc49f
     def test_config_with_explicit_loopback(self):
7fc49f
         ns = network_state.parse_net_config_data(CONFIG_V1_EXPLICIT_LOOPBACK)
7fc49f
-        render_dir = self.tmp_path("render")
7fc49f
+        tmp_dir = tempfile.mkdtemp()
7fc49f
+        self.addCleanup(shutil.rmtree, tmp_dir)
7fc49f
+        render_dir = os.path.join(tmp_dir, "render")
7fc49f
         os.makedirs(render_dir)
7fc49f
         renderer = sysconfig.Renderer()
7fc49f
         renderer.render_network_state(render_dir, ns)
3956c3
@@ -904,7 +908,8 @@ iface eth1000 inet dhcp
7fc49f
         self.assertEqual(expected.lstrip(), contents.lstrip())
7fc49f
 
7fc49f
     def test_config_with_explicit_loopback(self):
7fc49f
-        tmp_dir = self.tmp_dir()
7fc49f
+        tmp_dir = tempfile.mkdtemp()
7fc49f
+        self.addCleanup(shutil.rmtree, tmp_dir)
7fc49f
         ns = network_state.parse_net_config_data(CONFIG_V1_EXPLICIT_LOOPBACK)
7fc49f
         renderer = eni.Renderer()
7fc49f
         renderer.render_network_state(tmp_dir, ns)
7fc49f
-- 
3956c3
2.13.6
7fc49f