diff options
author | Scott Moser <smoser@ubuntu.com> | 2012-04-05 00:08:42 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2012-04-05 00:08:42 -0400 |
commit | 67fe09104cb347c03ea608c72a1382e8ea252b1d (patch) | |
tree | 3adeab772dcda3ecd70798ca461272e11ce7d2b0 | |
parent | 166edf79d06fb94856c7c7401914c94149cecbc6 (diff) | |
download | vyos-cloud-init-67fe09104cb347c03ea608c72a1382e8ea252b1d.tar.gz vyos-cloud-init-67fe09104cb347c03ea608c72a1382e8ea252b1d.zip |
move the reading of the cmdline cloud-config url to cloud-init.py
The reason for moving this from cloudinit/__init__.py was that it
was running too late there.
The cloudinit.parsed_cfgs variable was already filled by cloud-init.py's
reading of cloud config. I'm sure I had done this so that it would not have to
re-parse configs.
I think the right way to handle this is to move that logic back to
cloudinit/__init__.py and add some function like 'reread_configs()'
that would re-read all releavent cofnigs and re-setup logging.
That seemed more error prone at the moment, with limited time.
-rwxr-xr-x | cloud-init.py | 26 | ||||
-rw-r--r-- | cloudinit/__init__.py | 18 |
2 files changed, 26 insertions, 18 deletions
diff --git a/cloud-init.py b/cloud-init.py index 9e0a0405..db620502 100755 --- a/cloud-init.py +++ b/cloud-init.py @@ -28,6 +28,7 @@ import cloudinit.CloudConfig as CC import cloudinit.DataSource as ds import cloudinit.netinfo as netinfo import time +import traceback import logging import errno import os @@ -67,6 +68,26 @@ def main(): warn("unable to open /proc/uptime\n") uptime = "na" + cmdline_msg = None + cmdline_exc = None + if cmd == "start": + target = "%s.d/%s" % (cloudinit.system_config, + "91_kernel_cmdline_url.cfg") + if os.path.exists(target): + cmdline_msg = "cmdline: %s existed" % target + else: + try: + (key, url, content) = cloudinit.get_cmdline_url() + if key and content: + util.write_file(target, content, mode=0600) + cmdline_msg = ("cmdline: wrote %s from %s, %s" % + (target, key, url)) + elif key: + cmdline_msg = ("cmdline: %s, %s had no cloud-config" % + (key, url)) + except Exception: + cmdline_exc = traceback.format_exc() + try: cfg = cloudinit.get_base_cfg(cfg_path) except Exception as e: @@ -86,6 +107,11 @@ def main(): cloudinit.logging_set_from_cfg(cfg) log = logging.getLogger() + if cmdline_exc: + log.warn(cmdline_exc) + elif cmdline_msg: + log.debug(cmdline_msg) + try: cloudinit.initfs() except Exception as e: diff --git a/cloudinit/__init__.py b/cloudinit/__init__.py index 0b46dde9..85c6fd1b 100644 --- a/cloudinit/__init__.py +++ b/cloudinit/__init__.py @@ -140,24 +140,6 @@ class CloudInit: self.sysconfig = sysconfig - if DataSource.DEP_NETWORK in self.ds_deps: - target = "%s.d/%s" % (self.sysconfig, "91_kernel_cmdline_url.cfg") - if os.path.exists(target): - log.debug("cmdline: %s existed" % target) - else: - try: - (key, url, content) = get_cmdline_url() - if key and content: - util.write_file(target, content, mode=0600) - log.debug("cmdline: wrote %s from %s, %s" % - (target, key, url)) - elif key: - log.debug("cmdline: %s, %s had no cloud-config" % - (key, url)) - except Exception: - util.logexc(log) - log.warn("cmdline: exception occurred while reading") - self.cfg = self.read_cfg() def read_cfg(self): |