summaryrefslogtreecommitdiff
path: root/cloudinit/sources/DataSourceAzure.py
diff options
context:
space:
mode:
authorDaniel Watkins <daniel.watkins@canonical.com>2015-04-15 12:13:17 +0100
committerDaniel Watkins <daniel.watkins@canonical.com>2015-04-15 12:13:17 +0100
commitb6060efa4bd1de7f49f6aca3e97cfe77947f3a93 (patch)
tree2421ee3f1cc1ebdd9c24549a84db42e646d7cd8f /cloudinit/sources/DataSourceAzure.py
parentf4789639af50ea631cf75af526ad013b05670caa (diff)
downloadvyos-cloud-init-b6060efa4bd1de7f49f6aca3e97cfe77947f3a93.tar.gz
vyos-cloud-init-b6060efa4bd1de7f49f6aca3e97cfe77947f3a93.zip
Add unit tests for Azure hostname bouncing.
Including minor refactoring to make mocking considerably easier.
Diffstat (limited to 'cloudinit/sources/DataSourceAzure.py')
-rw-r--r--cloudinit/sources/DataSourceAzure.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
index 6e030217..d4211fc4 100644
--- a/cloudinit/sources/DataSourceAzure.py
+++ b/cloudinit/sources/DataSourceAzure.py
@@ -66,6 +66,14 @@ DS_CFG_PATH = ['datasource', DS_NAME]
DEF_EPHEMERAL_LABEL = 'Temporary Storage'
+def get_hostname(hostname_command='hostname'):
+ return util.subp(hostname_command, capture=True)[0].strip()
+
+
+def set_hostname(hostname, hostname_command='hostname'):
+ util.subp([hostname_command, hostname])
+
+
class DataSourceAzureNet(sources.DataSource):
def __init__(self, sys_cfg, distro, paths):
sources.DataSource.__init__(self, sys_cfg, distro, paths)
@@ -313,13 +321,22 @@ def handle_set_hostname(enabled, hostname, cfg):
hostname_command=cfg['hostname_command'])
+def perform_hostname_bounce(command, env):
+ shell = not isinstance(command, (list, tuple))
+ # capture=False, see comments in bug 1202758 and bug 1206164.
+ util.log_time(logfunc=LOG.debug, msg="publishing hostname",
+ get_uptime=True, func=util.subp,
+ kwargs={'args': command, 'shell': shell, 'capture': False,
+ 'env': env})
+
+
def apply_hostname_bounce(hostname, policy, interface, command,
hostname_command="hostname"):
# set the hostname to 'hostname' if it is not already set to that.
# then, if policy is not off, bounce the interface using command
- prev_hostname = util.subp(hostname_command, capture=True)[0].strip()
+ prev_hostname = get_hostname()
- util.subp([hostname_command, hostname])
+ set_hostname(hostname, hostname_command)
msg = ("phostname=%s hostname=%s policy=%s interface=%s" %
(prev_hostname, hostname, policy, interface))
@@ -341,12 +358,7 @@ def apply_hostname_bounce(hostname, policy, interface, command,
command = BOUNCE_COMMAND
LOG.debug("pubhname: publishing hostname [%s]", msg)
- shell = not isinstance(command, (list, tuple))
- # capture=False, see comments in bug 1202758 and bug 1206164.
- util.log_time(logfunc=LOG.debug, msg="publishing hostname",
- get_uptime=True, func=util.subp,
- kwargs={'args': command, 'shell': shell, 'capture': False,
- 'env': env})
+ perform_hostname_bounce(command, env)
def crtfile_to_pubkey(fname):