X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=policy.py;h=cdd311c043fd2547c465b7ff10577a419f78ff74;hb=7a24f44418bc4ecdf81f042e6bb640d04dba4479;hp=cb5d93f31d52c3700296fa95b09cc751aa47c563;hpb=57fc3f2c580971f7a31c708764557d6273b83216;p=monitor.git diff --git a/policy.py b/policy.py index cb5d93f..cdd311c 100755 --- a/policy.py +++ b/policy.py @@ -27,7 +27,7 @@ from monitor.wrapper import plccache from monitor.database.info.model import * from monitor.database.info.interface import * -from nodequery import verify,query_to_dict,node_select +from monitor.query import verify,query_to_dict,node_select api = plc.getAuthAPI() @@ -110,9 +110,11 @@ def main(hostnames, sitenames): if fbpcu: args['pcu_name'] = fbpcu.pcu_name() args['pcu_errors'] = fbpcu.pcu_errors() + args['plc_pcuid'] = fbpcu.plc_pcuid else: args['pcu_name'] = "error looking up pcu name" args['pcu_errors'] = "" + args['plc_pcuid'] = 0 args['hostname'] = host sitehist.sendMessage('pcuerror_notice', **args) @@ -189,40 +191,46 @@ def main(hostnames, sitenames): print "%s %s %s" % (i, sitehist.db.loginbase, sitehist.db.status) - # determine if there are penalties within the last 30 days? - # if so, add a 'pause_penalty' action. - if sitehist.db.message_id != 0 and sitehist.db.message_status == 'open' and \ - sitehist.db.penalty_level > 0 and not found_within(recent_actions, 'pause_penalty', 30): - # pause escalation - print "Pausing penalties for %s" % site - sitehist.pausePenalty() - else: - - if sitehist.db.status == 'down': - if not found_within(recent_actions, 'pause_penalty', 30) and \ - not found_within(recent_actions, 'increase_penalty', 7) and \ - changed_greaterthan(sitehist.db.last_changed, 7): - - # TODO: catch errors - sitehist.increasePenalty() - sitehist.applyPenalty() - sitehist.sendMessage('increase_penalty') - - print "send message for site %s penalty increase" % site - - if sitehist.db.status == 'good': - # clear penalty - # NOTE: because 'all clear' should have an indefinite status, we - # have a boolean value rather than a 'recent action' - if sitehist.db.penalty_applied: - # send message that penalties are cleared. - - sitehist.clearPenalty() - sitehist.applyPenalty() - sitehist.sendMessage('clear_penalty') - sitehist.closeTicket() - - print "send message for site %s penalty cleared" % site + if sitehist.db.status == 'down': + if sitehist.db.penalty_pause and \ + changed_greaterthan(sitehist.db.penalty_pause_time, 30): + + email_exception("", "clear pause penalty for site: %s" % sitehist.db.loginbase) + sitehist.closeTicket() + # NOTE: but preserve the penalty status. + sitehist.clearPenaltyPause() + + if sitehist.db.message_id != 0 and \ + sitehist.db.message_status == 'open' and \ + not sitehist.db.penalty_pause: + + email_exception("", "pause penalty for site: %s" % sitehist.db.loginbase) + sitehist.setPenaltyPause() + + if not sitehist.db.penalty_pause and \ + not found_within(recent_actions, 'increase_penalty', 7) and \ + changed_greaterthan(sitehist.db.last_changed, 7): + + # TODO: catch errors + sitehist.increasePenalty() + sitehist.applyPenalty() + sitehist.sendMessage('increase_penalty') + + print "send message for site %s penalty increase" % site + + if sitehist.db.status == 'good': + # clear penalty + # NOTE: because 'all clear' should have an indefinite status, we + # have a boolean value rather than a 'recent action' + if sitehist.db.penalty_applied or sitehist.db.penalty_pause: + # send message that penalties are cleared. + + sitehist.clearPenalty() + sitehist.applyPenalty() + sitehist.sendMessage('clear_penalty') + sitehist.closeTicket() + + print "send message for site %s penalty cleared" % site site_count = site_count + 1