Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

HskAlarms.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2004
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 __facility__ = "Online"
00011 __abstract__ = "GLAST LAT Housekeeping server infrastructure"
00012 __author__   = "Jim Panetta <panetta@slac.stanford.edu> SLAC - GLAST I&T"
00013 __date__     = "07/28/04"
00014 __version__  = "$Revision: 1.9 $"
00015 __release__  = "$Name: R04-12-00 $"
00016 __credits__  = "SLAC"
00017 
00018 import LATTE.copyright_SLAC
00019 import time
00020 import sys
00021 import os
00022 
00023 from LATTE.tools.gAlert       import *
00024 
00025 def sendAlert(value, signal, sender, node, level):
00026   rule   = sender.getRule()
00027   system = rule.subsystem().name()
00028   cat    = rule.category().name()
00029   dispatch = "%s %s" % (system, cat)
00030   
00031   if 'MACHINEID' in os.environ:
00032     machine = int(os.environ['MACHINEID'])
00033   else:
00034     machine = 0
00035   
00036   measurand = NodeString(node) + sender.getName()
00037   strVal    = str(value)
00038   if sender.getEGU() is not None:
00039     strVal += sender.getEGU().units()
00040   
00041   msg = "%s has violated rule %s, causing a %s Alarm.  Value = %s" % \
00042         (measurand, rule.name(), alertDict[level], strVal)
00043   alert( msg, dispatch, level, machine)
00044     
00045 def yellowAlert(value, signal, sender, node):
00046   sendAlert(value, signal, sender, node, YELLOWALERT)
00047   
00048 def redAlert(value, signal, sender, node):
00049   sendAlert(value, signal, sender, node, REDALERT)
00050   
00051 def yellowPrintMessage(value, signal, sender, node):
00052   msg =  'Yellow Alarm: ' + NodeString(node) + sender.getName()
00053   msg += ' is almost out of range: ' + str(value)
00054   if sender.getEGU() is not None:
00055     msg += sender.getEGU().units()
00056   log.warning( msg)
00057   
00058 def redPrintMessage(value, signal, sender, node):
00059   msg =  'Red Alarm: ' + NodeString(node) + sender.getName()
00060   msg += ' is out of range: ' + str(value)
00061   if sender.getEGU() is not None:
00062     msg += ' ' + sender.getEGU().units()
00063   log.error(msg)
00064   
00065   ### Useful 
00066   rs = sender.getRule()
00067   # print "AAAjim: ruleset name=%s, subsys=%s, cat=%s" % ( rs.name(), rs.subsystem().name(), rs.category().name() )
00068 
00069 
00070 def NodeString(node):
00071   """Useful little recursive function to generate a string representation
00072   of a gDb-like object.
00073   
00074   \param node  Any gDb-like object.  (i.e. GLAT, GHSK)
00075   Object must support getName(), up() and id() methods.
00076   """
00077   string = ''
00078   if node is not None:
00079     string += NodeString(node.up())
00080     string += node.getName() 
00081     if node.id() is not None:
00082       string += '[' + str(node.id()) + ']'
00083     string += '.'
00084   return string

Generated on Fri Jul 21 13:26:29 2006 for LATTE R04-12-00 by doxygen 1.4.3