IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 30, 2012, 2:49:37 PM (14 years ago)
Author:
eugene
Message:

merge changes from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20111122/ippToPsps/jython/pollOdm.py

    r32655 r33638  
    88import time
    99
    10 import logging.config
    11 from pslogger import PSLogger
    12 from ipptopspsdb import IppToPspsDb
     10from ipptopsps import IppToPsps
     11from config import Config
    1312from odm import Odm
    1413from batch import Batch
    1514
     15
    1616'''
    17 Method to actually poll ODM
     17PollOdm class
    1818'''
    19 def poll(batchType, stage):
    20  
    21     if stage == "unloaded":
    22         ids = ippToPspsDb.getUnloadedBatchIDs(EPOCH, DVOLABEL, batchType)
    23     elif stage == "unmergeworthy":
    24         ids = ippToPspsDb.getUnmergeWorthyBatchIDs(EPOCH, DVOLABEL, batchType)
    25     elif stage == "unmerged":
    26         ids = ippToPspsDb.getUnmergedBatchIDs(EPOCH, DVOLABEL, batchType)
     19class PollOdm(IppToPsps):
    2720
    28     logger.infoTitle("Checking %d %s %s batches" % (len(ids), stage, batchType))
     21    '''
     22    Constructor
     23    '''
     24    def __init__(self, argv):
     25        super(PollOdm, self).__init__(argv)
    2926
    30     results = {}
    31     newLoaded = 0
    32     newMergeWorthy = 0
    33     newMerged = 0
     27        # get batch and stage args
     28        if len(sys.argv) > 3:
     29            self.BATCHTYPE = sys.argv[2]
     30            self.STAGE = sys.argv[3]
     31        else:
     32            self.printUsage()
     33            self.exitProgram("incorrect args")
    3434
    35     logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+")
    36     logger.info("|   Batch   | Loaded to ODM  |  Load failed   |  Merge worthy  |     Merged     |   New loaded   |New merge worthy|   New merged   |")
    37     logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+")
    38     for id in ids:
     35        # create Odm object
     36        self.odm = Odm(self.logger)
    3937
    40         if odm.checkBatch(id, results):
    41            ippToPspsDb.updateOdmStatus(id, results)
     38        # get poll time arg
     39        if len(sys.argv) > 4: self.parsePollTimeArg(sys.argv[4])
    4240
    43            if stage == "unloaded":
    44                if results['LOADEDTOODM'] == 1: newLoaded = newLoaded + 1
    45                if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
    46                if results['MERGED'] == 1: newMerged = newMerged + 1
     41        if self.STAGE == "all": self.stages = ['unloaded', 'unmergeworthy', 'unmerged']
     42        else: self.stages = [self.STAGE]
    4743
    48            elif stage == "unmergeworthy":
    49                if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
    50                if results['MERGED'] == 1: newMerged = newMerged + 1
     44        if self.BATCHTYPE == "all": self.batchTypes = ['P2', 'ST']
     45        else: self.batchTypes = [self.BATCHTYPE]
    5146
    52            elif stage == "unmerged":
    53                if results['MERGED'] == 1: newMerged = newMerged + 1
     47        for stage in self.stages: self.logger.infoPair("Checking stage", stage)
     48        for batchType in self.batchTypes: self.logger.infoPair("Checking batch type", batchType)
    5449
    55            logger.info("| %9s | %14d | %14d | %14d | %14d | %14d | %14d | %14d |" %
    56                    (Batch.getNameFromID(id),
    57                     results['LOADEDTOODM'],
    58                     results['LOADFAILED'],
     50    '''
     51    Run...
     52    '''
     53    def run(self):
     54
     55        while True:
     56
     57            for stage in self.stages:
     58                for batchType in self.batchTypes:
     59                    self.poll(batchType, stage)
     60
     61            self.checkClientStatus()
     62            if not self.waitForPollTime(): break
     63
     64    '''
     65    Method to actually poll ODM
     66    '''
     67    def poll(self, batchType, stage):
     68     
     69        if stage == "unloaded":
     70            ids = self.ippToPspsDb.getUnloadedBatchIDs(self.config.epoch, self.config.dvoLabel, batchType)
     71        elif stage == "unmergeworthy":
     72            ids = self.ippToPspsDb.getUnmergeWorthyBatchIDs(self.config.epoch, self.config.dvoLabel, batchType)
     73        elif stage == "unmerged":
     74            ids = self.ippToPspsDb.getUnmergedBatchIDs(self.config.epoch, self.config.dvoLabel, batchType)
     75   
     76        self.logger.infoTitle("Checking %d %s %s batches" % (len(ids), stage, batchType))
     77   
     78        results = {}
     79        newLoaded = 0
     80        newMergeWorthy = 0
     81        newMerged = 0
     82   
     83        self.logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
     84        self.logger.info("|   Batch   | Loaded to ODM  |  Merge worthy  |     Merged     |   New loaded   |New merge worthy|   New merged   |")
     85        self.logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
     86        for id in ids:
     87   
     88            if self.odm.checkBatch(id, results):
     89               self.ippToPspsDb.updateOdmStatus(id, results)
     90   
     91               if stage == "unloaded":
     92                   if results['LOADEDTOODM'] == 1: newLoaded = newLoaded + 1
     93                   if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
     94                   if results['MERGED'] == 1: newMerged = newMerged + 1
     95   
     96               elif stage == "unmergeworthy":
     97                   if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
     98                   if results['MERGED'] == 1: newMerged = newMerged + 1
     99
     100               elif stage == "unmerged":
     101                   if results['MERGED'] == 1: newMerged = newMerged + 1
     102   
     103               self.logger.info("| %9s | %14d | %14d | %14d | %14d | %14d | %14d |" %
     104                       (Batch.getNameFromID(id),
     105                            results['LOADEDTOODM'],
    59106                    results['MERGEWORTHY'],
    60                     results['MERGED'],
    61                     newLoaded,
    62                     newMergeWorthy,
    63                     newMerged))
     107                        results['MERGED'],
     108                        newLoaded,
     109                        newMergeWorthy,
     110                        newMerged))
     111   
     112   
     113            else:
     114                    self.logger.info("| %9s | failed to poll ODM                                                                                  |" % Batch.getNameFromID(id))
     115   
     116        self.logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
     117   
    64118
    65 
    66         else:
    67             logger.info("| %9s | failed to poll ODM                                                                                                   |" % Batch.getNameFromID(id))
    68 
    69     logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+")
    70 
    71 
     119    '''
     120    Overrides base-class version
     121    '''
     122    def printUsage(self):
     123        super(PollOdm, self).printUsage("<P2|ST|all> <unloaded|unmergeworthy|unmerged|all> [hours]")
     124   
     125   
    72126'''
    73127Program starts here
    74128'''
    75 if len(sys.argv) > 3:
    76     CONFIG  = sys.argv[1]
    77     BATCHTYPE = sys.argv[2]
    78     STAGE = sys.argv[3]
    79 else:
    80     print "\n** Usage: " + sys.argv[0] + " <configPath> <P2|ST|all> <unloaded|unmergeworthy|unmerged|all> [hours]\n"
    81     sys.exit(1)
    82 
    83 if len(sys.argv) > 4: 
    84     HOURS = float(sys.argv[4])
    85     SECONDS = HOURS * 60.0 * 60.0
    86 else:
    87     SECONDS = None
    88 
    89 # open config file
    90 configDoc = ElementTree(file=CONFIG)
    91 
    92 # set up logging
    93 logging.setLoggerClass(PSLogger)
    94 logger = logging.getLogger(sys.argv[0])
    95 logger.setup(configDoc, sys.argv[0])
    96 
    97 ippToPspsDb = IppToPspsDb(logger, configDoc)
    98 odm = Odm(logger, configDoc)
    99 
    100 DVOLABEL = configDoc.find("dvo/gpc1Label").text
    101 EPOCH = configDoc.find("options/epoch").text
    102 
    103 if STAGE == "all": stages = ['unloaded', 'unmergeworthy', 'unmerged']
    104 else: stages = [STAGE]
    105 
    106 if BATCHTYPE == "all": batchTypes = ['P2', 'ST']
    107 else: batchTypes = [BATCHTYPE]
    108 
    109 for stage in stages: logger.infoPair("Checking stage", stage)
    110 for batchType in batchTypes: logger.infoPair("Checking batch type", batchType)
    111 
    112 while True:
    113 
    114     for stage in stages:
    115         for batchType in batchTypes:
    116             poll(batchType, stage)
    117 
    118     if SECONDS:
    119         logger.infoPair("Waiting for", "%f hours" % HOURS)
    120         time.sleep(SECONDS)
    121     else: break
    122 
    123 
     129pollodm = PollOdm(sys.argv)
     130pollodm.run()
     131pollodm.exitProgram("finished")
Note: See TracChangeset for help on using the changeset viewer.