diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2009-01-12 01:07:34 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2009-01-12 01:07:34 +0000 |
commit | 80e4765f7cb7f1ebfa963af653b8e01da3333bd0 (patch) | |
tree | 82e946b7e4a08ae2739acafc5a8708549957c83a /src/lib/Server/Core.py | |
parent | 1affc07c26fad2528a5847a77db33a9baabb9fc8 (diff) | |
download | bcfg2-80e4765f7cb7f1ebfa963af653b8e01da3333bd0.tar.gz bcfg2-80e4765f7cb7f1ebfa963af653b8e01da3333bd0.tar.bz2 bcfg2-80e4765f7cb7f1ebfa963af653b8e01da3333bd0.zip |
Finish up Pull Source and multi-Statistics code
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5012 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Core.py')
-rw-r--r-- | src/lib/Server/Core.py | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/lib/Server/Core.py b/src/lib/Server/Core.py index d2eaed5dd..6b4df2c35 100644 --- a/src/lib/Server/Core.py +++ b/src/lib/Server/Core.py @@ -73,20 +73,6 @@ class Core(object): self.metadata = self.plugins["Metadata"] break - chk_plugins = self.plugins.values() - while True: - try: - plugin = chk_plugins.pop() - if isinstance(plugin, Bcfg2.Server.Plugin.Statistics): - self.stats = plugin - break - except: - pass - if not chk_plugins: - self.init_plugins("Statistics") - self.stats = self.plugins["Statistics"] - break - for plug_names, plug_tname, plug_type, collection in \ [(structures, 'structure', Bcfg2.Server.Plugin.Structure, self.structures), @@ -106,6 +92,11 @@ class Core(object): else: logger.error("Plugin %s not loaded. Not enabled as a %s" \ % (plugin, plug_tname)) + + self.statistics = [plugin for plugin in self.plugins.values() \ + if isinstance(plugin, Bcfg2.Server.Plugin.Statistics)] + self.pull_sources = [plugin for plugin in self.statistics if \ + isinstance(plugin, Bcfg2.Server.Plugin.PullSource)] def init_plugins(self, plugin): try: @@ -244,10 +235,6 @@ class Core(object): count = self.fam.Service() if count and self.svn: self.read_svn_revision() - try: - self.stats.WriteBack() - except: - logger.error("error in Statistics", exc_info=1) def read_svn_revision(self): '''Read svn revision information for the bcfg2 repository''' @@ -281,3 +268,18 @@ class Core(object): self.metadata.merge_additional_metadata(imd, conn.name, grps, data) return imd + + def process_statistics(self, client_name, statistics): + meta = self.build_metadata(client_name) + state = statistics.find(".//Statistics") + if state.get('version') >= '2.0': + for plugin in self.statistics: + try: + plugin.process_statistics(meta, statistics) + except: + logger.error("Plugin %s failed to process stats from %s" \ + % (plugin.name, metadata.hostname), + exc_info=1) + + logger.info("Client %s reported state %s" % (client_name, + state.get('state'))) |