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

Comparing COMP/CRAB/python/SchedulerRcondor.py (file contents):
Revision 1.6 by belforte, Tue Aug 7 23:05:18 2012 UTC vs.
Revision 1.10 by belforte, Fri Aug 10 17:54:30 2012 UTC

# Line 7 | Line 7 | from crab_exceptions import CrabExceptio
7   from crab_util import runCommand
8   #from WMCore.SiteScreening.BlackWhiteListParser import CEBlackWhiteListParser
9   from WMCore.SiteScreening.BlackWhiteListParser import SEBlackWhiteListParser
10 + import Scram
11  
12  
13  
14   import common
15   import os
16   import socket
17 + import re
18  
19   # FUTURE: for python 2.4 & 2.6
20   try:
# Line 31 | Line 33 | class SchedulerRcondor(SchedulerGrid) :
33      def __init__(self):
34          SchedulerGrid.__init__(self,"RCONDOR")
35          self.rcondorHost   = os.getenv('RCONDOR_HOST')
36 +        if self.rcondorHost == None:
37 +            raise CrabException('FATAL ERROR: env.var RCONDOR_HOST not defined')
38          self.datasetPath   = None
39          self.selectNoInput = None
40          self.OSBsize = 50*1000*1000 # 50 MB
41  
42          self.environment_unique_identifier = None
43 +
44          return
45  
46  
# Line 49 | Line 54 | class SchedulerRcondor(SchedulerGrid) :
54          self.proxyValid=0
55          self.dontCheckProxy=int(cfg_params.get("GRID.dont_check_proxy",0))
56          self.space_token = cfg_params.get("USER.space_token",None)
57 <        try:
53 <            self.proxyServer = Downloader("http://cmsdoc.cern.ch/cms/LCG/crab/config/").config("myproxy_server.conf")
54 <            self.proxyServer = self.proxyServer.strip()
55 <            if self.proxyServer is None:
56 <                raise CrabException("myproxy_server.conf retrieved but empty")
57 <        except Exception, e:
58 <            common.logger.info("Problem setting myproxy server endpoint: using myproxy.cern.ch")
59 <            common.logger.debug(e)
60 <            self.proxyServer= 'myproxy.cern.ch'
57 >        self.proxyServer= 'myproxy.cern.ch'
58          self.group = cfg_params.get("GRID.group", None)
59          self.role = cfg_params.get("GRID.role", None)
60          self.VO = cfg_params.get('GRID.virtual_organization','cms')
61 <
61 >        
62          try:
63              tmp =  cfg_params['CMSSW.datasetpath']
64              if tmp.lower() == 'none':
# Line 105 | Line 102 | class SchedulerRcondor(SchedulerGrid) :
102          seString=self.blackWhiteListParser.cleanForBlackWhiteList(seDest)
103  
104          jobParams += '+DESIRED_SEs = "'+seString+'"; '
108        myschedName = self.rcondorHost
109        jobParams += '+Glidein_MonitorID = "https://'+ myschedName + '//$(Cluster).$(Process)"; '
110
111        if (self.EDG_clock_time):
112            jobParams += '+MaxWallTimeMins = '+self.EDG_clock_time+'; '
113        else:
114            jobParams += '+MaxWallTimeMins = %d; ' % (60*24)
115
116        common._db.updateTask_({'jobType':jobParams})
117
118
119        return jobParams
120
121
122    def realSchedParams(self, cfg_params):
123        """
124        Return dictionary with specific parameters, to use with real scheduler
125        is called when scheduler is initialized in Boss, i.e. at each crab command
126        """
105  
106 <        tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
107 <        tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
108 <        jobDir = common.work_space.jobDir()
106 >        scram = Scram.Scram(None)
107 >        cmsVersion = scram.getSWVersion()
108 >        scramArch  = scram.getArch()
109 >        
110 >        cmsver=re.split('_', cmsVersion)
111 >        numericCmsVersion = "%s%.2d%.2d" %(cmsver[1], int(cmsver[2]), int(cmsver[3]))
112  
113 <        taskDir=common.work_space.topDir().split('/')[-2]
114 <        rcondorDir ='%s/.rcondor/%s/mount/' % (os.getenv('HOME'),self.rcondorHost)
113 >        jobParams += '+DESIRED_CMSVersion ="' +cmsVersion+'";'
114 >        jobParams += '+DESIRED_CMSVersionNr ="' +numericCmsVersion+'";'
115 >        jobParams += '+DESIRED_CMSScramArch ="' +scramArch+'";'
116 >        
117 >        myschedName = self.rcondorHost
118 >        jobParams += '+Glidein_MonitorID = "https://'+ myschedName + '//$(Cluster).$(Process)"; '
119  
120          if (self.EDG_clock_time):
121              jobParams += '+MaxWallTimeMins = '+self.EDG_clock_time+'; '
# Line 148 | Line 133 | class SchedulerRcondor(SchedulerGrid) :
133          Return dictionary with specific parameters, to use with real scheduler
134          is called when scheduler is initialized in Boss, i.e. at each crab command
135          """
136 +        #SB this method is used to pass directory names to Boss Scheduler
137 +        # via params dictionary
138  
152        tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
153        tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
139          jobDir = common.work_space.jobDir()
155
140          taskDir=common.work_space.topDir().split('/')[-2]
141 <        rcondorDir ='%s/.rcondor/%s/mount/' % (os.getenv('HOME'),self.rcondorHost)
142 <        tmpDir = os.path.join(rcondorDir,taskDir)
159 <        tmpDir = os.path.join(tmpDir,'condor_temp')
141 >        shareDir = common.work_space.shareDir()
142 >        #SBtmpDir = common.work_space.tmpDir()
143          
144 <        params = {'tmpDir':tmpDir,
145 <                  'jobDir':jobDir}
144 >        params = {'rcondorHost':self.rcondorHost,
145 >                  'shareDir':shareDir,
146 >                  #SB'tmpDir':tmpDir,
147 >                  'jobDir':jobDir,
148 >                  'taskDir':taskDir}
149  
150          return params
151  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines