clearer names for actions, and infer actions better
[monitor.git] / statistics / dump_subset.py
1 #!/usr/bin/python
2
3 import sys
4 import os
5
6 def recent(q, val, length):
7     return [val] + q[:length-1]
8
9 def add(d, path, v):
10     if path not in d:
11         d[path] = []
12     d[path] = recent(d[path], v, 6)
13     #d[path].append(v)
14
15 def stateof(l):
16     if len(set(l)) == 1:
17         return l[0]
18     else:
19         return "BOOT"
20
21 def in_hard_state(l):
22     if len(set(l)) == 1:
23         return True
24     else:
25         return False
26
27 def main():
28     from optparse import OptionParser
29     parser = OptionParser()
30     
31     parser.set_defaults(database="",
32                         sheet="",
33                         fields="date_checked,timestamp_unix,hostname,uptime,kernel_version,observed_status",
34                         values=None,
35                         valuelist=None,
36                         update=None,
37                         fieldpositions=None,
38                         showfieldpositions=False,
39                         create=False)
40     parser.add_option("", "--database", dest="database", help="")
41     parser.add_option("", "--create", dest="create", action="store_true", help="")
42     parser.add_option("", "--sheet",  dest="sheet", help="")
43     parser.add_option("", "--values", dest="values", help="")
44     parser.add_option("", "--valuelist", dest="valuelist", help="")
45     parser.add_option("", "--update", dest="update", help="")
46     parser.add_option("", "--fields", dest="fields", help="")
47     parser.add_option("", "--fieldpositions", dest="fieldpositions", help="")
48     parser.add_option("", "--showfieldpositions", dest="showfieldpositions", action="store_true", help="")
49     (config, args) = parser.parse_args()
50
51     if config.fields:
52         config.fields = config.fields.split(',')
53
54     if config.fieldpositions:
55         config.fieldpositions = [ int(x) for x in config.fieldpositions.split(',') ]
56
57     first = True
58     #for f in config.fields:
59     #    print "%s,"%f,
60     #print ""
61
62     while True:
63         line = sys.stdin.readline()
64         if not line:
65             break
66         line = line.strip()
67         # NOTE assumes ts are ordered.
68         #try:
69         if True:
70             fields = line.split(',')
71             if first:
72                 headers = [ f for f in fields ]
73                 #for i,f in enumerate(headers):
74                 #    print i, headers[i]
75                 first=False
76                 if config.showfieldpositions:
77                     for f in config.fields:
78                         i = headers.index(f)
79                         print i,
80                     print ""
81
82
83         #except:
84         #    print >>sys.stderr, "EXCEPTION:", line
85         #    sys.exit(1)
86         #for i,f in enumerate(fields):
87             #print i, headers
88             #print i, f
89         #    print i, headers[i], f
90
91         for pos,f in enumerate(config.fields):
92
93             if config.fieldpositions:
94                 i = config.fieldpositions[pos]
95             else:
96                 try:
97                     i = headers.index(f)
98                 except:
99                     print "could not find field: %s" % f
100                     sys.exit(1)
101
102             try:
103                 v = fields[i]
104             except:
105                 continue
106             
107             print "%s," % v,
108         print ""
109
110 if __name__ == "__main__":
111     main()