cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #00025
[Merge] lp:~harlowja/cloud-init/cloud-emit into lp:cloud-init
Joshua Harlow has proposed merging lp:~harlowja/cloud-init/cloud-emit into lp:cloud-init.
Requested reviews:
cloud init development team (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~harlowja/cloud-init/cloud-emit/+merge/119079
Rework the cloud-config upstart event emission so that its a somewhat generic module instead of a core piece of code.
--
https://code.launchpad.net/~harlowja/cloud-init/cloud-emit/+merge/119079
Your team cloud init development team is requested to review the proposed merge of lp:~harlowja/cloud-init/cloud-emit into lp:cloud-init.
=== modified file 'bin/cloud-init'
--- bin/cloud-init 2012-07-27 02:47:12 +0000
+++ bin/cloud-init 2012-08-10 03:53:17 +0000
@@ -100,29 +100,6 @@
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
@@ -361,11 +338,6 @@
# 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)
=== added file 'cloudinit/config/cc_emit_upstart.py'
--- cloudinit/config/cc_emit_upstart.py 1970-01-01 00:00:00 +0000
+++ cloudinit/config/cc_emit_upstart.py 2012-08-10 03:53:17 +0000
@@ -0,0 +1,47 @@
+# vi: ts=4 expandtab
+#
+# Copyright (C) 2009-2011 Canonical Ltd.
+# Copyright (C) 2012 Hewlett-Packard Development Company, L.P.
+#
+# Author: Scott Moser <scott.moser@xxxxxxxxxxxxx>
+# Author: Juerg Haefliger <juerg.haefliger@xxxxxx>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import os
+
+from cloudinit import util
+from cloudinit.settings import PER_ALWAYS
+
+frequency = PER_ALWAYS
+
+distros = ['ubuntu']
+
+
+def handle(name, _cfg, cloud, log, args):
+ event_names = args
+ if not event_names:
+ log.debug(("Skipping module named %s,"
+ " no event names provided"), name)
+ return
+ if not os.path.isfile("/sbin/initctl"):
+ log.debug(("Skipping module named %s,"
+ " no /sbin/initctl located"), name)
+ return
+ cfgpath = cloud.paths.get_ipath_cur("cloud_config")
+ for n in event_names:
+ cmd = ['initctl', 'emit', str(n), 'CLOUD_CFG=%s' % cfgpath]
+ try:
+ util.subp(cmd)
+ except:
+ log.warn("Emission of upstart event %s failed", n)
=== modified file 'config/cloud.cfg'
--- config/cloud.cfg 2012-07-11 21:00:21 +0000
+++ config/cloud.cfg 2012-08-10 03:53:17 +0000
@@ -32,6 +32,10 @@
# The modules that run in the 'config' stage
cloud_config_modules:
+# Emit the cloud config ready event
+# this can be used by upstart jobs for 'start on cloud-config'.
+ - name: emit_upstart
+ args: ["cloud-config"]
- mounts
- ssh-import-id
- locale