ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/SchedulerCondor.py
Revision: 1.8.2.2
Committed: Tue Jun 24 15:20:56 2008 UTC (16 years, 10 months ago) by fanzago
Content type: text/x-python
CVS Tags: CRAB_2_3_1_pre1
Changes since 1.8.2.1: +0 -0 lines
Log Message:
some changes according to the head of CRAB (24/06/2008)

File Contents

# Content
1 __revision__ = "$Id: SchedulerCondor.py,v 1.9 2008/06/17 21:54:14 ewv Exp $"
2 __version__ = "$Revision: 1.9 $"
3
4 from Scheduler import Scheduler
5 from SchedulerLocal import SchedulerLocal
6 from crab_exceptions import *
7 from crab_util import *
8 from crab_logger import Logger
9 import common
10
11 import os
12
13 # Naming convention:
14 # methods starting with 'ws' are responsible to provide
15 # corresponding part of the job script ('ws' stands for 'write script').
16
17 class SchedulerCondor(SchedulerLocal) :
18
19 def __init__(self):
20 Scheduler.__init__(self,"CONDOR")
21 return
22
23
24 def configure(self, cfg_params):
25 SchedulerLocal.configure(self, cfg_params)
26 self.environment_unique_identifier ='${HOSTNAME}_${CONDOR_ID}_' + common._db.queryTask('name')
27
28 try:
29 tmp = cfg_params['CMSSW.datasetpath']
30 if string.lower(tmp)=='none':
31 self.datasetPath = None
32 self.selectNoInput = 1
33 else:
34 self.datasetPath = tmp
35 self.selectNoInput = 0
36 except KeyError:
37 msg = "Error: datasetpath not defined "
38 raise CrabException(msg)
39
40 return
41
42
43 def sched_parameter(self,i,task):
44 """
45 Return scheduler-specific parameters
46 """
47 index = int(common._db.nJobs()) - 1
48 sched_param= ''
49
50 for i in range(index):
51 pass
52
53 return sched_param
54
55
56 def realSchedParams(self,cfg_params):
57 """
58 Return dictionary with specific parameters, to use
59 with real scheduler
60 """
61
62 tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
63 params = {'tmpDir':tmpDir}
64 return params
65
66
67 def listMatch(self, seList, full, onlyOSG=True):
68 """
69 Check the compatibility of available resources
70 """
71
72 # May have problems with onlyOSG being false, probably due to lengths of lists and command line.
73 # Either re-write osg_bdii.py with a proper ldap library or break the queries apart
74
75 if self.selectNoInput:
76 return [True]
77 else:
78 return SchedulerLocal.listMatch(self, seList, full)
79
80 def decodeLogInfo(self, file):
81 """
82 Parse logging info file and return main info
83 """
84 import CondorGLoggingInfo
85 loggingInfo = CondorGLoggingInfo.CondorGLoggingInfo()
86 reason = loggingInfo.decodeReason(file)
87 return reason
88
89
90 def wsExitFunc(self):
91 """
92 """
93 txt = '\n'
94 txt += '#\n'
95 txt += '# EXECUTE THIS FUNCTION BEFORE EXIT \n'
96 txt += '#\n\n'
97
98 txt += 'func_exit() { \n'
99 txt += self.wsExitFunc_common()
100
101 txt += ' tar zcvf ${out_files}.tgz ${final_list}\n'
102 txt += ' cp ${out_files}.tgz $ORIG_WD/\n'
103 txt += ' cp crab_fjr_$NJob.xml $ORIG_WD/\n'
104
105 txt += ' exit $job_exit_code\n'
106 txt += '}\n'
107
108 return txt
109
110 def wsInitialEnvironment(self):
111 """
112 Returns part of a job script which does scheduler-specific work.
113 """
114
115 txt = '\n# Written by SchedulerCondor::wsInitialEnvironment\n'
116 txt += 'echo "Beginning environment"\n'
117 txt += 'printenv | sort\n'
118
119 txt += 'middleware='+self.name()+' \n'
120 txt += """
121 if [ $_CONDOR_SCRATCH_DIR ] && [ -d $_CONDOR_SCRATCH_DIR ]; then
122 ORIG_WD=`pwd`
123 echo "Change from $ORIG_WD to Condor scratch directory: $_CONDOR_SCRATCH_DIR"
124 if [ -e ../default.tgz ] ;then
125 echo "Found ISB in parent directory (Local Condor)"
126 cp ../default.tgz $_CONDOR_SCRATCH_DIR
127 fi
128 cd $_CONDOR_SCRATCH_DIR
129 fi
130 """
131
132 return txt