Added commands for interacting with google's spreadsheets:
[monitor.git] / statistics / dump_subset.py
diff --git a/statistics/dump_subset.py b/statistics/dump_subset.py
new file mode 100755 (executable)
index 0000000..ccb1659
--- /dev/null
@@ -0,0 +1,111 @@
+#!/usr/bin/python
+
+import sys
+import os
+
+def recent(q, val, length):
+    return [val] + q[:length-1]
+
+def add(d, path, v):
+    if path not in d:
+        d[path] = []
+    d[path] = recent(d[path], v, 6)
+    #d[path].append(v)
+
+def stateof(l):
+    if len(set(l)) == 1:
+        return l[0]
+    else:
+        return "BOOT"
+
+def in_hard_state(l):
+    if len(set(l)) == 1:
+        return True
+    else:
+        return False
+
+def main():
+    from optparse import OptionParser
+    parser = OptionParser()
+    
+    parser.set_defaults(database="",
+                        sheet="",
+                        fields="date_checked,timestamp_unix,hostname,uptime,kernel_version,observed_status",
+                        values=None,
+                        valuelist=None,
+                        update=None,
+                        fieldpositions=None,
+                        showfieldpositions=False,
+                        create=False)
+    parser.add_option("", "--database", dest="database", help="")
+    parser.add_option("", "--create", dest="create", action="store_true", help="")
+    parser.add_option("", "--sheet",  dest="sheet", help="")
+    parser.add_option("", "--values", dest="values", help="")
+    parser.add_option("", "--valuelist", dest="valuelist", help="")
+    parser.add_option("", "--update", dest="update", help="")
+    parser.add_option("", "--fields", dest="fields", help="")
+    parser.add_option("", "--fieldpositions", dest="fieldpositions", help="")
+    parser.add_option("", "--showfieldpositions", dest="showfieldpositions", action="store_true", help="")
+    (config, args) = parser.parse_args()
+
+    if config.fields:
+        config.fields = config.fields.split(',')
+
+    if config.fieldpositions:
+        config.fieldpositions = [ int(x) for x in config.fieldpositions.split(',') ]
+
+    first = True
+    #for f in config.fields:
+    #    print "%s,"%f,
+    #print ""
+
+    while True:
+        line = sys.stdin.readline()
+        if not line:
+            break
+        line = line.strip()
+        # NOTE assumes ts are ordered.
+        #try:
+        if True:
+            fields = line.split(',')
+            if first:
+                headers = [ f for f in fields ]
+                #for i,f in enumerate(headers):
+                #    print i, headers[i]
+                first=False
+                if config.showfieldpositions:
+                    for f in config.fields:
+                        i = headers.index(f)
+                        print i,
+                    print ""
+
+
+        #except:
+        #    print >>sys.stderr, "EXCEPTION:", line
+        #    sys.exit(1)
+        #for i,f in enumerate(fields):
+            #print i, headers
+            #print i, f
+        #    print i, headers[i], f
+
+        for pos,f in enumerate(config.fields):
+
+            if config.fieldpositions:
+                i = config.fieldpositions[pos]
+            else:
+                try:
+                    i = headers.index(f)
+                except:
+                    print "could not find field: %s" % f
+                    sys.exit(1)
+
+            try:
+                v = fields[i]
+            except:
+                continue
+            
+            print "%s," % v,
+        print ""
+
+if __name__ == "__main__":
+    main()