summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2011-08-03 13:06:55 -0400
committerScott Moser <smoser@ubuntu.com>2011-08-03 13:06:55 -0400
commiteec6618bea0ab204ce02e8c122e9960ac034595b (patch)
treed3ddcfa9340a2c2ba1cbb0789f55670914229649
parent96edbdc300e6697d7160bccfbb8669c67e57164c (diff)
downloadvyos-cloud-init-eec6618bea0ab204ce02e8c122e9960ac034595b.tar.gz
vyos-cloud-init-eec6618bea0ab204ce02e8c122e9960ac034595b.zip
add get_hostname_fqdn method to 'util' and use it for getting hostname
This adds a method 'get_hostname_fqdn' to cloudinit.util, and then uses this method for getting the hostname and fqdn in places that get hostname. The single place for getting it right will help.
-rw-r--r--cloudinit/CloudConfig/cc_set_hostname.py2
-rw-r--r--cloudinit/CloudConfig/cc_update_etc_hosts.py3
-rw-r--r--cloudinit/CloudConfig/cc_update_hostname.py2
-rw-r--r--cloudinit/util.py23
4 files changed, 26 insertions, 4 deletions
diff --git a/cloudinit/CloudConfig/cc_set_hostname.py b/cloudinit/CloudConfig/cc_set_hostname.py
index 2b130810..b505b621 100644
--- a/cloudinit/CloudConfig/cc_set_hostname.py
+++ b/cloudinit/CloudConfig/cc_set_hostname.py
@@ -23,8 +23,8 @@ def handle(name,cfg,cloud,log,args):
log.debug("preserve_hostname is set. not setting hostname")
return(True)
+ ( hostname, fqdn ) = util.get_hostname_fqdn(cfg, cloud)
try:
- hostname = util.get_cfg_option_str(cfg,"hostname",cloud.get_hostname())
set_hostname(hostname, log)
except Exception as e:
util.logexc(log)
diff --git a/cloudinit/CloudConfig/cc_update_etc_hosts.py b/cloudinit/CloudConfig/cc_update_etc_hosts.py
index d33eaa25..fe4489ad 100644
--- a/cloudinit/CloudConfig/cc_update_etc_hosts.py
+++ b/cloudinit/CloudConfig/cc_update_etc_hosts.py
@@ -22,8 +22,7 @@ import StringIO
frequency = per_always
def handle(name,cfg,cloud,log,args):
- hostname = util.get_cfg_option_str(cfg,"hostname",cloud.get_hostname())
- fqdn = util.get_cfg_option_str(cfg,"fqdn",cloud.get_hostname(fqdn=True))
+ ( hostname, fqdn ) = util.get_hostname_fqdn(cfg, cloud)
if util.get_cfg_option_bool(cfg,"manage_etc_hosts", True):
# manage_etc_hosts not true, update the 127.0.1.1 entry via update_etc_hosts
diff --git a/cloudinit/CloudConfig/cc_update_hostname.py b/cloudinit/CloudConfig/cc_update_hostname.py
index 9ef02251..3f55c73b 100644
--- a/cloudinit/CloudConfig/cc_update_hostname.py
+++ b/cloudinit/CloudConfig/cc_update_hostname.py
@@ -27,8 +27,8 @@ def handle(name,cfg,cloud,log,args):
log.debug("preserve_hostname is set. not updating hostname")
return
+ ( hostname, fqdn ) = util.get_hostname_fqdn(cfg, cloud)
try:
- hostname = util.get_cfg_option_str(cfg,"hostname",cloud.get_hostname())
prev ="%s/%s" % (cloud.get_cpath('data'),"previous-hostname")
update_hostname(hostname, prev, log)
except Exception as e:
diff --git a/cloudinit/util.py b/cloudinit/util.py
index b3842afa..64eafa29 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -422,3 +422,26 @@ def islxc():
raise
return False
+
+def get_hostname_fqdn(cfg, cloud):
+ # return the hostname and fqdn from 'cfg'. If not found in cfg,
+ # then fall back to data from cloud
+ if "fqdn" in cfg:
+ # user specified a fqdn. Default hostname then is based off that
+ fqdn = cfg['fqdn']
+ hostname = get_cfg_option_str(cfg,"hostname",fqdn.split('.')[0])
+ else:
+ if "hostname" in cfg and cfg['hostname'].find('.') > 0:
+ # user specified hostname, and it had '.' in it
+ # be nice to them. set fqdn and hostname from that
+ fqdn = cfg['hostname']
+ hostname = cfg['hostname'][:fqdn.find('.')]
+ else
+ # no fqdn set, get fqdn from cloud.
+ # get hostname from cfg if available otherwise cloud
+ fqdn = cloud.get_hostname(fqdn=True)
+ if "hostname" in cfg:
+ hostname = cfg['hostname']
+ else:
+ hostname = cloud.get_hostname()
+ return(hostname, fqdn)