3 from monitor.database.info.model import *
6 from monitor.generic import *
7 from datetime import datetime, timedelta
11 def list_to_str(list):
14 if type(l) == type([]):
15 ret.append(" ".join([str(i) for i in l]))
18 s = s.translate(string.maketrans(",\n\r\"", ";||'"))
22 def add_if_not_present(d, add_fields=None):
23 if type(d) == type({}):
25 for k in add_fields.keys():
29 add_if_not_present(d[k], add_fields[k])
32 def dict_to_list(d, add_fields=None, ignore_fields=None):
33 """ return a list of header names from a nested dict
34 { 'a' : 1, 'b' : { 'c':2, 'd' : 3}}
40 if add_fields: add_if_not_present(d, add_fields)
42 if type(d[k]) == type({}):
43 (z_kl, z_dl) = dict_to_list(d[k])
44 for i,zk in enumerate(map(lambda x: "%s_%s" % (k,x), z_kl)):
45 if ignore_fields is None or zk not in ignore_fields:
47 d_list.append(z_dl[i])
49 if ignore_fields is None or k not in ignore_fields:
52 r = zip(k_list, list_to_str(d_list))
53 r.sort(lambda x,y: cmp(x[0], y[0]))
54 return ([ i[0] for i in r ], [ i[1] for i in r ])
57 if len(sys.argv) > 1 and sys.argv[1] == "--action":
62 since_time = Time.str_to_dt(sys.argv[1], "%Y-%m-%d")
63 skip = int(sys.argv[2])
74 a = ActionRecord.query.all()
75 print >>sys.stderr, len(a)
78 print >>sys.stderr, index, node.hostname, t2-t1
83 (k,l) = dict_to_list(d)
85 print "timestamp_unix,%s" % ",".join(k[1:])
88 print "%s,%s" % (Time.dt_to_ts(d['date_created']), ",".join(l[1:]))
92 ignore_fields = ['plc_node_stats_nodenetwork_ids', 'port_status_806', 'port_status_22', 'port_status_80' ]
93 add_fields = {'plc_node_stats' : { 'last_boot' : 0, 'last_pcu_confirmation' : 0, 'last_pcu_reboot' : 0, 'last_download' : 0, 'run_level': 0, }}
94 for node in FindbadNodeRecord.query.all():
96 print >>sys.stderr, index, node.hostname, t2-t1
100 for v in node.versions:
103 (k,l) = dict_to_list(d, add_fields=add_fields, ignore_fields=ignore_fields)
105 if cmp(k, k_last) != 0:
106 print >>sys.stderr, "mismatching key lists"
107 print >>sys.stderr, k
108 print >>sys.stderr, k_last
109 for i in zip(k,k_last):
110 print >>sys.stderr, i
111 print >>sys.stderr, set(k) - set(k_last)
112 print >>sys.stderr, set(k_last) - set(k)
116 if d['timestamp'] > since_time:
118 print "timestamp_unix,%s" % ",".join(k[1:])
122 print "%s,%s" % (Time.dt_to_ts(d['timestamp']), ",".join(l[1:]))