summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/Client/Toolset.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/lib/Client/Toolset.py b/src/lib/Client/Toolset.py
index 2e5d12ed9..52e7c451a 100644
--- a/src/lib/Client/Toolset.py
+++ b/src/lib/Client/Toolset.py
@@ -183,15 +183,27 @@ class Toolset(object):
# List bad elements of the configuration
if dirty:
bad_elms = lxml.etree.SubElement(stats, "Bad")
- for elm in [key for key, val in self.states.iteritems() if not val]:
- if elm.get('name') == None:
- lxml.etree.SubElement(bad_elms, elm.tag)
- else:
- lxml.etree.SubElement(bad_elms, elm.tag, name=elm.get('name'))
+ for ent in [key for key, val in self.states.iteritems() if not val]:
+ newent = lxml.etree.SubElement(bad_elms, ent.tag, name=ent.get('name', 'None'))
+ for field in [item for item in 'current_exists', 'current_diff' if item in ent.attrib]:
+ newent.set(field, ent.get(field))
+ del ent.attrib[field]
+ failures = [key for key in ent.attrib if key[:8] == 'current_']
+ for fail in failures:
+ for field in [fail, fail[8:]]:
+ print ent.get('name'), field
+ newent.set(field, ent.get(field))
if self.modified:
mod = lxml.etree.SubElement(stats, "Modified")
- for elm in self.modified:
- lxml.etree.SubElement(mod, elm.tag, name=elm.get('name'))
+ for ent in self.modified:
+ newent = lxml.etree.SubElement(mod, ent.tag, name=ent.get('name'))
+ for field in [item for item in 'current_exists', 'current_diff' if item in ent.attrib]:
+ newent.set(field, ent.get(field))
+ del ent.attrib[field]
+ failures = [key for key in ent.attrib if key[:8] == 'current_']
+ for fail in failures:
+ for field in [fail, fail[8:]]:
+ newent.set(field, ent.get(field))
if self.extra_services + self.pkgwork['remove']:
extra = lxml.etree.SubElement(stats, "Extra")
[lxml.etree.SubElement(extra, "Service", name=svc) for svc in self.extra_services]