X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=unified_model.py;h=acc89d8a09dc90d69c6a30f03b172806eec0be93;hb=944d143a6528c4157b71f51ed480aec806cbaa06;hp=01c99a2032a662467832c651bd2ce1b7f099cf53;hpb=c51ad794e8dc07072d705b508e79ba06849aa408;p=monitor.git diff --git a/unified_model.py b/unified_model.py index 01c99a2..acc89d8 100755 --- a/unified_model.py +++ b/unified_model.py @@ -1,19 +1,20 @@ #!/usr/bin/python -import database +from monitor import database import plc api = plc.getAuthAPI() import mailer import time -from nodecommon import * +from model import * from const import * +import util.file +import config def gethostlist(hostlist_file): - import config - return config.getListFromFile(hostlist_file) + return util.file.getListFromFile(hostlist_file) #nodes = api.GetNodes({'peer_id' : None}, ['hostname']) #return [ n['hostname'] for n in nodes ] @@ -69,7 +70,7 @@ class PenaltyMap: # condition/penalty is applied, move to the next phase. -fb = database.dbLoad("findbad") +#fb = database.dbLoad("findbad") class RT(object): def __init__(self, ticket_id = None): @@ -532,10 +533,6 @@ class Record(object): return message def getContacts(self): - from config import config - #print "policy" - config = config() - roles = self.data['email'] if not config.mail and not config.debug and config.bcc: @@ -568,10 +565,10 @@ class NodeRecord: self.hostname = hostname self.ticket = None self.target = target - if hostname in fb['nodes']: - self.data = fb['nodes'][hostname]['values'] - else: - raise Exception("Hostname not in scan database") + #if hostname in fb['nodes']: + # self.data = fb['nodes'][hostname]['values'] + #else: + # raise Exception("Hostname not in scan database") def stageIswaitforever(self): if 'waitforever' in self.data['stage']: @@ -641,6 +638,43 @@ class NodeRecord: def _get_contacts_for_condition(self): pass +class Action(MonRecord): + def __init__(self, host, data): + self.host = host + MonRecord.__init__(self, data) + return + + def deltaDays(self, delta): + t = datetime.fromtimestamp(self.__dict__['time']) + d = t + timedelta(delta) + self.__dict__['time'] = time.mktime(d.timetuple()) + +def node_end_record(node): + act_all = database.dbLoad("act_all") + if node not in act_all: + del act_all + return False + + if len(act_all[node]) == 0: + del act_all + return False + + a = Action(node, act_all[node][0]) + a.delField('rt') + a.delField('found_rt_ticket') + a.delField('second-mail-at-oneweek') + a.delField('second-mail-at-twoweeks') + a.delField('first-found') + rec = a.get() + rec['action'] = ["close_rt"] + rec['category'] = "UNKNOWN" + rec['stage'] = "monitor-end-record" + rec['time'] = time.time() - 7*60*60*24 + act_all[node].insert(0,rec) + database.dbDump("act_all", act_all) + del act_all + return True + if __name__ == "__main__": #r = RT() #r.email("test", "body of test message", ['database@cs.princeton.edu'])