- Timestamp:
- Mar 5, 2012, 5:19:48 PM (14 years ago)
- Location:
- branches/meh_branches/ppstack_test
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippToPsps/jython/pollOdm.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/meh_branches/ppstack_test
- Property svn:mergeinfo changed
-
branches/meh_branches/ppstack_test/ippToPsps/jython/pollOdm.py
r32121 r33415 6 6 import re 7 7 import sys 8 import time 8 9 9 import logging.config 10 from pslogger import PSLogger 11 from ipptopspsdb import IppToPspsDb 12 from gpc1db import Gpc1Db 10 from ipptopsps import IppToPsps 11 from config import Config 13 12 from odm import Odm 14 13 from batch import Batch 15 14 16 15 17 if len(sys.argv) > 1: CONFIG = sys.argv[1] 18 else: 19 print "\n** Usage: " + sys.argv[0] + " <configPath>\n" 20 sys.exit(1) 16 ''' 17 PollOdm class 18 ''' 19 class PollOdm(IppToPsps): 21 20 22 # open config file 23 configDoc = ElementTree(file=CONFIG) 21 ''' 22 Constructor 23 ''' 24 def __init__(self, argv): 25 super(PollOdm, self).__init__(argv) 24 26 25 # set up logging 26 logging.setLoggerClass(PSLogger) 27 logger = logging.getLogger(sys.argv[0]) 28 logger.setup(configDoc, sys.argv[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") 29 34 30 ippToPspsDb = IppToPspsDb(logger, configDoc) 31 gpc1Db = Gpc1Db(logger, configDoc) 32 odm = Odm(logger, configDoc) 35 # get poll time arg 36 if len(sys.argv) > 4: self.parsePollTimeArg(sys.argv[4]) 33 37 34 DVOLABEL = configDoc.find("dvo/gpc1Label").text 35 EPOCH = configDoc.find("options/epoch").text 38 if self.STAGE == "all": self.stages = ['unloaded', 'unmergeworthy', 'unmerged'] 39 else: self.stages = [self.STAGE] 36 40 37 ids = ippToPspsDb.getProcessedButUnmergedBatchIDs(EPOCH, DVOLABEL) 41 if self.BATCHTYPE == "all": self.batchTypes = ['P2', 'ST'] 42 else: self.batchTypes = [self.BATCHTYPE] 38 43 39 logger.infoPair("Processed but un-merged batches", "%d" % len(ids)) 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) 40 46 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 41 54 42 results = {} 55 ''' 56 Run... 57 ''' 58 def run(self): 43 59 44 logger.info("+-----------+----------------+----------------+----------------+----------------+") 45 logger.info("| Batch | Loaded to ODM | Load failed | Merge worthy | Merged |") 46 logger.info("+-----------+----------------+----------------+----------------+----------------+") 47 for id in ids: 60 while True: 48 61 49 if odm.checkBatch(id, results): 50 ippToPspsDb.updateOdmStatus(id, results) 51 logger.info("| %9s | %14d | %14d | %14d | %14d |" % 52 (Batch.getNameFromID(id), 53 results['LOADEDTOODM'], 54 results['LOADFAILED'], 55 results['MERGEWORTHY'], 56 results['MERGED'])) 57 else: 58 logger.info("| %9s | failed to poll ODM |" % Batch.getNameFromID(id)) 62 for stage in self.stages: 63 for batchType in self.batchTypes: 64 self.poll(batchType, stage) 59 65 60 logger.info("+-----------+----------------+----------------+----------------+----------------+") 66 self.checkClientStatus() 67 if not self.waitForPollTime(): break 61 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'], 111 results['MERGEWORTHY'], 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 123 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 133 ''' 134 Program starts here 135 ''' 136 pollodm = PollOdm(sys.argv) 137 pollodm.run() 138 pollodm.exitProgram("finished")
Note:
See TracChangeset
for help on using the changeset viewer.
