Don't enable the "Pending Sites". PLE is using 'enabled' key to mark the pending...
[monitor.git] / monitor / common.py
index d082dbb..05a4ec2 100644 (file)
@@ -3,8 +3,8 @@ import time
 import struct
 from monitor import reboot
 from monitor import util
 import struct
 from monitor import reboot
 from monitor import util
-from monitor import database
-from monitor.wrapper import plc, plccache
+from monitor import query
+from monitor.wrapper import plc
 
 from datetime import datetime, timedelta
 from monitor.model import Message
 
 from datetime import datetime, timedelta
 from monitor.model import Message
@@ -58,26 +58,26 @@ def color_pcu_state(fbnode):
                rb = values['reboot']
                if rb == 0 or rb == "0":
                        return fbnode['pcu'] + "OK  "
                rb = values['reboot']
                if rb == 0 or rb == "0":
                        return fbnode['pcu'] + "OK  "
-                       #return fbnode['pcu'] + "OK  "
-                       #return green(fbnode['pcu'])
                elif "NetDown" == rb  or "Not_Run" == rb:
                        return fbnode['pcu'] + "DOWN"
                elif "NetDown" == rb  or "Not_Run" == rb:
                        return fbnode['pcu'] + "DOWN"
-                       #return yellow(fbnode['pcu'])
                else:
                        return fbnode['pcu'] + "BAD "
                else:
                        return fbnode['pcu'] + "BAD "
-                       #return red(fbnode['pcu'])
        else:
        else:
-               #return red(fbnode['pcu'])
                return fbnode['pcu'] + "BAD "
 
 def color_boot_state(l):
        if    l == "dbg": return yellow("debg")
        elif  l == "dbg ": return yellow("debg")
                return fbnode['pcu'] + "BAD "
 
 def color_boot_state(l):
        if    l == "dbg": return yellow("debg")
        elif  l == "dbg ": return yellow("debg")
+       elif  l == "failboot": return yellow("debg")
        elif  l == "diag": return lightblue(l)
        elif  l == "diag": return lightblue(l)
+       elif  l == "diagnose": return lightblue(l)
+       elif  l == "safeboot": return lightblue(l)
        elif  l == "disable": return red("dsbl")
        elif  l == "disable": return red("dsbl")
+       elif  l == "disabled": return red("dsbl")
        elif  l == "down": return red(l)
        elif  l == "boot": return green(l)
        elif  l == "rins": return blue(l)
        elif  l == "down": return red(l)
        elif  l == "boot": return green(l)
        elif  l == "rins": return blue(l)
+       elif  l == "reinstall": return blue(l)
        else:
                return l
 
        else:
                return l
 
@@ -187,6 +187,7 @@ def get_nodeset(config):
                Given the config values passed in, return the set of hostnames that it
                evaluates to.
        """
                Given the config values passed in, return the set of hostnames that it
                evaluates to.
        """
+       from monitor.wrapper import plccache
        api = plc.getAuthAPI()
        l_nodes = plccache.l_nodes
 
        api = plc.getAuthAPI()
        l_nodes = plccache.l_nodes
 
@@ -208,21 +209,26 @@ def get_nodeset(config):
        # perform this query after the above options, so that the filter above
        # does not break.
        if config.nodeselect:
        # 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 ]
                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
 
 
        return l_nodes
 
-def email_exception(content=None):
+def email_exception(content=None, title=None):
     import config
     from monitor.model import Message
     import traceback
     msg=traceback.format_exc()
     if content:
         msg = content + "\n" + msg
     import config
     from monitor.model import Message
     import traceback
     msg=traceback.format_exc()
     if content:
         msg = content + "\n" + msg
-    m=Message("exception running monitor", msg, False)
-    m.send([config.cc_email])
+
+    full_title = "exception running monitor"
+    if title:
+        full_title = "exception running monitor %s" % title
+
+    m=Message(full_title, msg, False)
+    m.send([config.exception_email])
     return
 
 def changed_lessthan(last_changed, days):
     return
 
 def changed_lessthan(last_changed, days):
@@ -234,6 +240,9 @@ def changed_lessthan(last_changed, days):
                return False
 
 def changed_greaterthan(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
        if datetime.now() - last_changed > timedelta(days):
                #print "last changed more than %s" % timedelta(days)
                return True