- 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/cleanup.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/meh_branches/ppstack_test
- Property svn:mergeinfo changed
-
branches/meh_branches/ppstack_test/ippToPsps/jython/cleanup.py
r32123 r33415 6 6 import re 7 7 import sys 8 import time 9 import logging.config 8 10 9 import logging.config 10 from pslogger import PSLogger 11 from ipptopspsdb import IppToPspsDb 11 from ipptopsps import IppToPsps 12 12 from batch import Batch 13 from datastore import Datastore 14 from dxlayer import DXLayer 13 15 14 16 15 if len(sys.argv) > 1: CONFIG = sys.argv[1] 16 else: 17 print "\n** Usage: " + sys.argv[0] + " <configPath>\n" 18 sys.exit(1) 17 ''' 18 Cleanup class 19 ''' 20 class Cleanup(IppToPsps): 19 21 20 # open config file 21 configDoc = ElementTree(file=CONFIG) 22 ''' 23 Constructor 24 ''' 25 def __init__(self, argv): 26 super(Cleanup, self).__init__(argv) 22 27 23 # set up logging 24 logging.setLoggerClass(PSLogger) 25 logger = logging.getLogger(sys.argv[0]) 26 logger.setup(configDoc, sys.argv[0]) 27 28 ippToPspsDb = IppToPspsDb(logger, configDoc) 29 30 DVOLABEL = configDoc.find("dvo/gpc1Label").text 31 EPOCH = configDoc.find("options/epoch").text 32 33 ids = ippToPspsDb.getMergedButNotDeletedBatchIDs(EPOCH, DVOLABEL) 34 35 logger.infoPair("Merged but un-deleted batches", "%d" % len(ids)) 28 if len(argv) > 2: self.parsePollTimeArg(sys.argv[2]) 36 29 37 30 31 ''' 32 Overrides base-class version 33 ''' 34 def refreshConfig(self): 35 ret = super(Cleanup, self).refreshConfig() 36 self.dxlayer = DXLayer(self.logger) 37 self.datastore = Datastore(self.logger, self.config, self.ippToPspsDb) 38 return ret 38 39 39 logger.info("+-----------+-------------------------+-------------------------+-------------------------+") 40 logger.info("| Batch | Removed from datastore | Removed from local disk | Removed from DXLayer |") 41 logger.info("+-----------+-------------------------+-------------------------+-------------------------+") 40 ''' 41 Runs... 42 ''' 43 def run(self): 42 44 43 for id in ids: 45 if self.SECONDS: self.logger.infoPair("Performing clean-up every", "%f hours" % (self.SECONDS/60.0/60.0)) 46 while True: 47 48 self.config.printDeletionPolicy() 49 self.clean("P2") 50 self.clean("ST") 51 52 self.checkClientStatus() 53 if not self.waitForPollTime(): break 54 55 ''' 56 Finds stuff to delete for this batch type, then: 57 58 - removes from the datastore 59 - deletes from local disk 60 - deletes files from DXLayer 61 62 ''' 63 def clean(self, batchType): 64 65 self.logger.infoSeparator() 66 self.logger.infoTitle("Cleaning up batch type %s" % batchType) 67 68 loadedDatastoreIDs = self.ippToPspsDb.getLoadedToODMButNotDeletedFromDatastore(batchType, self.config.epoch, self.config.dvoLabel) 69 loadedDxlayerIDs = self.ippToPspsDb.getLoadedToODMButNotDeletedFromDXLayer(batchType, self.config.epoch, self.config.dvoLabel) 70 mergedLocalIDs = self.ippToPspsDb.getMergedButNotDeletedFromLocalDisk(batchType, self.config.epoch, self.config.dvoLabel) 71 72 purgedDatastoreIDs = self.ippToPspsDb.getPurgedButNotDeletedFromDatastore(batchType, self.config.epoch, self.config.dvoLabel) 73 purgedLocalIDs = self.ippToPspsDb.getPurgedButNotDeletedFromLocalDisk(batchType, self.config.epoch, self.config.dvoLabel) 74 75 self.logger.infoPair("Loaded to ODM but still on datastore", "%d" % len(loadedDatastoreIDs)) 76 self.logger.infoPair("Loaded to ODM but still in DXLayer", "%d" % len(loadedDxlayerIDs)) 77 self.logger.infoPair("Merged but still on local disk", "%d" % len(mergedLocalIDs)) 78 self.logger.infoPair("Purged but still on datastore", "%d" % len(purgedDatastoreIDs)) 79 self.logger.infoPair("Purged but still on local disk", "%d" % len(purgedLocalIDs)) 44 80 45 batchName = Batch.getNameFromID(id) 46 removedFromDatastore = 0 47 removedFromLocalDisk = 0 48 removedFromDXLayer = 0 81 if self.config.deleteLocal: 82 self.logger.infoSeparator() 83 count = 0 84 ids = mergedLocalIDs + purgedLocalIDs 85 for id in ids: 86 87 if Batch.deleteFromDisk(self.logger, self.config.basePath, batchType, self.config.dvoLabel, id): 88 self.ippToPspsDb.updateDeletedLocal(id, 1) 89 count = count + 1 90 91 self.logger.infoSeparator() 92 self.logger.infoPair("Removed from local disk", "%d" % count) 93 self.logger.infoPair("Remaining on local disk", "%d" % (len(ids) - count)) 94 95 96 if self.config.deleteDatastore: 97 self.logger.infoSeparator() 98 count = 0 99 ids = loadedDatastoreIDs + purgedDatastoreIDs 100 for id in ids: 101 102 batchName = Batch.getNameFromID(id) 103 104 if self.datastore.remove(batchName): 105 count = count + 1 106 107 self.logger.infoSeparator() 108 self.logger.infoPair("Removed from datastore", "%d" % count) 109 self.logger.infoPair("Remaining on datastore", "%d" % (len(ids) - count)) 110 111 if self.config.deleteDxLayer: 112 self.logger.infoSeparator() 113 count = 0 114 for id in loadedDxlayerIDs: 115 116 if self.dxlayer.deleteBatch(id): 117 self.ippToPspsDb.updateDeletedDxlayer(id, 1) 118 count = count + 1 119 120 self.logger.infoSeparator() 121 self.logger.infoPair("Removed from DXLayer", "%d" % count) 122 self.logger.infoPair("Remaining on DXLayer", "%d" % (len(loadedDxlayerIDs) - count)) 123 49 124 50 logger.info("| %9s | %23d | %23d | %23d |", 51 batchName, 52 removedFromDatastore, 53 removedFromLocalDisk, 54 removedFromDXLayer) 125 ''' 126 Overrides base-class version 127 ''' 128 def printUsage(self): 129 super(Cleanup, self).printUsage() 130 print " [<poll time in hours>]" 55 131 56 logger.info("+-----------+-------------------------+-------------------------+-------------------------+") 132 133 ''' 134 Start of program 135 ''' 136 cleanup = Cleanup(sys.argv) 137 cleanup.run() 138 cleanup.exitProgram("finished")
Note:
See TracChangeset
for help on using the changeset viewer.
