ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/Resubmitter.py
(Generate patch)

Comparing COMP/CRAB/python/Resubmitter.py (file contents):
Revision 1.5 by spiga, Tue May 6 14:15:41 2008 UTC vs.
Revision 1.16.2.2 by spiga, Tue Oct 13 13:58:53 2009 UTC

# Line 2 | Line 2 | from Submitter import Submitter
2   import common
3   from crab_util import *
4   from crab_exceptions import *
5 + from PhEDExDatasvcInfo import PhEDExDatasvcInfo
6 +
7  
8   class Resubmitter(Submitter):
9      def __init__(self, cfg_params, jobs):
10          self.cfg_params = cfg_params
11  
12          nj_list = []
13 <      
14 <        nj_list = self.checkAlowedJob(jobs,nj_list)
15 <
16 <        manageNewRunJobs(nj_list)  
17 <      
16 <        common.logger.message('Jobs '+str(nj_list)+' will be resubmitted')
13 >
14 >        self.copy_data = int(cfg_params.get('USER.copy_data',0))
15 >        self.check_RemoteDir =  int(cfg_params.get('USER.check_user_remote_dir',0))
16 >        nj_list = self.checkAllowedJob(jobs,nj_list)
17 >        common.logger.info('Jobs '+str(nj_list)+' will be resubmitted')
18          Submitter.__init__(self, cfg_params, nj_list, 'range')
19 <
19 >
20          return
21  
22 <    def checkAlowedJob(self,jobs,nj_list):
23 <        listRunField=[]
24 <        run_jobToSave = {'status' :'C', \
25 <                         'statusScheduler' : 'Created'}
22 >    def checkRemoteDir(self,task):
23 >
24 >        if self.copy_data==1:
25 >            stageout = PhEDExDatasvcInfo(self.cfg_params)
26 >            endpoint, lfn, SE, SE_PATH, user = stageout.getEndpoint()
27 >            common.scheduler.checkRemoteDir(endpoint,eval(task['outfileBasename']))
28 >
29  
30 +    def checkAllowedJob(self,jobs,nj_list):
31 +        listRunField=[]
32          task=common._db.getTask(jobs)
33 + #       if self.check_RemoteDir == 1 : self.checkRemoteDir(task)
34          for job in task.jobs:
35 <            st = job.runningJob['status']
36 <            nj = job['id']
37 <            if st in ['K','A','SE','E']:
38 <                nj_list.append(int(nj))
39 <                listRunField.append(run_jobToSave)
40 <            elif st == 'C':
41 <                common.logger.message('Job #'+`int(nj)`+' has status '+str(job.runningJob['statusScheduler'])+' not yet submitted!!!')
42 <            elif st in ['SD','D']:
43 <                common.logger.message('Job #'+`int(nj)`+' has status '+str(job.runningJob['statusScheduler'])+' must be retrieved before resubmission')
35 >            st = job.runningJob['state']
36 >            nj = int(job['jobId'])
37 >            if st in ['KillSuccess','SubFailed','Cleared','Aborted']:
38 >                #['K','A','SE','E','DA','NS']:
39 >                nj_list.append(nj)
40 >            elif st == 'Created':
41 >                common.logger.info('Job #'+`nj`+' last action was '+str(job.runningJob['state'])+' not yet submitted: use -submit')
42 >            elif st in ['Terminated']:
43 >                common.logger.info('Job #'+`nj`+' last action was '+str(job.runningJob['state'])+' must be retrieved (-get) before resubmission')
44              else:
45 <                common.logger.message('Job #'+`nj`+' has status '+str(job.runningJob['statusScheduler'])+' must be "killed" before resubmission')
45 >                common.logger.info('Job #'+`nj`+' last action was '+str(job.runningJob['state'])+' actual status is '\
46 >                        +str(job.runningJob['statusScheduler'])+' must be killed (-kill) before resubmission')
47 >                if (job.runningJob['state']=='KillRequested'): common.logger.info('\t\tthe previous Kill request is being processed')
48 >
49  
50          if len(nj_list) == 0 :
51              msg='No jobs to resubmit'
52              raise CrabException(msg)
53 <        else:
54 <            common._db.updateRunJob_(nj_list, listRunField )
55 <            return nj_list
46 <        
47 <        if UseServer==1:  SubmitterServer.__init__(self, cfg_params, nj_list, 'range')
48 <
49 <    def manageNewRunJobs(self,nj_list):
50 <        """
51 <        Get new running instances
52 <        """
53 >
54 >        common._db.updateJob_(nj_list, [{'closed':'N'}]*len(nj_list))
55 >        # Get new running instances
56          common._db.newRunJobs(nj_list)
57 <        return
57 >
58 >        return nj_list

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines