From: Stephen Soltesz Date: Thu, 25 Jun 2009 23:03:12 +0000 (+0000) Subject: simplify pcu bad logic X-Git-Tag: Monitor-3.0-18~9 X-Git-Url: http://git.onelab.eu/?p=monitor.git;a=commitdiff_plain;h=e133ad49c55051c7d2a0672499101dbd4986c838 simplify pcu bad logic ignore additional fields in sitehistory record just show days down rather than weeks. weeks is confusing before 30 days --- diff --git a/monitor/database/info/history.py b/monitor/database/info/history.py index 19929a6..ec6f5ac 100644 --- a/monitor/database/info/history.py +++ b/monitor/database/info/history.py @@ -67,7 +67,7 @@ class HistorySiteRecord(Entity): penalty_level = Field(Int, default=0) penalty_applied = Field(Boolean, default=False) - acts_as_versioned(ignore=['last_changed', 'last_checked']) + acts_as_versioned(ignore=['last_changed', 'last_checked', 'message_status']) @classmethod def by_loginbase(cls, loginbase): diff --git a/monitor/util/__init__.py b/monitor/util/__init__.py index 8986f7f..b3268d9 100644 --- a/monitor/util/__init__.py +++ b/monitor/util/__init__.py @@ -26,8 +26,8 @@ def diff_time(timestamp, abstime=True): t = diff / (60*60*24) t_str = "%s days ago" % int(math.ceil(t)) elif diff <= 60*60*24*30: # approx sec in month - t = diff / (60*60*24*7) - t_str = "%s wks ago" % int(math.ceil(t)) + t = diff / (60*60*24) + t_str = "%s days ago" % int(math.ceil(t)) elif diff > 60*60*24*30: # approx sec in month t = diff / (60*60*24*30) t_str = "%s mnths ago" % int(t) diff --git a/pcubad.py b/pcubad.py index 59dfe7a..33a25be 100755 --- a/pcubad.py +++ b/pcubad.py @@ -64,17 +64,20 @@ def check_pcu_state(rec, pcu): pcu_state = rec.reboot_trial_status - if ( pcu_state == 'NetDown' or pcu_state == 'Not_Run' or not ( pcu_state == 0 or pcu_state == "0" ) ) and \ - ( pcu.status == 'online' or pcu.status == 'good' ): - print "changed status from %s to offline" % pcu.status - pcu.status = 'offline' - pcu.last_changed = datetime.now() - - if ( pcu_state == 0 or pcu_state == "0" ) and pcu.status not in [ 'online', 'good' ]: + # DOWN + if pcu_state not in [0, "0"] and pcu.status not in ['offline', 'down']: + print "changed status from %s to offline" % pcu.status + pcu.status = 'offline' + pcu.last_changed = datetime.now() + + # ONLINE + if pcu_state in [0, "0"] and pcu.status not in [ 'online', 'good' ]: print "changed status from %s to online" % pcu.status pcu.status = 'online' pcu.last_changed = datetime.now() + + # STATE TRANSITIONS if pcu.status == 'online' and changed_greaterthan(pcu.last_changed, 0.5): #send thank you notice, or on-line notice. print "changed status from %s to good" % pcu.status @@ -85,12 +88,11 @@ def check_pcu_state(rec, pcu): # send down pcu notice print "changed status from %s to down" % pcu.status pcu.status = 'down' - pcu.last_changed = datetime.now() - if ( pcu.status == 'offline' or pcu.status == 'down' ) and changed_greaterthan(pcu.last_changed, 2*30): - print "changed status from %s to down" % pcu.status - pcu.status = 'down' - pcu.last_changed = datetime.now() +# if pcu.status in [ 'offline', 'down' ] and changed_greaterthan(pcu.last_changed, 2*30): +# print "changed status from %s to down" % pcu.status +# pcu.status = 'down' +# pcu.last_changed = datetime.now() def checkAndRecordState(l_pcus, l_plcpcus): count = 0