move clean_policy.py into monitor package
authorStephen Soltesz <soltesz@cs.princeton.edu>
Tue, 25 Nov 2008 23:17:54 +0000 (23:17 +0000)
committerStephen Soltesz <soltesz@cs.princeton.edu>
Tue, 25 Nov 2008 23:17:54 +0000 (23:17 +0000)
move unified_model.py into monitor package
updated all files that import these modules

18 files changed:
bootman.py
grouprins.py
mailmonitor.py
model.py [deleted file]
monitor/database/zabbixapi/site.py
monitor/model.py [moved from unified_model.py with 87% similarity]
monitor/policy.py [moved from clean_policy.py with 99% similarity]
nodeaction.py
nodebad.py
nodecommon.py
nodehistory.py
nodeinfo.py
nodequery.py
pcubad.py
sitebad.py
siteinfo.py
tests/test.py
www/gadgets/sitemonitor.py

index e3125d1..981a911 100755 (executable)
@@ -20,7 +20,7 @@ from sets import Set
 import ssh.pxssh as pxssh
 import ssh.fdpexpect as fdpexpect
 import ssh.pexpect as pexpect
-from unified_model import *
+from monitor.model import *
 from emailTxt import mailtxt
 from nodeconfig import network_config_to_str
 import traceback
index 1eeb092..5ebe912 100755 (executable)
@@ -26,11 +26,10 @@ from optparse import OptionParser
 
 from nodecommon import *
 from nodequery import verify,query_to_dict,node_select
-from unified_model import *
+from monitor.model import *
 import os
 
 import time
-from model import *
 
 import bootman                 # debug nodes
 import mailmonitor     # down nodes without pcu
index 3257d63..8481966 100644 (file)
@@ -14,7 +14,7 @@ import sys
 import plc
 api = plc.getAuthAPI()
 
-from clean_policy import *
+from monitor.policy import *
 
 def reboot(hostname):
        print "CALLING: mailmonitor.reboot(%s)" % hostname
diff --git a/model.py b/model.py
deleted file mode 100644 (file)
index c8f6331..0000000
--- a/model.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-
-import time
-from datetime import datetime, timedelta
-import re
-
-class MonRecord(object):
-       def __init__(self, data):
-               self.keys = data.keys()
-               self.keys.sort()
-               self.__dict__.update(data)
-               return
-
-       def get(self):
-               ret= {}
-               for k in self.keys:
-                       ret[k] = self.__dict__[k]
-               return ret
-
-       def __repr__(self):
-               str = ""
-               str += self.host + "\n"
-               for k in self.keys:
-                       if "message" in k or "msg" in k:
-                               continue
-                       if 'time' in k:
-                               s_time=time.strftime("%Y/%m/%d %H:%M:%S", 
-                                                       time.gmtime(self.__dict__[k]))
-                               str += "\t'%s' : %s\n" % (k, s_time)
-                       else:
-                               str += "\t'%s' : %s\n" % (k, self.__dict__[k])
-               str += "\t--"
-               return str
-
-       def delField(self, field):
-               if field in self.__dict__:
-                       del self.__dict__[field]
-               
-               if field in self.keys:
-                       for i in range(0,len(self.keys)):
-                               if self.keys[i] == field:
-                                       del self.keys[i]
-                                       break
-
-class LogRoll:
-       def __init__(self, list=None):
-               self.list = list
-               if self.list == None:
-                       self.list = {}
-
-       def find(self, host, filter, timerange):
-               if host not in self.list:
-                       return None
-
-               host_log_list = self.list[host]
-               for log in host_log_list:
-                       for key in filter.keys():
-                               #print "searching key %s in log keys" % key
-                               if key in log.keys:
-                                       #print "%s in log.keys" % key
-                                       cmp = re.compile(filter[key])
-                                       res = cmp.search(log.__getattribute__(key))
-                                       if res != None:
-                                               #print "found match in log: %s  %s ~=~ %s" % (log, key, filter[key])
-                                               if log.time > time.time() - timerange:
-                                                       print "returning log b/c it occured within time."
-                                                       return log
-               return None
-               
-
-       def get(self, host):
-               if host in self.list:
-                       return self.list[host][0]
-               else:
-                       return None
-
-       def add(self, log):
-               if log.host not in self.list:
-                       self.list[log.host] = []
-
-               self.list[log.host].insert(0,log)
-
-class Log(MonRecord):
-       def __init__(self, host, data):
-               self.host = host
-               MonRecord.__init__(self, data)
-               return
-
-       def __repr__(self):
-               str = " "
-               str += self.host + " : { "
-               for k in self.keys:
-                       if "message" in k or "msg" in k:
-                               continue
-                       if 'time' in k:
-                               s_time=time.strftime("%Y/%m/%d %H:%M:%S", 
-                                                       time.gmtime(self.__dict__[k]))
-                               #str += " '%s' : %s, " % (k, s_time)
-                       elif 'action' in k:
-                               str += "'%s' : %s, " % (k, self.__dict__[k])
-               str += "}"
-               return str
-       
-
-class Diagnose(MonRecord):
-       def __init__(self, host):
-               self.host = host
-               MonRecord.__init__(self, data)
-               return
-
-
index 94f01e1..c6ac2df 100644 (file)
@@ -5,7 +5,7 @@ from os import getcwd
 from os.path import dirname, exists, join\r
 import sys\r
 \r
-from model import *\r
+from monitor.model import *\r
 from emailZabbix import *\r
 from monitor import config\r
 \r
similarity index 87%
rename from unified_model.py
rename to monitor/model.py
index 891bab0..ce941f2 100755 (executable)
@@ -6,11 +6,14 @@ from monitor.wrapper import plc, plccache
 from monitor.wrapper import mailer
 import time
 
-from model import *
 from monitor.const import *
 from monitor import util
 from monitor import config
 
+import time
+from datetime import datetime, timedelta
+import re
+
 def gethostlist(hostlist_file):
        return util.file.getListFromFile(hostlist_file)
 
@@ -644,6 +647,112 @@ def node_end_record(node):
        del act_all
        return True
 
+class MonRecord(object):
+       def __init__(self, data):
+               self.keys = data.keys()
+               self.keys.sort()
+               self.__dict__.update(data)
+               return
+
+       def get(self):
+               ret= {}
+               for k in self.keys:
+                       ret[k] = self.__dict__[k]
+               return ret
+
+       def __repr__(self):
+               str = ""
+               str += self.host + "\n"
+               for k in self.keys:
+                       if "message" in k or "msg" in k:
+                               continue
+                       if 'time' in k:
+                               s_time=time.strftime("%Y/%m/%d %H:%M:%S", 
+                                                       time.gmtime(self.__dict__[k]))
+                               str += "\t'%s' : %s\n" % (k, s_time)
+                       else:
+                               str += "\t'%s' : %s\n" % (k, self.__dict__[k])
+               str += "\t--"
+               return str
+
+       def delField(self, field):
+               if field in self.__dict__:
+                       del self.__dict__[field]
+               
+               if field in self.keys:
+                       for i in range(0,len(self.keys)):
+                               if self.keys[i] == field:
+                                       del self.keys[i]
+                                       break
+
+class LogRoll:
+       def __init__(self, list=None):
+               self.list = list
+               if self.list == None:
+                       self.list = {}
+
+       def find(self, host, filter, timerange):
+               if host not in self.list:
+                       return None
+
+               host_log_list = self.list[host]
+               for log in host_log_list:
+                       for key in filter.keys():
+                               #print "searching key %s in log keys" % key
+                               if key in log.keys:
+                                       #print "%s in log.keys" % key
+                                       cmp = re.compile(filter[key])
+                                       res = cmp.search(log.__getattribute__(key))
+                                       if res != None:
+                                               #print "found match in log: %s  %s ~=~ %s" % (log, key, filter[key])
+                                               if log.time > time.time() - timerange:
+                                                       print "returning log b/c it occured within time."
+                                                       return log
+               return None
+               
+
+       def get(self, host):
+               if host in self.list:
+                       return self.list[host][0]
+               else:
+                       return None
+
+       def add(self, log):
+               if log.host not in self.list:
+                       self.list[log.host] = []
+
+               self.list[log.host].insert(0,log)
+
+class Log(MonRecord):
+       def __init__(self, host, data):
+               self.host = host
+               MonRecord.__init__(self, data)
+               return
+
+       def __repr__(self):
+               str = " "
+               str += self.host + " : { "
+               for k in self.keys:
+                       if "message" in k or "msg" in k:
+                               continue
+                       if 'time' in k:
+                               s_time=time.strftime("%Y/%m/%d %H:%M:%S", 
+                                                       time.gmtime(self.__dict__[k]))
+                               #str += " '%s' : %s, " % (k, s_time)
+                       elif 'action' in k:
+                               str += "'%s' : %s, " % (k, self.__dict__[k])
+               str += "}"
+               return str
+       
+
+class Diagnose(MonRecord):
+       def __init__(self, host):
+               self.host = host
+               MonRecord.__init__(self, data)
+               return
+
+
+
 if __name__ == "__main__":
        #r = RT()
        #r.email("test", "body of test message", ['database@cs.princeton.edu'])
similarity index 99%
rename from clean_policy.py
rename to monitor/policy.py
index 3ae3811..cc61fee 100644 (file)
@@ -19,7 +19,7 @@ SUMTO = "soltesz@cs.princeton.edu"
 
 from const import *
 
-from unified_model import *
+from monitor.model import *
 
 class MonitorMergeDiagnoseSendEscellate:
        act_all = None
index cff7f6a..a5bd3ea 100755 (executable)
@@ -6,7 +6,7 @@ api = plc.getAuthAPI()
 import reboot
 
 import time
-from model import *
+from monitor.model import *
 
 import parser as parsermodule
 
index 185c385..5543f90 100755 (executable)
@@ -15,7 +15,7 @@ from monitor.wrapper import plc,plccache
 from monitor.const import MINUP
 from monitor.database import  FindbadNodeRecord, HistoryNodeRecord
 
-from unified_model import *
+from monitor.model import *
 
 api = plc.getAuthAPI()
 
index 8e3d5a0..9551a4a 100644 (file)
@@ -8,7 +8,7 @@ from monitor import database
 from monitor.wrapper import plc, plccache
 
 from datetime import datetime 
-from unified_model import PersistFlags
+from monitor.model import PersistFlags
 
 esc = struct.pack('i', 27)
 RED    = esc + "[1;31m"
index e554e0a..7ea30fb 100755 (executable)
@@ -11,7 +11,7 @@ import calendar
 
 import sys
 import time
-from model import *
+from monitor.model import *
 from nodecommon import *
 
 def get_filefromglob(d, str):
index 9968b4b..3c8e4e5 100755 (executable)
@@ -11,9 +11,9 @@ from monitor import database
 from monitor.pcu import reboot
 
 import time
-from model import *
+from monitor.model import *
 from nodecommon import *
-from unified_model import node_end_record, PersistFlags
+#from monitor.model import node_end_record, PersistFlags
 
 parser = parsermodule.getParser()
 parser.set_defaults(node=None, 
index ff78b58..4378e2c 100755 (executable)
@@ -4,7 +4,7 @@
 import sys
 from monitor import database
 from nodecommon import *
-from unified_model import Record
+from monitor.model import Record
 import glob
 import os
 import traceback
index 6a1098b..e13accc 100755 (executable)
--- a/pcubad.py
+++ b/pcubad.py
@@ -16,7 +16,7 @@ from monitor.const import MINUP
 
 from nodecommon import *
 from nodequery import verify,query_to_dict,node_select
-from unified_model import *
+from monitor.model import *
 
 api = plc.getAuthAPI()
 
index aff0444..2c1628a 100755 (executable)
@@ -16,7 +16,7 @@ from monitor.const import MINUP
 
 from nodecommon import *
 from nodequery import verify,query_to_dict,node_select
-from unified_model import *
+from monitor.model import *
 
 api = plc.getAuthAPI()
 
index 041bf1c..609cde2 100755 (executable)
@@ -7,12 +7,11 @@ from monitor import database
 from monitor.pcu import reboot
 
 import time
-from model import *
 from nodecommon import *
 
 from monitor import util
 from monitor import parser as parsermodule
-from unified_model import *
+from monitor.model import *
 
 
 parser = parsermodule.getParser()
index 3a83545..8cc690b 100644 (file)
@@ -3,7 +3,7 @@
 from monitor import database
 import os
 import time
-from unified_model import *
+from monitor.model import *
 
 today = time.time()
 four_days_ago = today - 60*60*24*4
index a52fec5..c52b36b 100755 (executable)
@@ -6,7 +6,7 @@ cgitb.enable()
 print "Content-Type: text/html\r\n"
 
 import time
-from unified_model import *
+from monitor.model import *
 from monitor import database
 from HyperText.HTML import A, BR, IMG, TABLE, TR, TH, TD, EM, quote_body, CENTER
 from HyperText.Documents import Document