From 2c3017a25686eb36b28211deda176a7badcea132 Mon Sep 17 00:00:00 2001 From: Tim Laszlo Date: Mon, 8 Oct 2012 18:57:06 -0500 Subject: Replace DBStats with Reporting --- src/lib/Bcfg2/Server/Plugins/DBStats.py | 92 +++------------------------------ 1 file changed, 6 insertions(+), 86 deletions(-) (limited to 'src') diff --git a/src/lib/Bcfg2/Server/Plugins/DBStats.py b/src/lib/Bcfg2/Server/Plugins/DBStats.py index b796b3431..e0794f019 100644 --- a/src/lib/Bcfg2/Server/Plugins/DBStats.py +++ b/src/lib/Bcfg2/Server/Plugins/DBStats.py @@ -1,95 +1,15 @@ """ DBstats provides a database-backed statistics handler """ -import difflib -import platform -import sys -import time - -from django.core.exceptions import MultipleObjectsReturned - import Bcfg2.Server.Plugin -from Bcfg2.Server.Reports.importscript import load_stat -from Bcfg2.Server.Reports.reports.models import Client -from Bcfg2.Compat import b64decode -class DBStats(Bcfg2.Server.Plugin.ThreadedStatistics, - Bcfg2.Server.Plugin.PullSource): +class DBStats(Bcfg2.Server.Plugin.Plugin): """ DBstats provides a database-backed statistics handler """ def __init__(self, core, datastore): - Bcfg2.Server.Plugin.ThreadedStatistics.__init__(self, core, datastore) - Bcfg2.Server.Plugin.PullSource.__init__(self) - self.cpath = "%s/Metadata/clients.xml" % datastore - self.core = core - if not self.core.database_available: - raise Bcfg2.Server.Plugin.PluginInitError - - def handle_statistic(self, metadata, data): - newstats = data.find("Statistics") - newstats.set('time', time.asctime(time.localtime())) - - start = time.time() - for try_count in [1, 2, 3]: - try: - load_stat(metadata, - newstats, - self.core.encoding, - 0, - self.logger, - True, - platform.node()) - self.logger.info("Imported data for %s in %s seconds" % - (metadata.hostname, time.time() - start)) - return - except MultipleObjectsReturned: - err = sys.exc_info()[1] - self.logger.error("DBStats: MultipleObjectsReturned while " - "handling %s: %s" % (metadata.hostname, err)) - self.logger.error("DBStats: Data is inconsistent") - break - except: - self.logger.error("DBStats: Failed to write to db (lock); " - "retrying (try %s)" % try_count, exc_info=1) - self.logger.error("DBStats: Retry limit failed for %s; " - "aborting operation" % metadata.hostname) - - def GetExtra(self, client): - c_inst = Client.objects.filter(name=client)[0] - return [(a.entry.kind, a.entry.name) for a in - c_inst.current_interaction.extra()] + Bcfg2.Server.Plugin.Plugin.__init__(self, core, datastore) + self.logger.error("DBStats has been replaced with Reporting") + self.logger.error("DBStats: Be sure to migrate your data "\ + "before running the report collector") + raise Bcfg2.Server.Plugin.PluginInitError - def GetCurrentEntry(self, client, e_type, e_name): - try: - c_inst = Client.objects.filter(name=client)[0] - except IndexError: - self.logger.error("Unknown client: %s" % client) - raise Bcfg2.Server.Plugin.PluginExecutionError - 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] - ret = [] - data = ('owner', 'group', 'perms') - for dtype in data: - if getattr(entry.reason, "current_%s" % dtype) == '': - ret.append(getattr(entry.reason, dtype)) - else: - ret.append(getattr(entry.reason, "current_%s" % dtype)) - if entry.reason.is_sensitive: - raise Bcfg2.Server.Plugin.PluginExecutionError - elif len(entry.reason.unpruned) != 0: - ret.append('\n'.join(entry.reason.unpruned)) - elif entry.reason.current_diff != '': - if entry.reason.is_binary: - ret.append(b64decode(entry.reason.current_diff)) - else: - ret.append('\n'.join(difflib.restore(\ - entry.reason.current_diff.split('\n'), 1))) - elif entry.reason.is_binary: - # If len is zero the object was too large to store - raise Bcfg2.Server.Plugin.PluginExecutionError - else: - ret.append(None) - return ret -- cgit v1.2.3-1-g7c22