3 # Collect statistics from myops db on node downtimes.
4 # For every site that goes down we need:
6 from monitor.database.info.model import *
10 def find_next(history_list, from_index, status):
11 list_len = len(history_list)
12 #for i in range(min(list_len-1, from_index), 0, -1):
13 for i in range(max(0, from_index), list_len, 1):
15 if status in v.action_type:
20 def diff_time(t1, t2):
22 return d.days*60*60*24 + d.seconds
26 for index,site in enumerate(HistorySiteRecord.query.all()):
28 acts = ActionRecord.query.filter_by(loginbase=site.loginbase).order_by(ActionRecord.date_created.asc()).all()
30 print site.loginbase, act_len
33 # print a.date_created, a.loginbase, a.action_type
37 i = find_next(acts, i, 'notice')
38 i2= find_next(acts, i, 'pause_penalty')
40 if i == act_len or i2 == act_len:
45 print a1.date_created, a1.loginbase, a1.action_type
47 print a2.date_created, a2.loginbase, a2.action_type
54 if diff_time(p[1].date_created,p[0].date_created) < 0:
57 times.append(diff_time(p[1].date_created,p[0].date_created))
62 for i in range(0,200,1):
76 print k, len(bins[k]), total