Changeset 2324

Show
Ignore:
Timestamp:
10/07/2008 11:15:12 AM (1 year ago)
Author:
brian
Message:

Addition of the centrally-managed status codes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • CmsFileServer/src/CmsFileServer/EdmFileManager.py

    r2323 r2324  
    1818        self.pool = FileManager.ThreadPool(threads=int(self.getOption( \ 
    1919            "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") 
    2023 
    2124    def getEvent(self, run, event): 
     
    4144        finally: 
    4245            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 
    4358 
    4459    def status(self, run, event): 
  • CmsFileServer/src/CmsFileServer/FileManager.py

    r2101 r2324  
    88 
    99from 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 " 
     10from Status import StatusCode 
    1911 
    2012class SimpleCron(object): 
     
    174166                else: 
    175167                    status = self.lfn_requests[lfn].status() 
    176                     if status[0] == 3: # FAILED! 
     168                    if StatusCode.isFailure(status[0]): # FAILED! 
    177169                        self.failed_lfns[lfn] = status 
    178170                        self._fail_lfn(lfn) 
     
    211203        self.request_lock.acquire() 
    212204        try: 
     205            if lfn in self.failed_lfns: 
     206                del self.failed_lfns[lfn] 
    213207            if lfn not in self.lfn_requests: 
    214208                mover = FileMover(self.cp) 
  • CmsFileServer/src/CmsFileServer/FileMover.py

    r2313 r2324  
    99import threading 
    1010import xml.dom.minidom 
     11 
    1112from Utils import LfnInfoCache, getPercentageDone 
     13from Status import StatusMsg, StatusCode 
    1214 
    1315logging.basicConfig(level=logging.INFO) 
     
    8587    def status(self): 
    8688        if self.is_cached: 
    87             return (0, "Object was in cache; transfer done."
     89            return (StatusCode.DONE, StatusMsg.OBJECT_IN_CACHE
    8890        if self.transfer_wrapper: 
    8991            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) 
    9194         
    9295class FileLookup(ConfiguredObject): 
     
    110113            urlfile = urllib2.urlopen(full_url) 
    111114        except: 
    112             msg="Fail to open %s"%full_url 
     115            msg="Fail to open %s" % full_url 
    113116            raise msg 
    114117        dom = xml.dom.minidom.parse(urlfile) 
     
    257260            if oe.errno == 2: 
    258261#                return "SRM portion of transfer still going" 
    259                 return "Waiting for SRM transfer to start" 
     262                return StatusMsg.WAITING_FOR_SRM 
    260263            else: 
    261264                raise 
    262265        size = stat[6] 
    263266        if size == 0: 
    264             return "GridFTP transfer started, but data movement has not " \ 
    265                 "begun." 
     267            return StatusMsg.GRIDFTP_NO_MOVEMENT 
    266268        else: 
    267269            perc = "" 
    268270            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)) 
    272275            except: 
    273276#               import traceback 
    274277#               traceback.print_exc() 
    275278               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)) 
    277280 
    278281    def status(self): 
     
    280283            return self.final_status 
    281284        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) 
    283287        process_status = self.process_status() 
    284288        if process_status == None: 
    285289            return (2, self.file_progress_status()) 
    286290        elif process_status == 0: 
    287             self.final_status = (0, "File completed successfully."
     291            self.final_status = (StatusCode.DONE, StatusMsg.FILE_DONE
    288292            return self.final_status 
    289293        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) 
    292296            return self.final_status 
    293         return (4, "Unknown transfer status.") 
     297        return (StatusCode.TRANSFER_STATUS_UNKNOWN, 
     298                StatusMsg.TRANSFER_STATUS_UNKNOWN) 
    294299 
    295300    def cancel(self):