X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=policy.py;h=78232375ee593c21319dcaff10e11837bf90e757;hb=refs%2Fheads%2F1.0;hp=2afba4daaf238b7900f92e0d560f17e442b1558e;hpb=d0652340b89d51c6115edb13d5c7c72b34dea66f;p=monitor.git diff --git a/policy.py b/policy.py index 2afba4d..7823237 100644 --- a/policy.py +++ b/policy.py @@ -19,12 +19,10 @@ import plc import sys import os import reboot -import soltesz +import database import string -from www.printbadnodes import cmpCategoryVal -from config import config -#print "policy" -config = config() +from unified_model import cmpCategoryVal +import config DAT="./monitor.dat" @@ -87,28 +85,19 @@ def getdebug(): def print_stats(key, stats): if key in stats: print "%20s : %d" % (key, stats[key]) -def get_ticket_id(record): - if 'ticket_id' in record and record['ticket_id'] is not "" and record['ticket_id'] is not None: - return record['ticket_id'] - elif 'found_rt_ticket' in record and \ - record['found_rt_ticket'] is not "" and \ - record['found_rt_ticket'] is not None: - return record['found_rt_ticket'] - else: - return None class Merge(Thread): def __init__(self, l_merge, toRT): self.toRT = toRT self.merge_list = l_merge # the hostname to loginbase mapping - self.plcdb_hn2lb = soltesz.dbLoad("plcdb_hn2lb") + self.plcdb_hn2lb = database.dbLoad("plcdb_hn2lb") # Previous actions taken on nodes. - self.act_all = soltesz.if_cached_else(1, "act_all", lambda : {}) - self.findbad = soltesz.if_cached_else(1, "findbad", lambda : {}) + self.act_all = database.if_cached_else(1, "act_all", lambda : {}) + self.findbad = database.if_cached_else(1, "findbad", lambda : {}) - self.cache_all = soltesz.if_cached_else(1, "act_all", lambda : {}) + self.cache_all = database.if_cached_else(1, "act_all", lambda : {}) self.sickdb = {} self.mergedb = {} Thread.__init__(self) @@ -286,8 +275,8 @@ class Merge(Thread): class Diagnose(Thread): def __init__(self, fromRT): self.fromRT = fromRT - self.plcdb_hn2lb = soltesz.dbLoad("plcdb_hn2lb") - self.findbad = soltesz.if_cached_else(1, "findbad", lambda : {}) + self.plcdb_hn2lb = database.dbLoad("plcdb_hn2lb") + self.findbad = database.if_cached_else(1, "findbad", lambda : {}) self.diagnose_in = {} self.diagnose_out = {} @@ -306,6 +295,8 @@ class Diagnose(Thread): print "----------------" import traceback print traceback.print_exc() + from nodecommon import email_exception + email_exception() print err #if config.policysavedb: sys.exit(1) @@ -316,7 +307,7 @@ class Diagnose(Thread): if config.policysavedb: print "Saving Databases... diagnose_out" - soltesz.dbDump("diagnose_out", self.diagnose_out) + database.dbDump("diagnose_out", self.diagnose_out) def accumSickSites(self): """ @@ -929,17 +920,7 @@ class BackoffActions(SiteAction): # TODO: create class for each action below, # allow for lists of actions to be performed... -def close_rt_backoff(args): - if 'ticket_id' in args and (args['ticket_id'] != "" and args['ticket_id'] != None): - mailer.closeTicketViaRT(args['ticket_id'], - "Ticket CLOSED automatically by SiteAssist.") - plc.enableSlices(args['hostname']) - plc.enableSliceCreation(args['hostname']) - return -def reboot_node(args): - host = args['hostname'] - return reboot.reboot_policy(host, True, config.debug) def reset_nodemanager(args): os.system("ssh root@%s /sbin/service nm restart" % nodename) @@ -950,19 +931,19 @@ class Action(Thread): self.l_action = l_action # the hostname to loginbase mapping - self.plcdb_hn2lb = soltesz.dbLoad("plcdb_hn2lb") + self.plcdb_hn2lb = database.dbLoad("plcdb_hn2lb") # Actions to take. - self.diagnose_db = soltesz.if_cached_else(1, "diagnose_out", lambda : {}) + self.diagnose_db = database.if_cached_else(1, "diagnose_out", lambda : {}) # Actions taken. - self.act_all = soltesz.if_cached_else(1, "act_all", lambda : {}) + self.act_all = database.if_cached_else(1, "act_all", lambda : {}) # A dict of actions to specific functions. PICKLE doesnt' like lambdas. self.actions = {} self.actions['suspendslices'] = lambda args: plc.suspendSlices(args['hostname']) self.actions['nocreate'] = lambda args: plc.removeSliceCreation(args['hostname']) self.actions['close_rt'] = lambda args: close_rt_backoff(args) - self.actions['rins'] = lambda args: plc.nodeBootState(args['hostname'], "rins") + self.actions['rins'] = lambda args: plc.nodeBootState(args['hostname'], "reinstall") self.actions['noop'] = lambda args: args self.actions['reboot_node'] = lambda args: reboot_node(args) self.actions['reset_nodemanager'] = lambda args: args # reset_nodemanager(args) @@ -995,7 +976,7 @@ class Action(Thread): print err if config.policysavedb: print "Saving Databases... act_all" - soltesz.dbDump("act_all", self.act_all) + database.dbDump("act_all", self.act_all) sys.exit(1) print_stats("sites_observed", stats) @@ -1007,10 +988,10 @@ class Action(Thread): if config.policysavedb: print "Saving Databases... act_all" - #soltesz.dbDump("policy.eventlog", self.eventlog) + #database.dbDump("policy.eventlog", self.eventlog) # TODO: remove 'diagnose_out', # or at least the entries that were acted on. - soltesz.dbDump("act_all", self.act_all) + database.dbDump("act_all", self.act_all) def accumSites(self): """ @@ -1230,10 +1211,10 @@ class Action(Thread): if config.policysavedb: print "Saving Databases... act_all, diagnose_out" - soltesz.dbDump("act_all", self.act_all) + database.dbDump("act_all", self.act_all) # remove site record from diagnose_out, it's in act_all as done. del self.diagnose_db[loginbase] - soltesz.dbDump("diagnose_out", self.diagnose_db) + database.dbDump("diagnose_out", self.diagnose_db) print "sleeping for 1 sec" time.sleep(1) @@ -1267,7 +1248,7 @@ class Action(Thread): print "%s" % act_record['log'], print "%15s" % (['reboot_node'],) # Set node to re-install - plc.nodeBootState(act_record['nodename'], "rins") + plc.nodeBootState(act_record['nodename'], "reinstall") try: ret = reboot_node({'hostname': act_record['nodename']}) except Exception, exc: