Changeset 2324
- Timestamp:
- 10/07/2008 11:15:12 AM (1 year ago)
- Files:
-
- CmsFileServer/src/CmsFileServer/EdmFileManager.py (modified) (2 diffs)
- CmsFileServer/src/CmsFileServer/FileManager.py (modified) (3 diffs)
- CmsFileServer/src/CmsFileServer/FileMover.py (modified) (5 diffs)
- CmsFileServer/src/CmsFileServer/Status.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
CmsFileServer/src/CmsFileServer/EdmFileManager.py
r2323 r2324 18 18 self.pool = FileManager.ThreadPool(threads=int(self.getOption( \ 19 19 "max_extractions", "5"))) 20 self.lfn_src = self._server.getOption("base_directory", "/var/www/html") 21 self.run_dest = self.getOption("base_directory", 22 "/var/www/html/extracted") 20 23 21 24 def getEvent(self, run, event): … … 41 44 finally: 42 45 self._extraction_lock.release() 46 47 def _launchExtraction(self, run, event): 48 key = run, event 49 if key in self._running_extractions: 50 self.log.warning("Internal error: about to launch an extraction " \ 51 "for something which is already running! Run %s, event %s" % \ 52 (run, event)) 53 extracter = EdmFileExtraction(self.cp) 54 extracter.request(run, event, self._getLfnsForRun(run), self.lfn_src, 55 self.run_dest) 56 self.pool.queue(extracter) 57 self._running_extractions(key) = extracter 43 58 44 59 def status(self, run, event): CmsFileServer/src/CmsFileServer/FileManager.py
r2101 r2324 8 8 9 9 from FileMover import ConfiguredObject, FileMover 10 11 class Status(object): 12 13 UNKNOWN = "Unknown Status" 14 SERVER_QUEUE = "The web server has too many requests, and this one has " \ 15 "been queued." 16 USER_QUEUE = "You have too many files in progress; this request has been "\ 17 "queued." 18 FILE_MOVING = "The file " 10 from Status import StatusCode 19 11 20 12 class SimpleCron(object): … … 174 166 else: 175 167 status = self.lfn_requests[lfn].status() 176 if status[0] == 3: # FAILED!168 if StatusCode.isFailure(status[0]): # FAILED! 177 169 self.failed_lfns[lfn] = status 178 170 self._fail_lfn(lfn) … … 211 203 self.request_lock.acquire() 212 204 try: 205 if lfn in self.failed_lfns: 206 del self.failed_lfns[lfn] 213 207 if lfn not in self.lfn_requests: 214 208 mover = FileMover(self.cp) CmsFileServer/src/CmsFileServer/FileMover.py
r2313 r2324 9 9 import threading 10 10 import xml.dom.minidom 11 11 12 from Utils import LfnInfoCache, getPercentageDone 13 from Status import StatusMsg, StatusCode 12 14 13 15 logging.basicConfig(level=logging.INFO) … … 85 87 def status(self): 86 88 if self.is_cached: 87 return ( 0, "Object was in cache; transfer done.")89 return (StatusCode.DONE, StatusMsg.OBJECT_IN_CACHE) 88 90 if self.transfer_wrapper: 89 91 return self.transfer_wrapper.status() 90 return (6, "Transfer wrapper has not been launched.") 92 return (StatusCode.TRANSFER_WRAPPER_NOT_LAUNCHED, 93 StatusMsg.TRANSFER_WRAPPER_NOT_LAUNCHED) 91 94 92 95 class FileLookup(ConfiguredObject): … … 110 113 urlfile = urllib2.urlopen(full_url) 111 114 except: 112 msg="Fail to open %s" %full_url115 msg="Fail to open %s" % full_url 113 116 raise msg 114 117 dom = xml.dom.minidom.parse(urlfile) … … 257 260 if oe.errno == 2: 258 261 # return "SRM portion of transfer still going" 259 return "Waiting for SRM transfer to start"262 return StatusMsg.WAITING_FOR_SRM 260 263 else: 261 264 raise 262 265 size = stat[6] 263 266 if size == 0: 264 return "GridFTP transfer started, but data movement has not " \ 265 "begun." 267 return StatusMsg.GRIDFTP_NO_MOVEMENT 266 268 else: 267 269 perc = "" 268 270 try: 269 baseDir = self.cp.get('file_manager','base_directory') 270 myLfn = dest.replace("file://","").replace(baseDir,"") 271 perc = "%s%%,"%getPercentageDone(size,self.lfnInfoCache.getSize(myLfn)) 271 baseDir = self.cp.get('file_manager', 'base_directory') 272 myLfn = dest.replace("file://", "").replace(baseDir, "") 273 perc = "%s%%," % getPercentageDone(size, 274 self.lfnInfoCache.getSize(myLfn)) 272 275 except: 273 276 # import traceback 274 277 # traceback.print_exc() 275 278 pass 276 return "Data moving; %s %.1f MB complete." % (perc,round(size/1024.0**2))279 return StatusMsg.IN_PROGRESS % (perc, round(size/1024.0**2)) 277 280 278 281 def status(self): … … 280 283 return self.final_status 281 284 if not self.pid: 282 return (1, "Transfer process has not started.") 285 return (StatusCode.TRANSFER_PROCESS_NOT_STARTED, 286 StatusMsg.TRANSFER_PROCESS_NOT_STARTED) 283 287 process_status = self.process_status() 284 288 if process_status == None: 285 289 return (2, self.file_progress_status()) 286 290 elif process_status == 0: 287 self.final_status = ( 0, "File completed successfully.")291 self.final_status = (StatusCode.DONE, StatusMsg.FILE_DONE) 288 292 return self.final_status 289 293 else: 290 self.final_status = ( 3, "File failed; transfer status code %i." % \291 process_status)294 self.final_status = (StatusCode.TRANSFER_FAILED, 295 StatusMsg.TRANSFER_FAILED_STATUS % process_status) 292 296 return self.final_status 293 return (4, "Unknown transfer status.") 297 return (StatusCode.TRANSFER_STATUS_UNKNOWN, 298 StatusMsg.TRANSFER_STATUS_UNKNOWN) 294 299 295 300 def cancel(self):
