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

Comparing COMP/CRAB/python/SchedulerCondor.py (file contents):
Revision 1.3 by ewv, Tue May 27 22:03:29 2008 UTC vs.
Revision 1.21 by spiga, Fri Mar 6 16:54:42 2009 UTC

# Line 1 | Line 1
1 + """
2 + Implements the vanilla (local) Condor scheduler
3 + """
4 +
5   __revision__ = "$Id$"
6   __version__ = "$Revision$"
7  
8 < from Scheduler import Scheduler
9 < from SchedulerLocal import SchedulerLocal
6 < from crab_exceptions import *
7 < from crab_util import *
8 < from crab_logger import Logger
9 < import common
8 > from SchedulerLocal  import SchedulerLocal
9 > from crab_exceptions import CrabException
10  
11 + import common
12   import os
13 <
14 < #  Naming convention:
14 < #  methods starting with 'ws' are responsible to provide
15 < #  corresponding part of the job script ('ws' stands for 'write script').
13 > import socket
14 > import sha
15  
16   class SchedulerCondor(SchedulerLocal) :
17 +    """
18 +    Class to implement the vanilla (local) Condor scheduler
19 +     Naming convention:  Methods starting with 'ws' provide
20 +     the corresponding part of the job script
21 +     ('ws' stands for 'write script').
22 +    """
23  
24 <  def __init__(self):
25 <    Scheduler.__init__(self,"CONDOR")
26 <    return
24 >    def __init__(self):
25 >        SchedulerLocal.__init__(self,"CONDOR")
26 >        self.datasetPath   = None
27 >        self.selectNoInput = None
28 >        self.return_data   = 0
29 >        self.copy_data     = 0
30  
31 +        self.environment_unique_identifier = None
32 +        return
33  
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    return
34  
35 +    def configure(self, cfg_params):
36 +        """
37 +        Configure the scheduler with the config settings from the user
38 +        """
39  
40 <  def sched_parameter(self,i,task):
41 <    """
42 <    Return scheduler-specific parameters
43 <    """
34 <    index = int(common._db.nJobs()) - 1
35 <    sched_param= ''
40 >        SchedulerLocal.configure(self, cfg_params)
41 >        taskHash = sha.new(common._db.queryTask('name')).hexdigest()
42 >        self.environment_unique_identifier = "https://" + \
43 >            socket.gethostname() + '/' + taskHash + "/${NJob}"
44  
45 <    for i in range(index):
46 <      pass
45 >        try:
46 >            tmp =  cfg_params['CMSSW.datasetpath']
47 >            if tmp.lower() == 'none':
48 >                self.datasetPath = None
49 >                self.selectNoInput = 1
50 >            else:
51 >                self.datasetPath = tmp
52 >                self.selectNoInput = 0
53 >        except KeyError:
54 >            msg = "Error: datasetpath not defined "
55 >            raise CrabException(msg)
56  
57 <    return sched_param
57 >        self.return_data = cfg_params.get('USER.return_data', 0)
58 >        self.copy_data   = cfg_params.get("USER.copy_data", 0)
59  
60 +        if int(self.copy_data) == 1:
61  
62 <  def realSchedParams(self,cfg_params):
63 <    """
64 <    Return dictionary with specific parameters, to use
65 <    with real scheduler
47 <    """
62 >            self.proxyValid = 0
63 >            self.dontCheckProxy = int(cfg_params.get("EDG.dont_check_proxy", 0))
64 >            self.proxyServer = cfg_params.get("EDG.proxy_server", 'myproxy.cern.ch')
65 >            common.logger.debug(5,'Setting myproxy server to ' + self.proxyServer)
66  
67 <    tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
68 <    params = {'tmpDir':tmpDir}
69 <    return  params
67 >            self.group = cfg_params.get("EDG.group", None)
68 >            self.role  = cfg_params.get("EDG.role", None)
69 >            self.VO    = cfg_params.get('EDG.virtual_organization', 'cms')
70  
71 +            self.checkProxy()
72  
73 <  def loggingInfo(self, id):
55 <    """ return logging info about job nj """
56 <    cmd = 'something'
57 <    #cmd_out = runCommand(cmd)
58 <    return ''
73 >        self.role  = None
74  
75 +        return
76  
61  def wsExitFunc(self):
62    """
63    """
64    txt = '\n'
65    txt += '#\n'
66    txt += '# EXECUTE THIS FUNCTION BEFORE EXIT \n'
67    txt += '#\n\n'
68
69    txt += 'func_exit() { \n'
70    txt += '    if [ $PYTHONPATH ]; then \n'
71    txt += '        update_fjr\n'
72    txt += '    fi\n'
73    txt += '    for file in $filesToCheck ; do\n'
74    txt += '        if [ -e $file ]; then\n'
75    txt += '            echo "tarring file $file in  $out_files"\n'
76    txt += '        else\n'
77    txt += '            echo "WARNING: output file $file not found!"\n'
78    txt += '        fi\n'
79    txt += '    done\n'
80    txt += '    final_list=$filesToCheck\n'
81    txt += '    echo "JOB_EXIT_STATUS = $job_exit_code"\n'
82    txt += '    echo "JobExitCode=$job_exit_code" >> $RUNTIME_AREA/$repo\n'
83    txt += '    dumpStatus $RUNTIME_AREA/$repo\n'
84    txt += '    tar zcvf ${out_files}.tgz  ${final_list}\n'
85    txt += '    cp  ${out_files}.tgz $ORIG_WD/\n'
86    txt += '    cp  crab_fjr_$NJob.xml $ORIG_WD/\n'
77  
78 <    txt += '    exit $job_exit_code\n'
79 <    txt += '}\n'
78 >    def sched_parameter(self, i, task):
79 >        """
80 >        Return scheduler-specific parameters
81 >        """
82 >
83 >        index = int(common._db.nJobs()) - 1
84 >        schedParam = ''
85 >
86 >        for i in range(index):
87 >            pass
88 >
89 >        return schedParam
90 >
91 >
92 >    def realSchedParams(self, cfg_params):
93 >        """
94 >        Return dictionary with specific parameters, to use with real scheduler
95 >        """
96 >
97 >        tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
98 >        tmpDir = os.path.join(common.work_space.shareDir(),'.condor_temp')
99 >        jobDir = common.work_space.jobDir()
100 >        params = {'tmpDir':tmpDir,
101 >                  'jobDir':jobDir}
102 >        return params
103 >
104 >
105 >    def listMatch(self, seList, full):
106 >        """
107 >        Check the compatibility of available resources
108 >        """
109 >
110 >        return [True]
111 >
112 >
113 >    def decodeLogInfo(self, fileName):
114 >        """
115 >        Parse logging info file and return main info
116 >        """
117 >
118 >        import CondorGLoggingInfo
119 >        loggingInfo = CondorGLoggingInfo.CondorGLoggingInfo()
120 >        reason = loggingInfo.decodeReason(fileName)
121 >        return reason
122 >
123 >
124 >    def wsCopyOutput(self):
125 >        """
126 >        Write a CopyResults part of a job script, e.g.
127 >        to copy produced output into a storage element.
128 >        """
129 >        txt = self.wsCopyOutput_comm()
130 >        return txt
131 >
132 >
133 >    def wsExitFunc(self):
134 >        """
135 >        Returns the part of the job script which runs prior to exit
136 >        """
137 >
138 >        txt = '\n'
139 >        txt += '#\n'
140 >        txt += '# EXECUTE THIS FUNCTION BEFORE EXIT \n'
141 >        txt += '#\n\n'
142 >
143 >        txt += 'func_exit() { \n'
144 >        txt += self.wsExitFunc_common()
145 >
146 >        txt += '    tar zcvf ${out_files}.tgz  ${final_list}\n'
147 >        txt += '    cp  ${out_files}.tgz $_CONDOR_SCRATCH_DIR/\n'
148 >        txt += '    cp  crab_fjr_$NJob.xml $_CONDOR_SCRATCH_DIR/\n'
149 >
150 >        txt += '    exit $job_exit_code\n'
151 >        txt += '}\n'
152 >
153 >        return txt
154 >
155 >    def wsInitialEnvironment(self):
156 >        """
157 >        Returns part of a job script which does scheduler-specific work.
158 >        """
159 >
160 >        txt  = '\n# Written by SchedulerCondor::wsInitialEnvironment\n'
161 >        txt += 'echo "Beginning environment"\n'
162 >        txt += 'printenv | sort\n'
163 >
164 >        txt += 'middleware='+self.name()+' \n'
165 >        txt += 'if [ -e /opt/d-cache/srm/bin ]; then\n'
166 >        txt += '  export PATH=${PATH}:/opt/d-cache/srm/bin\n'
167 >        txt += 'fi\n'
168 >
169 >        txt += """
170 > if [ $_CONDOR_SCRATCH_DIR ] && [ -d $_CONDOR_SCRATCH_DIR ]; then
171 >    echo "cd to Condor scratch directory: $_CONDOR_SCRATCH_DIR"
172 >    if [ -e ../default.tgz ] ;then
173 >      echo "Found ISB in parent directory (Local Condor)"
174 >      cp ../default.tgz $_CONDOR_SCRATCH_DIR
175 >    fi
176 >    cd $_CONDOR_SCRATCH_DIR
177 > fi
178 > """
179  
180 <    return txt
180 >        return txt

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines