summaryrefslogtreecommitdiff
path: root/cloudinit/distros
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2012-11-09 14:37:21 -0800
committerJoshua Harlow <harlowja@yahoo-inc.com>2012-11-09 14:37:21 -0800
commita0f5926d6a238a71f96c6d5ddd617b5a3f78af46 (patch)
treea26a5996b7e1deb404097c60216c979858b12969 /cloudinit/distros
parent2199cf29b48f3f9789ce108951121ac6e55c5d4c (diff)
parentbd01f3466e10ca515a8e8aec42d00201f40cbd53 (diff)
downloadvyos-cloud-init-a0f5926d6a238a71f96c6d5ddd617b5a3f78af46.tar.gz
vyos-cloud-init-a0f5926d6a238a71f96c6d5ddd617b5a3f78af46.zip
Fix the fqdn/hostname case for rhel and ubuntu
where rhel uses the fqdn for its config while ubuntu uses the short hostname.
Diffstat (limited to 'cloudinit/distros')
-rw-r--r--cloudinit/distros/__init__.py4
-rw-r--r--cloudinit/distros/debian.py4
-rw-r--r--cloudinit/distros/rhel.py25
3 files changed, 21 insertions, 12 deletions
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 869540d2..bd04ba79 100644
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -58,11 +58,11 @@ class Distro(object):
return self._cfg.get(opt_name, default)
@abc.abstractmethod
- def set_hostname(self, hostname):
+ def set_hostname(self, hostname, fqdn=None):
raise NotImplementedError()
@abc.abstractmethod
- def update_hostname(self, hostname, prev_hostname_fn):
+ def update_hostname(self, hostname, fqdn, prev_hostname_fn):
raise NotImplementedError()
@abc.abstractmethod
diff --git a/cloudinit/distros/debian.py b/cloudinit/distros/debian.py
index cc7e53a0..ed4070b4 100644
--- a/cloudinit/distros/debian.py
+++ b/cloudinit/distros/debian.py
@@ -67,7 +67,7 @@ class Distro(distros.Distro):
else:
return distros.Distro._bring_up_interfaces(self, device_names)
- def set_hostname(self, hostname):
+ def set_hostname(self, hostname, fqdn=None):
self._write_hostname(hostname, "/etc/hostname")
LOG.debug("Setting hostname to %s", hostname)
util.subp(['hostname', hostname])
@@ -76,7 +76,7 @@ class Distro(distros.Distro):
# "" gives trailing newline.
util.write_file(out_fn, "%s\n" % str(hostname), 0644)
- def update_hostname(self, hostname, prev_fn):
+ def update_hostname(self, hostname, fqdn, prev_fn):
hostname_prev = self._read_hostname(prev_fn)
hostname_in_etc = self._read_hostname("/etc/hostname")
update_files = []
diff --git a/cloudinit/distros/rhel.py b/cloudinit/distros/rhel.py
index bf3c18d2..e4c27216 100644
--- a/cloudinit/distros/rhel.py
+++ b/cloudinit/distros/rhel.py
@@ -146,8 +146,13 @@ class Distro(distros.Distro):
lines.insert(0, _make_header())
util.write_file(fn, "\n".join(lines), 0644)
- def set_hostname(self, hostname):
- self._write_hostname(hostname, '/etc/sysconfig/network')
+ def set_hostname(self, hostname, fqdn=None):
+ # See: http://bit.ly/TwitgL
+ # Should be fqdn if we can use it
+ sysconfig_hostname = fqdn
+ if not sysconfig_hostname:
+ sysconfig_hostname = hostname
+ self._write_hostname(sysconfig_hostname, '/etc/sysconfig/network')
LOG.debug("Setting hostname to %s", hostname)
util.subp(['hostname', hostname])
@@ -165,28 +170,32 @@ class Distro(distros.Distro):
}
self._update_sysconfig_file(out_fn, host_cfg)
- def update_hostname(self, hostname, prev_file):
+ def update_hostname(self, hostname, fqdn, prev_file):
+ # See: http://bit.ly/TwitgL
+ # Should be fqdn if we can use it
+ sysconfig_hostname = fqdn
+ if not sysconfig_hostname:
+ sysconfig_hostname = hostname
hostname_prev = self._read_hostname(prev_file)
hostname_in_sys = self._read_hostname("/etc/sysconfig/network")
update_files = []
- if not hostname_prev or hostname_prev != hostname:
+ if not hostname_prev or hostname_prev != sysconfig_hostname:
update_files.append(prev_file)
if (not hostname_in_sys or
(hostname_in_sys == hostname_prev
- and hostname_in_sys != hostname)):
+ and hostname_in_sys != sysconfig_hostname)):
update_files.append("/etc/sysconfig/network")
for fn in update_files:
try:
- self._write_hostname(hostname, fn)
+ self._write_hostname(sysconfig_hostname, fn)
except:
util.logexc(LOG, "Failed to write hostname %s to %s",
- hostname, fn)
+ sysconfig_hostname, fn)
if (hostname_in_sys and hostname_prev and
hostname_in_sys != hostname_prev):
LOG.debug(("%s differs from /etc/sysconfig/network."
" Assuming user maintained hostname."), prev_file)
if "/etc/sysconfig/network" in update_files:
- # Only do this if we are running in non-adjusted root mode
LOG.debug("Setting hostname to %s", hostname)
util.subp(['hostname', hostname])