diff options
author | Scott Moser <smoser@ubuntu.com> | 2012-07-26 22:47:12 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2012-07-26 22:47:12 -0400 |
commit | a7dd3984322c42feaf77baf677d7acda9945415a (patch) | |
tree | d1c14c9fba7f6909f45cd3b71ebdd767587024f7 /bin/cloud-init | |
parent | cd80da7aea03223c2786be2026cc627c5d7363a8 (diff) | |
download | cloud-init-git-a7dd3984322c42feaf77baf677d7acda9945415a.tar.gz |
emit the cloud-config event again
The merge of 0.7.0 dropped the cloud-config initctl emission.
I've added it back here, but done so in a way that doesn't force
non-ubuntu (or non-upstart) distros to provide this config setting
to disable it.
LP: #1028674
Diffstat (limited to 'bin/cloud-init')
-rwxr-xr-x | bin/cloud-init | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/bin/cloud-init b/bin/cloud-init index 1f017475..3ecc3dad 100755 --- a/bin/cloud-init +++ b/bin/cloud-init @@ -100,6 +100,29 @@ def welcome_format(action): return templater.render_string(WELCOME_MSG_TPL, tpl_params) +def emit_cloud_config_ready(cfg, cfgpath): + # emit the cloud config ready event + # this can be used by upstart jobs for 'start on cloud-config'. There is a + # builtin value for 'cc_ready_cmd' if that is not overidden by config, then + # we check to make sure that /sbin/initctl is availble. This makes it so + # that non-ubuntu distro will just no-op here with no explicit config. + cmd = None + if 'cc_ready_cmd' in cfg: + cmd = cfg['cc_ready_cmd'] + if isinstance(cmd, str): + cmd = ['sh', '-c', cmd] + elif os.path.isfile("/sbin/initctl"): + cmd = ['initctl', 'emit', 'cloud-config', + 'CLOUD_CFG=%s' % cfgpath] + + if not cmd: + return + try: + util.subp(cmd) + except: + LOG.warn("emission of cloud-config event failed") + + def extract_fns(args): # Files are already opened so lets just pass that along # since it would of broke if it couldn't have @@ -338,6 +361,11 @@ def main_modules(action_name, args): # now that logging is setup and stdout redirected, send welcome welcome(name, msg=w_msg) + # send the cloud-config event. + if name == "config": + emit_cloud_config_ready(mods.cfg, + init.paths.get_ipath_cur("cloud_config")) + # Stage 5 return run_module_section(mods, name, name) |