summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Admin/Reports.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Server/Admin/Reports.py')
-rw-r--r--src/lib/Server/Admin/Reports.py74
1 files changed, 40 insertions, 34 deletions
diff --git a/src/lib/Server/Admin/Reports.py b/src/lib/Server/Admin/Reports.py
index 1ac94e5e7..39c9eb71e 100644
--- a/src/lib/Server/Admin/Reports.py
+++ b/src/lib/Server/Admin/Reports.py
@@ -42,7 +42,8 @@ from django.db import connection, transaction
from Bcfg2.Server.Reports.reports.models import Client, Interaction, Entries, \
Entries_interactions, Performance, \
- Reason, Ping, TYPE_CHOICES, InternalDatabaseVersion
+ Reason, Ping
+
def printStats(fn):
"""
@@ -72,6 +73,7 @@ def printStats(fn):
return print_stats
+
class Reports(Bcfg2.Server.Admin.Mode):
'''Admin interface for dynamic reports'''
__shorthelp__ = "Manage dynamic reports"
@@ -97,7 +99,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
def __init__(self, cfile):
Bcfg2.Server.Admin.Mode.__init__(self, cfile)
self.log.setLevel(logging.INFO)
- self.django_commands = [ 'syncdb', 'sqlall', 'validate' ]
+ self.django_commands = ['syncdb', 'sqlall', 'validate']
self.__usage__ = self.__usage__ + " Django commands:\n " + \
"\n ".join(self.django_commands)
@@ -127,54 +129,54 @@ class Reports(Bcfg2.Server.Admin.Mode):
update_database()
elif args[0] == 'load_stats':
quick = '-O3' in args
- stats_file=None
- clients_file=None
- i=1
+ stats_file = None
+ clients_file = None
+ i = 1
while i < len(args):
if args[i] == '-s' or args[i] == '--stats':
- stats_file = args[i+1]
+ stats_file = args[i + 1]
if stats_file[0] == '-':
self.errExit("Invalid statistics file: %s" % stats_file)
elif args[i] == '-c' or args[i] == '--clients-file':
- clients_file = args[i+1]
+ clients_file = args[i + 1]
if clients_file[0] == '-':
self.errExit("Invalid clients file: %s" % clients_file)
i = i + 1
self.load_stats(stats_file, clients_file, verb, quick)
elif args[0] == 'purge':
- expired=False
- client=None
- maxdate=None
- state=None
- i=1
+ expired = False
+ client = None
+ maxdate = None
+ state = None
+ i = 1
while i < len(args):
if args[i] == '-c' or args[i] == '--client':
if client:
self.errExit("Only one client per run")
- client = args[i+1]
- print client
+ client = args[i + 1]
+ print(client)
i = i + 1
elif args[i] == '--days':
if maxdate:
self.errExit("Max date specified multiple times")
try:
- maxdate = datetime.datetime.now() - datetime.timedelta(days=int(args[i+1]))
+ maxdate = datetime.datetime.now() - datetime.timedelta(days=int(args[i + 1]))
except:
- self.log.error("Invalid number of days: %s" % args[i+1])
- raise SystemExit, -1
+ self.log.error("Invalid number of days: %s" % args[i + 1])
+ raise SystemExit(-1)
i = i + 1
elif args[i] == '--expired':
- expired=True
+ expired = True
i = i + 1
if expired:
if state:
self.log.error("--state is not valid with --expired")
- raise SystemExit, -1
+ raise SystemExit(-1)
self.purge_expired(maxdate)
else:
self.purge(client, maxdate, state)
else:
- print "Unknown command: %s" % args[0]
+ print("Unknown command: %s" % args[0])
@transaction.commit_on_success
def scrub(self):
@@ -187,7 +189,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
self.log.error("Failed to load reason objects: %s" % e)
return
dup_reasons = []
-
+
cmp_reasons = dict()
batch_update = []
for reason in BatchFetch(Reason.objects):
@@ -196,7 +198,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
comparisons '''
id = reason.id
reason.id = None
- key=md5(pickle.dumps(reason)).hexdigest()
+ key = md5(pickle.dumps(reason)).hexdigest()
reason.id = id
if key in cmp_reasons:
@@ -207,7 +209,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
else:
cmp_reasons[key] = reason.id
self.log.debug("key %d" % reason.id)
-
+
self.log.debug("Done with updates, deleting dupes")
try:
cursor = connection.cursor()
@@ -248,7 +250,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
try:
statsdata = XML(open(stats_file).read())
except (IOError, XMLSyntaxError):
- self.errExit("StatReports: Failed to parse %s"%(stats_file))
+ self.errExit("StatReports: Failed to parse %s" % (stats_file))
if not clientspath:
try:
@@ -259,10 +261,15 @@ class Reports(Bcfg2.Server.Admin.Mode):
try:
clientsdata = XML(open(clientspath).read())
except (IOError, XMLSyntaxError):
- self.errExit("StatReports: Failed to parse %s"%(clientspath))
+ self.errExit("StatReports: Failed to parse %s" % (clientspath))
try:
- load_stats(clientsdata, statsdata, verb, self.log, quick=quick, location=platform.node())
+ load_stats(clientsdata,
+ statsdata,
+ verb,
+ self.log,
+ quick=quick,
+ location=platform.node())
except:
pass
@@ -270,7 +277,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
def purge(self, client=None, maxdate=None, state=None):
'''Purge historical data from the database'''
- filtered = False # indicates whether or not a client should be deleted
+ filtered = False # indicates whether or not a client should be deleted
if not client and not maxdate and not state:
self.errExit("Reports.prune: Refusing to prune all data")
@@ -282,13 +289,13 @@ class Reports(Bcfg2.Server.Admin.Mode):
ipurge = ipurge.filter(client=cobj)
except Client.DoesNotExist:
self.log.error("Client %s not in database" % client)
- raise SystemExit, -1
+ raise SystemExit(-1)
self.log.debug("Filtering by client: %s" % client)
if maxdate:
filtered = True
if not isinstance(maxdate, datetime.datetime):
- raise TypeError, "maxdate is not a DateTime object"
+ raise TypeError("maxdate is not a DateTime object")
self.log.debug("Filtering by maxdate: %s" % maxdate)
ipurge = ipurge.filter(timestamp__lt=maxdate)
@@ -300,9 +307,9 @@ class Reports(Bcfg2.Server.Admin.Mode):
if state:
filtered = True
- if state not in ('dirty','clean','modified'):
- raise TypeError, "state is not one of the following values " + \
- "('dirty','clean','modified')"
+ if state not in ('dirty', 'clean', 'modified'):
+ raise TypeError("state is not one of the following values " + \
+ "('dirty','clean','modified')")
self.log.debug("Filtering by state: %s" % state)
ipurge = ipurge.filter(state=state)
@@ -346,7 +353,7 @@ class Reports(Bcfg2.Server.Admin.Mode):
if maxdate:
if not isinstance(maxdate, datetime.datetime):
- raise TypeError, "maxdate is not a DateTime object"
+ raise TypeError("maxdate is not a DateTime object")
self.log.debug("Filtering by maxdate: %s" % maxdate)
clients = Client.objects.filter(expiration__lt=maxdate)
else:
@@ -358,4 +365,3 @@ class Reports(Bcfg2.Server.Admin.Mode):
client.delete()
self.log.debug("Pruning orphan Performance objects")
Performance.prune_orphans()
-