From 5d36c165a931fb9d9b49e1123d8d0647942339c1 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Wed, 20 Aug 2008 15:50:31 +0000 Subject: Add reporting system schema evolution support (from Stousignant) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4884 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/DBStats.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src/lib/Server/Plugins/DBStats.py') diff --git a/src/lib/Server/Plugins/DBStats.py b/src/lib/Server/Plugins/DBStats.py index f3e4fe652..85ba2668b 100644 --- a/src/lib/Server/Plugins/DBStats.py +++ b/src/lib/Server/Plugins/DBStats.py @@ -1,15 +1,27 @@ import Bcfg2.Server.Plugin import Bcfg2.Server.Reports.importscript -from Bcfg2.Server.Reports.reports.models import Client -import difflib, lxml.etree, time +from Bcfg2.Server.Reports.reports.models import Client, Entries +import difflib, lxml.etree, time, logging, datetime +import Bcfg2.Server.Reports.settings + +from Bcfg2.Server.Reports.updatefix import update_database +import traceback +# for debugging output only +logger = logging.getLogger('Bcfg2.Plugins.DBStats') class DBStats(Bcfg2.Server.Plugin.StatisticsPlugin): __name__ = 'DBStats' - __version__ = '$Id: $' - + __version__ = '$Id$' + def __init__(self, core, datastore): self.cpath = "%s/Metadata/clients.xml" % datastore self.core = core + logger.debug("Searching for new models to add to the statistics database") + try: + update_database() + except Exception, inst: + logger.debug(str(inst)) + logger.debug(str(type(inst))) def StoreStatistics(self, mdata, xdata): newstats = xdata.find("Statistics") @@ -20,18 +32,21 @@ class DBStats(Bcfg2.Server.Plugin.StatisticsPlugin): container.append(e) # FIXME need to build a metadata interface to expose a list of clients + # FIXME Server processing the request should be mentionned here + start = time.time() Bcfg2.Server.Reports.importscript.load_stats( self.core.metadata.clientdata, container, 0, True) + logger.info("Imported data in the reason fast path in %s second" % (time.time() - start)) def GetExtra(self, client): c_inst = Client.objects.filter(name=client)[0] return [(a.kind, a.name) for a in - c_inst.current_interaction.extra_items.all()] + c_inst.current_interaction.extra()] def GetCurrentEntry(self, client, e_type, e_name): c_inst = Client.objects.filter(name=client)[0] - result = c_inst.current_interaction.bad_items.filter(kind=e_type, - name=e_name) + result = c_inst.current_interaction.bad().filter(entry__kind=e_type, + entry__name=e_name) if not result: raise Bcfg2.Server.Plugin.PluginExecutionError entry = result[0] -- cgit v1.2.3-1-g7c22