From 67edea979075c69c24e7a53ae9815859356f96d7 Mon Sep 17 00:00:00 2001 From: Brian Pellin Date: Tue, 11 Jan 2005 20:00:33 +0000 Subject: Made changes to generate more interesting statistics to send to the server. (Logical change 1.186) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@794 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Toolset.py | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/lib/Client/Toolset.py b/src/lib/Client/Toolset.py index ec41620b7..1e2286704 100644 --- a/src/lib/Client/Toolset.py +++ b/src/lib/Client/Toolset.py @@ -1,5 +1,5 @@ '''This is the basic toolset class for the Bcfg2 client''' -__revision__ = '$Revision$' +__revision__ = '$Revision: 1.39 $' from binascii import a2b_base64 from grp import getgrgid, getgrnam @@ -101,19 +101,40 @@ class Toolset(object): self.modified = [key for (key, val) in self.structures.iteritems() if not val] [self.InstallEntry(key) for (key, val) in self.states.iteritems() if not val] - def GenerateStats(self): + def GenerateStats(self, client_version): '''Generate XML summary of execution statistics''' stats = Element("Statistics") - SubElement(stats, "Structures", good=str(len([key for key, val in - self.structures.iteritems() if val])), \ - bad=str(len([key for key, val in self.structures.iteritems() if not val]))) - SubElement(stats, "Entries", good=str(len([key for key, val in self.states.iteritems() if val])), \ - bad=str(len([key for key, val in self.states.iteritems() if not val]))) + + # Calculate number of total bundles and structures + total = len(self.structures) + len(self.states) + stats.set('total',str(total)) + # Calculate number of good bundles and structures + good = len([key for key, val in self.structures.iteritems() if val]) + \ + len([key for key, val in self.states.iteritems() if val]) + stats.set('good', str(good)) + stats.set('version', '2.0') + stats.set('client_version', client_version) + + if len([key for key, val in self.structures.iteritems() if not val]) == 0: stats.set('state', 'clean') else: stats.set('state', 'dirty') - stats.set('time', asctime(localtime())) + #stats.set('time', asctime(localtime())) + + # List bad elements of the configuration + bad_elms = SubElement(stats, "Bad") + for elm in [key for key,val in self.states.iteritems() if not val]: + if elm.get('name') == None: + SubElement(bad_elms, elm.tag) + else: + SubElement(bad_elms, elm.tag, name=elm.get('name')) + for elm in [key for key,val in self.structures.iteritems() if not val]: + if elm.get('name') == None: + SubElement(bad_elms, elm.tag) + else: + SubElement(bad_elms, elm.tag, name=elm.get('name')) + return stats # the next two are dispatch functions -- cgit v1.2.3-1-g7c22