From da913fbd1629fc4669b186915df8ff3a340482d3 Mon Sep 17 00:00:00 2001 From: Stephen Soltesz Date: Tue, 25 Nov 2008 23:17:54 +0000 Subject: [PATCH] move clean_policy.py into monitor package move unified_model.py into monitor package updated all files that import these modules --- bootman.py | 2 +- grouprins.py | 3 +- mailmonitor.py | 2 +- model.py | 111 --------------------------- monitor/database/zabbixapi/site.py | 2 +- unified_model.py => monitor/model.py | 111 ++++++++++++++++++++++++++- clean_policy.py => monitor/policy.py | 2 +- nodeaction.py | 2 +- nodebad.py | 2 +- nodecommon.py | 2 +- nodehistory.py | 2 +- nodeinfo.py | 4 +- nodequery.py | 2 +- pcubad.py | 2 +- sitebad.py | 2 +- siteinfo.py | 3 +- tests/test.py | 2 +- www/gadgets/sitemonitor.py | 2 +- 18 files changed, 127 insertions(+), 131 deletions(-) delete mode 100644 model.py rename unified_model.py => monitor/model.py (87%) rename clean_policy.py => monitor/policy.py (99%) diff --git a/bootman.py b/bootman.py index e3125d1..981a911 100755 --- a/bootman.py +++ b/bootman.py @@ -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 diff --git a/grouprins.py b/grouprins.py index 1eeb092..5ebe912 100755 --- a/grouprins.py +++ b/grouprins.py @@ -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 diff --git a/mailmonitor.py b/mailmonitor.py index 3257d63..8481966 100644 --- a/mailmonitor.py +++ b/mailmonitor.py @@ -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 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 - - diff --git a/monitor/database/zabbixapi/site.py b/monitor/database/zabbixapi/site.py index 94f01e1..c6ac2df 100644 --- a/monitor/database/zabbixapi/site.py +++ b/monitor/database/zabbixapi/site.py @@ -5,7 +5,7 @@ from os import getcwd from os.path import dirname, exists, join import sys -from model import * +from monitor.model import * from emailZabbix import * from monitor import config diff --git a/unified_model.py b/monitor/model.py similarity index 87% rename from unified_model.py rename to monitor/model.py index 891bab0..ce941f2 100755 --- a/unified_model.py +++ b/monitor/model.py @@ -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']) diff --git a/clean_policy.py b/monitor/policy.py similarity index 99% rename from clean_policy.py rename to monitor/policy.py index 3ae3811..cc61fee 100644 --- a/clean_policy.py +++ b/monitor/policy.py @@ -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 diff --git a/nodeaction.py b/nodeaction.py index cff7f6a..a5bd3ea 100755 --- a/nodeaction.py +++ b/nodeaction.py @@ -6,7 +6,7 @@ api = plc.getAuthAPI() import reboot import time -from model import * +from monitor.model import * import parser as parsermodule diff --git a/nodebad.py b/nodebad.py index 185c385..5543f90 100755 --- a/nodebad.py +++ b/nodebad.py @@ -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() diff --git a/nodecommon.py b/nodecommon.py index 8e3d5a0..9551a4a 100644 --- a/nodecommon.py +++ b/nodecommon.py @@ -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" diff --git a/nodehistory.py b/nodehistory.py index e554e0a..7ea30fb 100755 --- a/nodehistory.py +++ b/nodehistory.py @@ -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): diff --git a/nodeinfo.py b/nodeinfo.py index 9968b4b..3c8e4e5 100755 --- a/nodeinfo.py +++ b/nodeinfo.py @@ -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, diff --git a/nodequery.py b/nodequery.py index ff78b58..4378e2c 100755 --- a/nodequery.py +++ b/nodequery.py @@ -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 diff --git a/pcubad.py b/pcubad.py index 6a1098b..e13accc 100755 --- 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() diff --git a/sitebad.py b/sitebad.py index aff0444..2c1628a 100755 --- a/sitebad.py +++ b/sitebad.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() diff --git a/siteinfo.py b/siteinfo.py index 041bf1c..609cde2 100755 --- a/siteinfo.py +++ b/siteinfo.py @@ -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() diff --git a/tests/test.py b/tests/test.py index 3a83545..8cc690b 100644 --- a/tests/test.py +++ b/tests/test.py @@ -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 diff --git a/www/gadgets/sitemonitor.py b/www/gadgets/sitemonitor.py index a52fec5..c52b36b 100755 --- a/www/gadgets/sitemonitor.py +++ b/www/gadgets/sitemonitor.py @@ -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 -- 2.43.0