X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=policy.py;h=f9605ae77dc6746647840e7f880f8a0b2255b468;hb=035a846d8617889c01cae12bc6d64eb7c48b64bd;hp=c1f69a51c67afdcf554296661ff56432d3c61456;hpb=37c768dbd516a39bd56bc43f9b73b51acdfd9563;p=monitor.git diff --git a/policy.py b/policy.py index c1f69a5..f9605ae 100755 --- a/policy.py +++ b/policy.py @@ -76,7 +76,7 @@ def main(hostnames, sitenames): # NOTE: there is a narrow window in which this command must be # evaluated, otherwise the notice will not go out. # this is not ideal. - sitehist.sendMessage('online_notice', hostname=host, viart=False) + sitehist.sendMessage('online_notice', hostname=host, viart=False, saveact=True) print "send message for host %s online" % host @@ -134,9 +134,11 @@ def main(hostnames, sitenames): for i,site in enumerate(sitenames): sitehist = SiteInterface.get_or_make(loginbase=site) siteblack = BlacklistRecord.get_by(loginbase=site) + skip_due_to_blacklist=False if siteblack and not siteblack.expired(): print "skipping %s due to blacklist. will expire %s" % (site, siteblack.willExpire() ) + skip_due_to_blacklist=True continue # TODO: make query only return records within a certin time range, @@ -144,33 +146,7 @@ def main(hostnames, sitenames): recent_actions = sitehist.getRecentActions(loginbase=site) print "%s %s %s" % (i, sitehist.db.loginbase, sitehist.db.status) - 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 - - # find all ticket ids for site ( could be on the site record? ) # 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 \ @@ -178,6 +154,34 @@ def main(hostnames, sitenames): # 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 + site_count = site_count + 1 @@ -251,6 +255,6 @@ if __name__ == "__main__": session.flush() sys.exit(0) except: - #email_exception() + email_exception() print traceback.print_exc(); print "fail all..."