add scrappy statistics gathering scripts
[monitor.git] / statistics / monitorstats.py
diff --git a/statistics/monitorstats.py b/statistics/monitorstats.py
new file mode 100644 (file)
index 0000000..8fc24d5
--- /dev/null
@@ -0,0 +1,80 @@
+
+from monitor import database
+from datetime import datetime, timedelta
+import os
+import glob
+import time
+
+from monitor import config
+
+def datetime_fromstr(str):
+       if '-' in str:
+               try:
+                       tup = time.strptime(str, "%Y-%m-%d")
+               except:
+                       tup = time.strptime(str, "%Y-%m-%d-%H:%M")
+       elif '/' in str:
+               tup = time.strptime(str, "%m/%d/%Y")
+       else:
+               tup = time.strptime(str, "%m/%d/%Y")
+       ret = datetime.fromtimestamp(time.mktime(tup))
+       return ret
+
+def get_filefromglob(d, str, path="archive-pdb", returnlist=False):
+       # TODO: This is aweful.
+       startpath = os.getcwd()
+       os.chdir(config.MONITOR_SCRIPT_ROOT + "/" + path)
+
+       #archive = database.SPickle(path)
+       glob_str = "%s*.%s.pkl" % (d.strftime("%Y-%m-%d"), str)
+       fg_list = [ x[:-4] for x in glob.glob(glob_str) ]
+
+       os.chdir(startpath)
+
+       if returnlist:
+               return sorted(fg_list)
+       else:
+               return fg_list[0]
+
+def get_archive(path):
+       full_path = config.MONITOR_SCRIPT_ROOT + "/" + path
+       return database.SPickle(full_path)
+       
+def print_graph(data, begin, end, xaxis, offset=500, window=100):
+       s1=[]
+       s2=[]
+       s3=[]
+       for row in data:
+               s1.append(row[0])
+               s2.append(row[1])
+               s3.append(row[2])
+       
+       delta=offset
+       s1 = map(lambda x: x-delta, s1)
+       rlow= zip(s1,s3)
+       rhigh = zip(s1,s2)
+       diff_low  = map(lambda x: x[0]-x[1], rlow)
+       diff_high = map(lambda x: x[0]+x[1], rhigh)
+       s1 = map(lambda x: str(x), s1)
+       diff_low = map(lambda x: str(x), diff_low)
+       diff_high = map(lambda x: str(x), diff_high)
+       print s1
+       print diff_low
+       print diff_high
+       print "http://chart.apis.google.com/chart?cht=lc&chds=0,100&chxt=x,y&chxl=0:%s1:|500|550|600&chs=700x200&chm=F,aaaaaa,1,-1,2&chd=t1:%s" % (xaxis, ",".join(s1) + "|" + ",".join(diff_low) + "|" + ",".join(s1) + "|" + ",".join(s1) +"|" + ",".join(diff_high) )
+
+def get_xaxis(list, width=16, wide=False):
+       # 3 for odd
+       # 4 for even
+       # 5 for wide odd
+       # 6 for wide even
+       list_len = len(list)
+       if list_len == 0: return "||"
+
+       is_even = list_len % 2 == 0
+       #if is_even:
+       #       xaxis = "|" + list[0][:width] + "|" + list[-1][:width] + "|"
+       #else:
+       xaxis = "|" + list[0][:width] + "|" + list[list_len/2 + 1][:width] + "|" + list[-1][:width] + "|"
+       return xaxis
+