Changeset 33351 for trunk/ippToPsps/jython/pollOdm.py
- Timestamp:
- Feb 23, 2012, 4:14:32 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/ippToPsps/jython/pollOdm.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/pollOdm.py
r33267 r33351 8 8 import time 9 9 10 import logging.config 11 10 from ipptopsps import IppToPsps 12 11 from config import Config 13 from pslogger import PSLogger14 from ipptopspsdb import IppToPspsDb15 12 from odm import Odm 16 13 from batch import Batch 17 14 15 18 16 ''' 19 Method to actually poll ODM 17 PollOdm class 20 18 ''' 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) 19 class PollOdm(IppToPsps): 29 20 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) 31 26 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") 36 34 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]) 41 37 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] 44 40 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] 49 43 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) 53 46 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 56 54 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'], 60 111 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 65 123 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 73 133 ''' 74 134 Program starts here 75 135 ''' 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 136 pollodm = PollOdm(sys.argv) 137 pollodm.run() 138 pollodm.exitProgram("finished")
Note:
See TracChangeset
for help on using the changeset viewer.
