IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

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

now a subclass of IppToPsps

File:
1 edited

Legend:

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

    r33267 r33351  
    88import time
    99
    10 import logging.config
    11 
     10from ipptopsps import IppToPsps
    1211from config import Config
    13 from pslogger import PSLogger
    14 from ipptopspsdb import IppToPspsDb
    1512from odm import Odm
    1613from batch import Batch
    1714
     15
    1816'''
    19 Method to actually poll ODM
     17PollOdm class
    2018'''
    21 def poll(batchType, stage):
    22  
    23     if stage == "unloaded":
    24         ids = ippToPspsDb.getUnloadedBatchIDs(config.epoch, config.dvoLabel, batchType)
    25     elif stage == "unmergeworthy":
    26         ids = ippToPspsDb.getUnmergeWorthyBatchIDs(config.epoch, config.dvoLabel, batchType)
    27     elif stage == "unmerged":
    28         ids = ippToPspsDb.getUnmergedBatchIDs(config.epoch, config.dvoLabel, batchType)
     19class PollOdm(IppToPsps):
    2920
    30     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)
    3126
    32     results = {}
    33     newLoaded = 0
    34     newMergeWorthy = 0
    35     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")
    3634
    37     logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
    38     logger.info("|   Batch   | Loaded to ODM  |  Merge worthy  |     Merged     |   New loaded   |New merge worthy|   New merged   |")
    39     logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
    40     for id in ids:
     35        # get poll time arg
     36        if len(sys.argv) > 4: self.parsePollTimeArg(sys.argv[4])
    4137
    42         if odm.checkBatch(id, results):
    43            ippToPspsDb.updateOdmStatus(id, results)
     38        if self.STAGE == "all": self.stages = ['unloaded', 'unmergeworthy', 'unmerged']
     39        else: self.stages = [self.STAGE]
    4440
    45            if stage == "unloaded":
    46                if results['LOADEDTOODM'] == 1: newLoaded = newLoaded + 1
    47                if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
    48                if results['MERGED'] == 1: newMerged = newMerged + 1
     41        if self.BATCHTYPE == "all": self.batchTypes = ['P2', 'ST']
     42        else: self.batchTypes = [self.BATCHTYPE]
    4943
    50            elif stage == "unmergeworthy":
    51                if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
    52                if results['MERGED'] == 1: newMerged = newMerged + 1
     44        for stage in self.stages: self.logger.infoPair("Checking stage", stage)
     45        for batchType in self.batchTypes: self.logger.infoPair("Checking batch type", batchType)
    5346
    54            elif stage == "unmerged":
    55                if results['MERGED'] == 1: newMerged = newMerged + 1
     47    '''
     48    Overrides base-class version
     49    '''
     50    def refreshConfig(self):
     51        ret = super(PollOdm, self).refreshConfig()
     52        self.odm = Odm(self.logger, self.config)
     53        return ret
    5654
    57            logger.info("| %9s | %14d | %14d | %14d | %14d | %14d | %14d |" %
    58                    (Batch.getNameFromID(id),
    59                     results['LOADEDTOODM'],
     55    '''
     56    Run...
     57    '''
     58    def run(self):
     59
     60        while True:
     61
     62            for stage in self.stages:
     63                for batchType in self.batchTypes:
     64                    self.poll(batchType, stage)
     65
     66            self.checkClientStatus()
     67            if not self.waitForPollTime(): break
     68
     69    '''
     70    Method to actually poll ODM
     71    '''
     72    def poll(self, batchType, stage):
     73     
     74        if stage == "unloaded":
     75            ids = self.ippToPspsDb.getUnloadedBatchIDs(self.config.epoch, self.config.dvoLabel, batchType)
     76        elif stage == "unmergeworthy":
     77            ids = self.ippToPspsDb.getUnmergeWorthyBatchIDs(self.config.epoch, self.config.dvoLabel, batchType)
     78        elif stage == "unmerged":
     79            ids = self.ippToPspsDb.getUnmergedBatchIDs(self.config.epoch, self.config.dvoLabel, batchType)
     80   
     81        self.logger.infoTitle("Checking %d %s %s batches" % (len(ids), stage, batchType))
     82   
     83        results = {}
     84        newLoaded = 0
     85        newMergeWorthy = 0
     86        newMerged = 0
     87   
     88        self.logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
     89        self.logger.info("|   Batch   | Loaded to ODM  |  Merge worthy  |     Merged     |   New loaded   |New merge worthy|   New merged   |")
     90        self.logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
     91        for id in ids:
     92   
     93            if self.odm.checkBatch(id, results):
     94               self.ippToPspsDb.updateOdmStatus(id, results)
     95   
     96               if stage == "unloaded":
     97                   if results['LOADEDTOODM'] == 1: newLoaded = newLoaded + 1
     98                   if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
     99                   if results['MERGED'] == 1: newMerged = newMerged + 1
     100   
     101               elif stage == "unmergeworthy":
     102                   if results['MERGEWORTHY'] == 1: newMergeWorthy = newMergeWorthy + 1
     103                   if results['MERGED'] == 1: newMerged = newMerged + 1
     104
     105               elif stage == "unmerged":
     106                   if results['MERGED'] == 1: newMerged = newMerged + 1
     107   
     108               self.logger.info("| %9s | %14d | %14d | %14d | %14d | %14d | %14d |" %
     109                       (Batch.getNameFromID(id),
     110                            results['LOADEDTOODM'],
    60111                    results['MERGEWORTHY'],
    61                     results['MERGED'],
    62                     newLoaded,
    63                     newMergeWorthy,
    64                     newMerged))
     112                        results['MERGED'],
     113                        newLoaded,
     114                        newMergeWorthy,
     115                        newMerged))
     116   
     117   
     118            else:
     119                    self.logger.info("| %9s | failed to poll ODM                                                                                                   |" % Batch.getNameFromID(id))
     120   
     121        self.logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
     122   
    65123
    66 
    67         else:
    68             logger.info("| %9s | failed to poll ODM                                                                                                   |" % Batch.getNameFromID(id))
    69 
    70     logger.info("+-----------+----------------+----------------+----------------+----------------+----------------+----------------+")
    71 
    72 
     124    '''
     125    Overrides base-class version
     126    '''
     127    def printUsage(self):
     128        super(PollOdm, self).printUsage()
     129        print " <P2|ST|all> <unloaded|unmergeworthy|unmerged|all> [hours]"
     130   
     131   
     132   
    73133'''
    74134Program starts here
    75135'''
    76 if len(sys.argv) > 3:
    77     CONFIGPATH  = sys.argv[1]
    78     BATCHTYPE = sys.argv[2]
    79     STAGE = sys.argv[3]
    80 else:
    81     print "\n** Usage: " + sys.argv[0] + " <configPath> <P2|ST|all> <unloaded|unmergeworthy|unmerged|all> [hours]\n"
    82     sys.exit(1)
    83 
    84 if len(sys.argv) > 4: 
    85     HOURS = float(sys.argv[4])
    86     SECONDS = HOURS * 60.0 * 60.0
    87 else:
    88     SECONDS = None
    89 
    90 # create objects
    91 config = Config(CONFIGPATH)
    92 logger = config.getLogger(sys.argv[0])
    93 ippToPspsDb = IppToPspsDb(logger, config)
    94 odm = Odm(logger, config)
    95 
    96 if STAGE == "all": stages = ['unloaded', 'unmergeworthy', 'unmerged']
    97 else: stages = [STAGE]
    98 
    99 if BATCHTYPE == "all": batchTypes = ['P2', 'ST']
    100 else: batchTypes = [BATCHTYPE]
    101 
    102 for stage in stages: logger.infoPair("Checking stage", stage)
    103 for batchType in batchTypes: logger.infoPair("Checking batch type", batchType)
    104 
    105 while True:
    106 
    107     for stage in stages:
    108         for batchType in batchTypes:
    109             poll(batchType, stage)
    110 
    111     if SECONDS:
    112         logger.infoPair("Waiting for", "%f hours" % HOURS)
    113         time.sleep(SECONDS)
    114     else: break
    115 
    116 
     136pollodm = PollOdm(sys.argv)
     137pollodm.run()
     138pollodm.exitProgram("finished")
Note: See TracChangeset for help on using the changeset viewer.