-#
-
-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
-
-