clearer names for actions, and infer actions better
[monitor.git] / monitor / common.py
index 75f76e4..ae32156 100644 (file)
@@ -3,6 +3,7 @@ import time
 import struct
 from monitor import reboot
 from monitor import util
+from monitor import query
 from monitor.wrapper import plc
 
 from datetime import datetime, timedelta
@@ -42,12 +43,17 @@ def get_current_state(fbnode):
        return l
 
 def color_pcu_state(fbnode):
+       if fbnode['plc_pcuid'] is None:
+               return 'NOPCU'
+       else:
+               return 'PCU'
 
        if 'plcnode' in fbnode and 'pcu_ids' in fbnode['plcnode'] and len(fbnode['plcnode']['pcu_ids']) > 0 :
                values = reboot.get_pcu_values(fbnode['plcnode']['pcu_ids'][0])
                if values == None:
                        return fbnode['pcu']
        else:
+               print fbnode.keys()
                if 'pcu' not in fbnode:
                        return 'NOPCU'
                else:
@@ -201,16 +207,20 @@ def get_nodeset(config):
                l_nodes = api.GetNodes(ng[0]['node_ids'], ['hostname'])
        elif config.site:
                site = api.GetSites(config.site)
-               l_nodes = api.GetNodes(site[0]['node_ids'], ['hostname'])
+               if len(site) > 0:
+                       l_nodes = api.GetNodes(site[0]['node_ids'], ['hostname'])
+               else:
+                       print "No site returned for : %s" % config.site
+                       return []
                
        l_nodes = [node['hostname'] for node in l_nodes]
 
        # perform this query after the above options, so that the filter above
        # does not break.
        if config.nodeselect:
-               fbquery = FindbadNodeRecord.get_all_latest()
+               fbquery = HistoryNodeRecord.query.all()
                node_list = [ n.hostname for n in fbquery ]
-               l_nodes = node_select(config.nodeselect, node_list, None)
+               l_nodes = query.node_select(config.nodeselect, node_list, None)
 
        return l_nodes
 
@@ -239,6 +249,9 @@ def changed_lessthan(last_changed, days):
                return False
 
 def changed_greaterthan(last_changed, days):
+       if last_changed is None:
+               return False
+
        if datetime.now() - last_changed > timedelta(days):
                #print "last changed more than %s" % timedelta(days)
                return True
@@ -269,3 +282,14 @@ def found_within(recent_actions, action_type, within):
        print "%s NOT found_within %s in recent_actions" % (action_type, timedelta(within) )
        return False
        
+
+#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