- Timestamp:
- Mar 30, 2012, 2:49:37 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20111122/ippToPsps/jython/pollOdm.py
r32655 r33638 8 8 import time 9 9 10 import logging.config 11 from pslogger import PSLogger 12 from ipptopspsdb import IppToPspsDb 10 from ipptopsps import IppToPsps 11 from config import Config 13 12 from odm import Odm 14 13 from batch import Batch 15 14 15 16 16 ''' 17 Method to actually poll ODM 17 PollOdm class 18 18 ''' 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) 19 class PollOdm(IppToPsps): 27 20 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) 29 26 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") 34 34 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) 39 37 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]) 42 40 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] 47 43 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] 51 46 52 elif stage == "unmerged":53 if results['MERGED'] == 1: newMerged = newMerged + 147 for stage in self.stages: self.logger.infoPair("Checking stage", stage) 48 for batchType in self.batchTypes: self.logger.infoPair("Checking batch type", batchType) 54 49 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'], 59 106 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 64 118 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 72 126 ''' 73 127 Program starts here 74 128 ''' 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 129 pollodm = PollOdm(sys.argv) 130 pollodm.run() 131 pollodm.exitProgram("finished")
Note:
See TracChangeset
for help on using the changeset viewer.
