From a7dd3984322c42feaf77baf677d7acda9945415a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 26 Jul 2012 22:47:12 -0400 Subject: 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 --- bin/cloud-init | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'bin/cloud-init') 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) -- cgit v1.2.3