add more info to sliceavg
[monitor.git] / statistics / sliceavg.py
1 #!/usr/bin/python
2
3 import os
4 import sys
5
6 from monitor.wrapper import plc
7
8 from monitor.database.info.model import *
9
10 api = plc.cacheapi
11 api.AuthCheck()
12
13 # for each site, find total number of assigned slivers
14 # find median, high, low, average
15
16 site_list = []
17
18 for site in api.GetSites({'peer_id': None}):
19         sl = api.GetSlices(site['slice_ids'])
20         sliver_cnt = 0
21         for slice in sl:
22                 sliver_cnt += len(slice['node_ids'])
23         val = (site['login_base'], sliver_cnt, site['max_slices'])
24         site_list.append(val)
25         #print val
26
27 site_list.sort(lambda x,y: cmp(y[1], x[1]))
28 totals = 0
29 use_count = 0
30 print "loginbase,status,sliver_count,max_slices"
31 for i in site_list:
32         if i[1] != 0: 
33                 h = HistorySiteRecord.get_by(loginbase=i[0])
34                 print "%10s,%s,%s,%s" % (i[0],h.status, i[1], i[2])
35                 use_count += 1
36         totals += i[1]
37
38 site_avg = totals/len(site_list)
39
40 #print "high: %s %s" % site_list[0]
41 #print "low: %s %s" % site_list[-1]
42 #print "median: %s %s" % site_list[len(site_list)/2]
43 #print "used median: %s %s" % site_list[use_count/2]
44 #print "all avg: %s" % site_avg
45 #print "used avg: %s" % (totals/use_count)
46 #print "totals: %s" % totals 
47 #print "use_count: %s" % use_count
48 #print "site_count: %s" % len(site_list)