diff options
-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) |