summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2012-04-05 00:08:42 -0400
committerScott Moser <smoser@ubuntu.com>2012-04-05 00:08:42 -0400
commit67fe09104cb347c03ea608c72a1382e8ea252b1d (patch)
tree3adeab772dcda3ecd70798ca461272e11ce7d2b0
parent166edf79d06fb94856c7c7401914c94149cecbc6 (diff)
downloadcloud-init-git-67fe09104cb347c03ea608c72a1382e8ea252b1d.tar.gz
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-xcloud-init.py26
-rw-r--r--cloudinit/__init__.py18
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):