From eec6618bea0ab204ce02e8c122e9960ac034595b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 3 Aug 2011 13:06:55 -0400 Subject: 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. --- cloudinit/CloudConfig/cc_set_hostname.py | 2 +- cloudinit/CloudConfig/cc_update_etc_hosts.py | 3 +-- cloudinit/CloudConfig/cc_update_hostname.py | 2 +- cloudinit/util.py | 23 +++++++++++++++++++++++ 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) -- cgit v1.2.3