summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/cloud-init4
-rw-r--r--cloudinit/reporting.py16
-rw-r--r--cloudinit/sources/__init__.py5
3 files changed, 15 insertions, 10 deletions
diff --git a/bin/cloud-init b/bin/cloud-init
index 6a47e5e8..c808eda5 100755
--- a/bin/cloud-init
+++ b/bin/cloud-init
@@ -636,8 +636,8 @@ def main():
"running single module %s" % args.name)
report_on = args.report
- reporter = reporting.ReportStack(rname, rdesc, reporting=report_on)
- with reporter:
+ args.reporter = reporting.ReportStack(rname, rdesc, reporting=report_on)
+ with args.reporter:
return util.log_time(
logfunc=LOG.debug, msg="cloud-init mode '%s'" % name,
get_uptime=True, func=functor, args=(name, args))
diff --git a/cloudinit/reporting.py b/cloudinit/reporting.py
index c925f661..1bd7df0d 100644
--- a/cloudinit/reporting.py
+++ b/cloudinit/reporting.py
@@ -137,7 +137,6 @@ class ReportStack(object):
def __init__(self, name, description, parent=None, reporting=None,
exc_result=None):
self.parent = parent
- self.reporting = reporting
self.name = name
self.description = description
@@ -145,18 +144,23 @@ class ReportStack(object):
exc_result = status.FAIL
self.exc_result = exc_result
+ # use parents reporting value if not provided
if reporting is None:
- # if reporting is specified respect it, otherwise use parent's value
if parent:
reporting = parent.reporting
else:
reporting = True
+ self.reporting = reporting
+
if parent:
- self.fullname = '/'.join((name, parent.fullname,))
+ self.fullname = '/'.join((parent.fullname, name,))
else:
self.fullname = self.name
self.children = {}
+ def __repr__(self):
+ return ("%s reporting=%s" % (self.fullname, self.reporting))
+
def __enter__(self):
self.exception = None
if self.reporting:
@@ -166,10 +170,10 @@ class ReportStack(object):
return self
def childrens_finish_info(self, result=None, description=None):
- for result in (status.FAIL, status.WARN):
+ for cand_result in (status.FAIL, status.WARN):
for name, (value, msg) in self.children.items():
- if value == result:
- return (result, "[" + name + "]" + msg)
+ if value == cand_result:
+ return (value, "[" + name + "]" + msg)
if result is None:
result = status.SUCCESS
if description is None:
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py
index c4848d5d..f585c3e4 100644
--- a/cloudinit/sources/__init__.py
+++ b/cloudinit/sources/__init__.py
@@ -252,9 +252,10 @@ 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 cls in ds_list:
+ for i, cls in enumerate(ds_list):
+ name=ds_names[i].replace("DataSource", "")
myreporter = reporting.ReportStack(
- "check-%s" % cls, "searching for %s" % cls,
+ "check-%s" % name, "searching for %s" % name,
parent=reporter, exc_result=reporting.status.WARN)
try: