IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 23, 2012, 4:20:00 PM (14 years ago)
Author:
rhenders
Message:

big changes to support reading config from the database instead of xml file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/jython/config.py

    r33261 r33358  
    1818    Basically reads the entire config and stores values to class variables
    1919    '''
    20     def __init__(self, path):
     20    def __init__(self, programName, name):
    2121
    22         self.path = path
     22        self.programName = programName
     23        self.name = name
     24        self.settingsPath = "../config/settings.xml" # TODO
    2325        self.logger = None
     26
     27        self.settingsDoc = ElementTree(file=self.settingsPath)
     28        self.logPath = self.settingsDoc.find("logPath").text
     29
    2430
    2531        # this is the border (in degrees) that we place around any loading box of
    2632        # PS1 pointings to ensure we pull a large enough area out of DVO
    2733        self.BORDER = 1.6
    28         self.refresh()
    29 
    30     def refresh(self):
    31 
    32         try:
    33             self.logger.infoPair("Reading config from", self.path)
    34         except: pass
    35         self.doc = ElementTree(file=self.path)
    36 
    37         # test mode?
    38         if int(self.doc.find("options/testMode").text) == 1:
    39             self.test = True
    40         else:
    41             self.test = False
    42 
    43         # location for data
    44         self.basePath = self.doc.find("localOutPath").text
    45 
    46         # DVO stuff
    47         self.dvoLabel = self.doc.find("dvo/gpc1Label").text
    48         self.dvoLocation = self.doc.find("dvo/location").text
    49 
    50         # other options
    51         self.epoch = self.doc.find("options/epoch").text
    52         self.survey = self.doc.find("options/survey").text
    53         self.pspsSurvey = self.doc.find("options/pspsSurvey").text
    54         self.dataRelease = int(self.doc.find("metadata/dataRelease").text)
    55 
    56         # get RA/Dec limits, if any
    57         try: self.minRa = float(self.doc.find("dvo/minRA").text)
    58         except: self.minRa = 0.0
    59         try: self.maxRa = float(self.doc.find("dvo/maxRA").text)
    60         except: self.maxRa = 360.0
    61         try: self.minDec = float(self.doc.find("dvo/minDec").text)
    62         except: self.minDec = -30.0
    63         try: self.maxDec = float(self.doc.find("dvo/maxDec").text)
    64         except: self.maxDec = 90.0
    65 
    66         # loading box size, if none set to default
    67         try: self.boxSize = float(self.doc.find("dvo/boxSize").text)
    68         except: self.boxSize = 4.0
    69         self.halfBox = self.boxSize/2.0
    70         self.boxSizeWithBorder = self.boxSize + (self.BORDER * 2)
    71 
    72         # datastore stuff
    73         self.datastoreProduct = self.doc.find("datastore/product").text
    74         self.datastoreType = self.doc.find("datastore/type").text
    75         if int(self.doc.find("options/publishToDatastore").text) == 1:
    76             self.datastorePublishing = True
    77         else:
    78             self.datastorePublishing = False
    79 
    80         # forcing?
    81         if int(self.doc.find("options/force").text) == 1:
    82             self.force = True
    83         else:
    84             self.force = False
    85 
    86         # reporting NULLS in tables?
    87         if int(self.doc.find("options/reportNulls").text) == 1:
    88             self.reportNulls = True
    89         else:
    90             self.reportNulls = False
    91 
    92         # get batch types to load
    93         self.batchTypes = []
    94         if int(self.doc.find("options/queueP2").text) == 1: self.batchTypes.append("P2")
    95         if int(self.doc.find("options/queueST").text) == 1: self.batchTypes.append("ST")
    96 
    97         # get IDs if any are set
    98         self.ids = []
    99         try:
    100             for element in self.doc.findall('options/ids/id'):
    101                 self.ids.append(int(element.text))
    102         except:
    103             pass
    104 
    105         # deletion policy
    106         if int(self.doc.find("deletion/local").text) == 1: self.deleteLocal = True
    107         else: self.deleteLocal = False
    108         if int(self.doc.find("deletion/datastore").text) == 1: self.deleteDatastore = True
    109         else: self.deleteDatastore = False
    110         if int(self.doc.find("deletion/dxlayer").text) == 1: self.deleteDxLayer = True
    111         else: self.deleteDxLayer = False
    112 
     34        self.isLoaded = False
    11335
    11436    '''
     
    11941        try:
    12042            self.logger.infoSeparator()
    121             self.logger.infoPair("Config path", self.path)
     43            self.logger.infoPair("Config name", self.name)
    12244            self.logger.infoPair("Survey", self.survey)
    12345            self.logger.infoPair("Publishing to PSPS as survey", self.pspsSurvey)
     
    12648            self.logger.infoBool("Test mode?", self.test)
    12749            self.logger.infoBool("Forcing?", self.force)
    128             self.logger.infoPair("Number of ids loaded from config", "%d" % len(self.ids))
    12950            self.logger.infoBool("Reporting NULLS?", self.reportNulls)
    130             for batchType in self.batchTypes: logger.infoPair("Queuing batch type", batchType)
     51            for batchType in self.batchTypes: self.logger.infoPair("Queuing batch type", batchType)
    13152        except:
    13253            pass
     
    14364    Creates a logger object and returns it
    14465    '''
    145     def getLogger(self, name, stdout=1, sendToFile=0):
     66    def getLogger(self, host, pid, stdout=1, sendToFile=0):
    14667       
    14768        logging.setLoggerClass(PSLogger)
    148         self.logger = logging.getLogger(name)
    149         self.logger.setup(name, self.basePath, self.dvoLabel, stdout, sendToFile)
     69        self.logger = logging.getLogger(self.programName)
     70        self.logger.setup(self.programName, self.logPath, self.name, host, pid, stdout, sendToFile)
    15071
    15172        return self.logger
     
    194115        try:
    195116            self.logger.infoPair("RA limits", "%.1f -> %.1f" % (self.minRa, self.maxRa))
    196             self.logger.infoPair("Dec limits", "%.1f -> %.1f" % (self.minDec, self.minDec))
     117            self.logger.infoPair("Dec limits", "%.1f -> %.1f" % (self.minDec, self.maxDec))
    197118            self.logger.infoPair("Loading box size", "%.1f degrees" % self.boxSize)
    198119        except:
     
    203124    Various db metadata getters
    204125    '''
    205     def getDbName(self, dbType): return self.doc.find(dbType +"/name").text
    206     def getDbHost(self, dbType): return self.doc.find(dbType +"/host").text
    207     def getDbUser(self, dbType): return self.doc.find(dbType +"/user").text
    208     def getDbPassword(self, dbType): return self.doc.find(dbType +"/password").text
     126    def getDbName(self, dbType): return self.settingsDoc.find(dbType +"/name").text
     127    def getDbHost(self, dbType): return self.settingsDoc.find(dbType +"/host").text
     128    def getDbUser(self, dbType): return self.settingsDoc.find(dbType +"/user").text
     129    def getDbPassword(self, dbType): return self.settingsDoc.find(dbType +"/password").text
    209130
    210131
Note: See TracChangeset for help on using the changeset viewer.