summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2011-08-03 13:02:01 -0400
committerScott Moser <smoser@ubuntu.com>2011-08-03 13:02:01 -0400
commit96edbdc300e6697d7160bccfbb8669c67e57164c (patch)
tree485852eda0f48c52d39007694c3c8550c2a39128
parentac88bd830da5c283ba584e2a0cc6eeef447d5461 (diff)
downloadvyos-cloud-init-96edbdc300e6697d7160bccfbb8669c67e57164c.tar.gz
vyos-cloud-init-96edbdc300e6697d7160bccfbb8669c67e57164c.zip
improve update_etc_hosts method in cc_update_etc_hosts
This fixes a couple issues with the updating of /etc/hosts by the update-etc-hosts cloud-config module. * if hostname changed in the life of the instance, an additional "header" line would be added. * any comment lines like '#mycomment' would be deleted because they did not have 2 fields
-rw-r--r--cloudinit/CloudConfig/cc_update_etc_hosts.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/cloudinit/CloudConfig/cc_update_etc_hosts.py b/cloudinit/CloudConfig/cc_update_etc_hosts.py
index b3098f29..d33eaa25 100644
--- a/cloudinit/CloudConfig/cc_update_etc_hosts.py
+++ b/cloudinit/CloudConfig/cc_update_etc_hosts.py
@@ -46,27 +46,31 @@ def handle(name,cfg,cloud,log,args):
def update_etc_hosts(hostname, fqdn, log):
with open('/etc/hosts', 'r') as etchosts:
- hosts_line = "# Added by cloud-init\n127.0.1.1\t%s %s\n" % (fqdn, hostname)
+ header = "# Added by cloud-init\n"
+ hosts_line = "127.0.1.1\t%s %s\n" % (fqdn, hostname)
need_write = False
need_change = True
new_etchosts = StringIO.StringIO()
for line in etchosts:
split_line = [s.strip() for s in line.split()]
- # skip over malformed /etc/hosts entries
if len(split_line) < 2:
- continue
+ new_etchosts.write(line)
+ continue
+ if line == header:
+ continue
ip, hosts = split_line[0], split_line[1:]
if ip == "127.0.1.1":
if sorted([hostname, fqdn]) == sorted(hosts):
need_change = False
if need_change == True:
- line = hosts_line
+ print "header=%s!" % header
+ line = "%s%s" % (header, hosts_line)
need_change = False
need_write = True
new_etchosts.write(line)
etchosts.close()
if need_change == True:
- new_etchosts.write(hosts_line)
+ new_etchosts.write("%s%s" % (header, hosts_line))
need_write = True
if need_write == True:
new_etcfile = open ('/etc/hosts','wb')
@@ -74,3 +78,4 @@ def update_etc_hosts(hostname, fqdn, log):
new_etcfile.close()
new_etchosts.close()
return
+