X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=dak%2Fqueue_report.py;h=d3777a273971cd67e36314c907dee404779a5760;hb=b43634b6faf221ee10fc63116baead379f68f92f;hp=be4787219e9fde8a5963fa3fb665637c90a0fd86;hpb=54a1e63df2a81a8f5e6f3148d59afcfeaa7b3495;p=dak.git diff --git a/dak/queue_report.py b/dak/queue_report.py index be478721..d3777a27 100755 --- a/dak/queue_report.py +++ b/dak/queue_report.py @@ -37,10 +37,14 @@ from copy import copy import glob, os, stat, sys, time import apt_pkg +try: + import rrdtool +except ImportError: + pass from daklib import utils from daklib.queue import Upload -from daklib.dbconn import DBConn, has_new_comment, DBChange, get_uid_from_fingerprint +from daklib.dbconn import DBConn, has_new_comment, DBChange, DBSource, get_uid_from_fingerprint from daklib.textutils import fix_maintainer from daklib.dak_exceptions import * @@ -60,6 +64,7 @@ Prints a report of packages in queue directories (usually new and byhand). -s, --sort=key sort output according to key, see below. -a, --age=key if using sort by age, how should time be treated? If not given a default of hours will be used. + -r, --rrd=key Directory where rrd files to be updated are stored -d, --directories=key A comma seperated list of queues to be scanned Sorting Keys: ao=age, oldest first. an=age, newest first. @@ -172,6 +177,23 @@ def header():
%s | " % (source) print ""
for vers in version.split():
- print "%s " % (source, utils.html_escape(vers), utils.html_escape(vers)) + print "%s " % (source, utils.html_escape(vers), utils.html_escape(vers)) print " | "
print "%s | " % (arch) print ""
@@ -295,8 +324,41 @@ def table_row(source, version, arch, last_mod, maint, distribution, closes, fing
############################################################
-def process_changes_files(changes_files, type, log):
- session = DBConn().session()
+def update_graph_database(rrd_dir, type, n_source, n_binary):
+ if not rrd_dir:
+ return
+
+ rrd_file = os.path.join(rrd_dir, type.lower()+'.rrd')
+ update = [rrd_file, "N:%s:%s" % (n_source, n_binary)]
+
+ try:
+ rrdtool.update(*update)
+ except rrdtool.error:
+ create = [rrd_file]+"""
+--step
+300
+--start
+0
+DS:ds0:GAUGE:7200:0:1000
+DS:ds1:GAUGE:7200:0:1000
+RRA:AVERAGE:0.5:1:599
+RRA:AVERAGE:0.5:6:700
+RRA:AVERAGE:0.5:24:775
+RRA:AVERAGE:0.5:288:795
+RRA:MAX:0.5:1:600
+RRA:MAX:0.5:6:700
+RRA:MAX:0.5:24:775
+RRA:MAX:0.5:288:795
+""".strip().split("\n")
+ rrdtool.create(*create)
+ rrdtool.update(*update)
+ except NameError:
+ pass
+
+############################################################
+
+def process_changes_files(changes_files, type, log, rrd_dir):
+ #session = DBConn().session()
msg = ""
cache = {}
# Read in all the .changes files
@@ -342,6 +404,8 @@ def process_changes_files(changes_files, type, log):
per_source_items = per_source.items()
per_source_items.sort(sg_compare)
+ update_graph_database(rrd_dir, type, len(per_source_items), len(changes_files))
+
entries = []
max_source_len = 0
max_version_len = 0
@@ -538,6 +602,7 @@ def main():
('8','822',"Queue-Report::Options::822"),
('s',"sort","Queue-Report::Options::Sort", "HasArg"),
('a',"age","Queue-Report::Options::Age", "HasArg"),
+ ('r',"rrd","Queue-Report::Options::Rrd", "HasArg"),
('d',"directories","Queue-Report::Options::Directories", "HasArg")]
for i in [ "help" ]:
if not Cnf.has_key("Queue-Report::Options::%s" % (i)):
@@ -565,6 +630,13 @@ def main():
else:
directories = [ "byhand", "new" ]
+ if Cnf.has_key("Queue-Report::Options::Rrd"):
+ rrd_dir = Cnf["Queue-Report::Options::Rrd"]
+ elif Cnf.has_key("Dir::Rrd"):
+ rrd_dir = Cnf["Dir::Rrd"]
+ else:
+ rrd_dir = None
+
f = None
if Cnf.has_key("Queue-Report::Options::822"):
# Open the report file
@@ -572,11 +644,22 @@ def main():
for directory in directories:
changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::%s" % (directory)]))
- process_changes_files(changes_files, directory, f)
+ process_changes_files(changes_files, directory, f, rrd_dir)
if Cnf.has_key("Queue-Report::Options::822"):
f.close()
+ if Cnf.has_key("Queue-Report::Options::New"):
+ for dir in directories:
+ print """
+ |