From d9a4aad5d5cc8cb78997d66850d1916341b8d1cd Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Thu, 9 Aug 2012 20:48:01 -0700 Subject: Move the code that did the 'cloud-config' upstart event name emitting to a config module and make it more generic in that it can take in a list of event names to emit as arguments. Add a yaml example to replace the functionality removed from the main binary. --- cloudinit/config/cc_emit_upstart.py | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 cloudinit/config/cc_emit_upstart.py (limited to 'cloudinit') diff --git a/cloudinit/config/cc_emit_upstart.py b/cloudinit/config/cc_emit_upstart.py new file mode 100644 index 00000000..79f7119f --- /dev/null +++ b/cloudinit/config/cc_emit_upstart.py @@ -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 +# Author: Juerg Haefliger +# +# 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 . + +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) -- cgit v1.2.3 From e7116b69f093600e1e156ee332417d0a30b0df9c Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 10 Aug 2012 10:41:52 -0700 Subject: Adjustments so that the default old event is used when no args are provided. Adjust the config file to use this older method so that older changes aren't needed. Also when calling 'initctl' emit fails log the exception message so that some useful warning information can be produced. --- cloudinit/config/cc_emit_upstart.py | 13 +++++++------ config/cloud.cfg | 3 +-- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'cloudinit') diff --git a/cloudinit/config/cc_emit_upstart.py b/cloudinit/config/cc_emit_upstart.py index 79f7119f..68b86ff6 100644 --- a/cloudinit/config/cc_emit_upstart.py +++ b/cloudinit/config/cc_emit_upstart.py @@ -25,15 +25,15 @@ from cloudinit.settings import PER_ALWAYS frequency = PER_ALWAYS -distros = ['ubuntu'] +distros = ['ubuntu', 'debian'] 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 + # Default to the 'cloud-config' + # event for backwards compat. + event_names = ['cloud-config'] if not os.path.isfile("/sbin/initctl"): log.debug(("Skipping module named %s," " no /sbin/initctl located"), name) @@ -43,5 +43,6 @@ def handle(name, _cfg, cloud, log, args): cmd = ['initctl', 'emit', str(n), 'CLOUD_CFG=%s' % cfgpath] try: util.subp(cmd) - except: - log.warn("Emission of upstart event %s failed", n) + except Exception as e: + # TODO, use log exception from utils?? + log.warn("Emission of upstart event %s failed due to: %s", n, e) diff --git a/config/cloud.cfg b/config/cloud.cfg index 77b41063..2b4d9e63 100644 --- a/config/cloud.cfg +++ b/config/cloud.cfg @@ -34,8 +34,7 @@ cloud_init_modules: 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"] + - emit_upstart - mounts - ssh-import-id - locale -- cgit v1.2.3