summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2015-07-31 16:12:37 +0000
committerScott Moser <smoser@ubuntu.com>2015-07-31 16:12:37 +0000
commitf36706442b4c1913ea8f7953993b9e03f3adf623 (patch)
tree2308f4288a266ff5edc9664ddd44261882367d43
parentdc2321f5fe5fcfc143da81d694baf0b767eb2cbe (diff)
downloadvyos-cloud-init-f36706442b4c1913ea8f7953993b9e03f3adf623.tar.gz
vyos-cloud-init-f36706442b4c1913ea8f7953993b9e03f3adf623.zip
address Daniel's comments in review
-rwxr-xr-xbin/cloud-init3
-rw-r--r--cloudinit/reporting.py34
-rw-r--r--cloudinit/sources/__init__.py7
-rw-r--r--cloudinit/stages.py3
4 files changed, 22 insertions, 25 deletions
diff --git a/bin/cloud-init b/bin/cloud-init
index c808eda5..d0ac4c7f 100755
--- a/bin/cloud-init
+++ b/bin/cloud-init
@@ -636,7 +636,8 @@ def main():
"running single module %s" % args.name)
report_on = args.report
- args.reporter = reporting.ReportStack(rname, rdesc, reporting=report_on)
+ args.reporter = reporting.ReportStack(
+ rname, rdesc, reporting_enabled=report_on)
with args.reporter:
return util.log_time(
logfunc=LOG.debug, msg="cloud-init mode '%s'" % name,
diff --git a/cloudinit/reporting.py b/cloudinit/reporting.py
index 1bd7df0d..154f4e03 100644
--- a/cloudinit/reporting.py
+++ b/cloudinit/reporting.py
@@ -11,6 +11,7 @@ report events in a structured manner.
import abc
import logging
+import sys
from cloudinit.registry import DictRegistry
@@ -83,9 +84,9 @@ class LogHandler(ReportingHandler):
logger.info(event.as_string())
-class PrintHandler(ReportingHandler):
+class StderrHandler(ReportingHandler):
def publish_event(self, event):
- print(event.as_string())
+ sys.stderr.write(event.as_string() + "\n")
def add_configuration(config):
@@ -134,23 +135,20 @@ def report_start_event(event_name, event_description):
class ReportStack(object):
- def __init__(self, name, description, parent=None, reporting=None,
- exc_result=None):
+ def __init__(self, name, description, parent=None,
+ reporting_enabled=None, result_on_exception=status.FAIL):
self.parent = parent
self.name = name
self.description = description
-
- if exc_result is None:
- exc_result = status.FAIL
- self.exc_result = exc_result
+ self.result_on_exception = result_on_exception
# use parents reporting value if not provided
- if reporting is None:
+ if reporting_enabled is None:
if parent:
- reporting = parent.reporting
+ reporting_enabled = parent.reporting_enabled
else:
- reporting = True
- self.reporting = reporting
+ reporting_enabled = True
+ self.reporting_enabled = reporting_enabled
if parent:
self.fullname = '/'.join((parent.fullname, name,))
@@ -159,11 +157,10 @@ class ReportStack(object):
self.children = {}
def __repr__(self):
- return ("%s reporting=%s" % (self.fullname, self.reporting))
+ return ("%s reporting=%s" % (self.fullname, self.reporting_enabled))
def __enter__(self):
- self.exception = None
- if self.reporting:
+ if self.reporting_enabled:
report_start_event(self.fullname, self.description)
if self.parent:
self.parent.children[self.name] = (None, None)
@@ -184,18 +181,17 @@ class ReportStack(object):
# return tuple of description, and value
if exc:
# by default, exceptions are fatal
- return (self.exc_result, self.description)
+ return (self.result_on_exception, self.description)
return self.childrens_finish_info()
def __exit__(self, exc_type, exc_value, traceback):
- self.exception = exc_value
(result, msg) = self.finish_info(exc_value)
if self.parent:
self.parent.children[self.name] = (result, msg)
- if self.reporting:
+ if self.reporting_enabled:
report_finish_event(self.fullname, msg, result)
available_handlers.register_item('log', LogHandler)
-available_handlers.register_item('print', PrintHandler)
+available_handlers.register_item('print', StderrHandler)
add_configuration(DEFAULT_CONFIG)
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py
index c174a58f..0dc75f9e 100644
--- a/cloudinit/sources/__init__.py
+++ b/cloudinit/sources/__init__.py
@@ -257,7 +257,7 @@ class SearchReportStack(reporting.ReportStack):
self.mode, self.source)
super(SearchReportStack, self).__init__(
name=name, description=description, parent=parent,
- exc_result=reporting.status.WARN)
+ result_on_exception=reporting.status.WARN)
def finish_info(self, exc):
# return tuple of description, and value
@@ -276,10 +276,9 @@ def find_source(sys_cfg, distro, paths, ds_deps, cfg_list, pkg_list, reporter):
ds_names = [type_utils.obj_name(f) for f in ds_list]
LOG.debug("Searching for data source in: %s", ds_names)
- for i, cls in enumerate(ds_list):
- srcname=ds_names[i]
+ for name, cls in zip(ds_names, ds_list):
try:
- with SearchReportStack(srcname, ds_deps, reporter) as rep:
+ with SearchReportStack(name, ds_deps, reporter) as rep:
LOG.debug("Seeing if we can get any data from %s", cls)
s = cls(sys_cfg, distro, paths)
if s.get_data():
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
index 2bf7a1c4..82197d02 100644
--- a/cloudinit/stages.py
+++ b/cloudinit/stages.py
@@ -68,7 +68,8 @@ class Init(object):
if reporter is None:
reporter = reporting.ReportStack(
- name="init-reporter", description="init-desc", reporting=False)
+ name="init-reporter", description="init-desc",
+ reporting_enabled=False)
self.reporter = reporter
def _reset(self, reset_ds=False):