summaryrefslogtreecommitdiff
path: root/cloudinit
diff options
context:
space:
mode:
authorRyan Harper <ryan.harper@canonical.com>2019-09-26 19:52:02 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-09-26 19:52:02 +0000
commitf80f7f0d82eaf05e68419c7ac87bf5d4c934b796 (patch)
tree5b2e1c1d39ea82d34f3ebfb2462efbfa630360e5 /cloudinit
parent0948cdfbef2052cdf839f24d6a17d457aa9fd4d3 (diff)
downloadvyos-cloud-init-f80f7f0d82eaf05e68419c7ac87bf5d4c934b796.tar.gz
vyos-cloud-init-f80f7f0d82eaf05e68419c7ac87bf5d4c934b796.zip
sysconfig: only write resolv.conf if network_state has DNS values
If an OS image provided an /etc/resolv.conf file that was not empty cloud-init would read and re-write it with a cloud-init header even if no DNS network configuration was provided (e.g. DHCP only). This can cause problems for some network services which don't ignore cloud-init's header. LP: #1843634
Diffstat (limited to 'cloudinit')
-rw-r--r--cloudinit/net/sysconfig.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
index 416c1c97..87b548e5 100644
--- a/cloudinit/net/sysconfig.py
+++ b/cloudinit/net/sysconfig.py
@@ -577,6 +577,10 @@ class Renderer(renderer.Renderer):
@staticmethod
def _render_dns(network_state, existing_dns_path=None):
+ # skip writing resolv.conf if network_state doesn't include any input.
+ if not any([len(network_state.dns_nameservers),
+ len(network_state.dns_searchdomains)]):
+ return None
content = resolv_conf.ResolvConf("")
if existing_dns_path and os.path.isfile(existing_dns_path):
content = resolv_conf.ResolvConf(util.load_file(existing_dns_path))
@@ -584,8 +588,6 @@ class Renderer(renderer.Renderer):
content.add_nameserver(nameserver)
for searchdomain in network_state.dns_searchdomains:
content.add_search_domain(searchdomain)
- if not str(content):
- return None
header = _make_header(';')
content_str = str(content)
if not content_str.startswith(header):