clearer names for actions, and infer actions better
[monitor.git] / monitor / generic.py
index 50488e9..c1680d2 100644 (file)
@@ -1,4 +1,5 @@
 import sys
+from datetime import datetime, timedelta
 
 def d_from_l(l, key, using=None, key_as=str, using_as=None):
        d = {}
@@ -37,6 +38,7 @@ def dsn_from_dsln(d_sites, id2lb, l_nodes):
        lb2hn = {}
        dsn = {}
        hn2lb = {}
+       exclude = []
        for id in id2lb:
                if id2lb[id] not in lb2hn:
                        lb2hn[id2lb[id]] = []
@@ -47,6 +49,7 @@ def dsn_from_dsln(d_sites, id2lb, l_nodes):
                        login_base = id2lb[node['site_id']]
                else:
                        print >>sys.stderr, "%s has a foreign site_id %s" % (node['hostname'], node['site_id'])
+                       exclude.append(node['hostname'])
                        continue
                        for i in id2lb:
                                print i, " ", id2lb[i]
@@ -65,4 +68,26 @@ def dsn_from_dsln(d_sites, id2lb, l_nodes):
                dsn[login_base][hostname]['monitor'] = {}
 
                hn2lb[hostname] = login_base
-       return (dsn, hn2lb, lb2hn)
+       return (dsn, hn2lb, lb2hn, exclude)
+
+
+class Time:
+    @classmethod
+    def dt_to_ts(cls, dt):
+        t = time.mktime(dt.timetuple())
+        return t
+
+    @classmethod
+    def ts_to_dt(cls, ts):
+        d = datetime.fromtimestamp(ts)
+        return d
+
+    @classmethod
+    def str_to_dt(cls, date_str, format="%Y-%m-%d %H:%M:%S"):
+        dt = datetime.strptime(date_str[:date_str.find('.')], format)
+        return dt
+
+    @classmethod
+    def str_to_ts(cls, date_str, format="%Y-%m-%d %H:%M:%S"):
+        ts = time.mktime(time.strptime(date_str[:date_str.find('.')], format))
+        return ts