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

HskSqlSvr.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.4 $"
00015 __release__  = "$Name: R04-12-00 $"
00016 __credits__  = "SLAC"
00017 
00018 import LATTE.copyright_SLAC
00019 import logging as log
00020 import MySQLdb
00021 
00022 # Hsk core code
00023 from LATTE.monitoring.HskRetriever import *
00024 from LATTE.monitoring.HskCollector import *
00025 from LATTE.monitoring.HskCli       import HskCli, HskHandler
00026 
00027 # LATTE infrastructure
00028 from LATTE.client.gCmdCli          import CmdCli
00029 from LATTE.database.gLAT           import GLAT
00030 from LATTE.database.gHSK           import GHSK
00031 from LATTE.client.gOptions         import Options
00032 
00033 latSchema = None
00034 hskSchema = None
00035 comSchema = None
00036 cmdServer = None
00037 
00038 def startup():
00039   log.basicConfig()
00040   log.root.setLevel(log.DEBUG)
00041 
00042   
00043 def testCollector(sqlDB):
00044   
00045   # set up command/housekeeping clients
00046   cmdCli = CmdCli()
00047   # hskCli = HskCli()
00048   # set up command/hsk connection handlers
00049   cmdHandler = HskHandler(cmdCli, cmdServer)
00050   # hskHandler = HskHandler(hskCli, cmdServer)
00051     
00052   # set up LAT schema
00053   latDB = GLAT(cmdCli)
00054   latDB.readSchema(latSchema)
00055   
00056   # set up HSK schema
00057   hskDB = GHSK(cmdCli)
00058   hskDB.readSchema(hskSchema)
00059   hskDB.applyConfig(None)
00060   
00061   # set up CMD schema
00062   cmdDB = GLAT(cmdCli)
00063   cmdDB.readSchema(cmdSchema)
00064   
00065   alarmSetup(hskDB, cmdDB)
00066   
00067   collector = HskCollector(cmdCli)
00068   collector.setDelay(501)           # 5 second delay
00069   
00070   from HskRetriever import HskLatRetriever
00071   firstRetriever = HskLatRetriever(latDB)
00072   collector.addRetriever("HSK", firstRetriever)
00073   
00074   from LATTE.monitoring.HskRecorder import HskAlarmRecorder
00075   firstRecorder = HskAlarmRecorder(hskDB)
00076   collector.addRecorder(firstRecorder)
00077   
00078   from LATTE.monitoring.HskSqlInterface import HskSqlRecorder
00079   secondRecorder = HskSqlRecorder(hskDB, sqlDB, source=1)
00080   collector.addRecorder(secondRecorder)
00081   
00082   
00083   log.info( "Collector delay: " + str(collector.getDelay()/10) + " seconds" )
00084   collector.setAcquiring(True)
00085   
00086   from time import sleep
00087   try:
00088     while 1:
00089       sleep(.1)
00090   except Exception, e:
00091     collector.shutdown()
00092   
00093   cmdHandler.disconnect()
00094   hskHandler.disconnect()
00095 
00096 
00097 def alarmSetup(hskDB, cmdDB):
00098   # Retrieve the global rule list for HSK
00099   ruleSet = hskDB.getRules()
00100   # print ruleSet
00101   # Access any of the rule objects and call clearAllActions() to clear actions.
00102   ruleSet.values()[0].clearAllActions()
00103   
00104   # add some trivial yellow/red alarms
00105   from HskAlarms import yellowPrintMessage, redPrintMessage
00106   ruleSet['tempMonitor'].registerAction('yellowAction', yellowPrintMessage)
00107   # ruleSet['tempMonitor'].registerAction('redAction',    redPrintMessage)
00108 
00109 def usage():
00110   return """
00111 
00112 HskSvr Usage:
00113 
00114 Mandatory options:
00115 --server    specify the hostname or the IP address of the teststand crate
00116             to connect to.
00117 --latSchema specify the LAT schema file that defines the detector.
00118 --hskSchema specify the Housekeeping schema file to load.
00119 
00120 Optional options:
00121 --cmdSchema specify the LAT schema file to be used for commanding.
00122             Default is to use latSchema
00123 
00124 Example:
00125 $ HskSvr --server lat-elf1 --latSchema LAT.xml  --hskSchema HSK.xml  --cmdSchema LAT.xml
00126 
00127 """
00128   
00129 if __name__ == '__main__':
00130   
00131   startup()
00132   
00133   # Options, first list mandatory, second list optional 
00134   options = Options(['server', 'latSchema', 'hskSchema', 'sqlHost'],
00135                     ['cmdSchema',])
00136   try:
00137     options.parse()
00138   except Exception, msg:
00139     options.usage(usage())
00140     raise Exception, msg
00141   
00142   cmdServer = options.server
00143   latSchema = options.latSchema
00144   hskSchema = options.hskSchema
00145   if options.cmdSchema is not None:
00146     cmdSchema = options.cmdSchema
00147   else:
00148     cmdSchema = latSchema
00149   
00150   sqlDb = MySQLdb.connect(host=options.sqlHost, db='itosdb', user='itosdb')
00151 
00152   testCollector(sqlDb.cursor())
00153   
00154   
00155   
00156   
00157   
00158   
00159   
00160   
00161   

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