101 def __init__(self,**params):
102 """Constructor (takes any number of parameters as an argument)."""
103 self.params = { }
104 self.paramOrder = [ ]
105 self.paramToBeCopied = [ ]
106 self.jobs = { }
107 self.jobStatus = { }
108
109
110 self.setParam('jobnr',-1,'Number of job last configured',True)
111 self.setParam('inputfiles',[],'List of all input files',True)
112 self.setParam('filesperjob',1,'Number of input files per job')
113 self.setParam('lbperjob',0,'Number of luminosity blocks per job if doing LB bunching')
114 self.setParam('maxjobs',0,'Maximum number of jobs to run (0=no maximum)')
115 self.setParam('jobname','job%(jobnr)03i','Job name template')
116 self.setParam('jobdir',os.getcwd(),'Directory template from where the jobs are started')
117 self.setParam('rundir','.','Directory template where the jobs execute')
118 self.setParam('configfile','%(jobdir)s/%(jobname)s.config.py','Job configuration file name template (use %(jobnr)i for current job number)')
119 self.setParam('configmy','%(jobdir)s/configMy.py','Job configuration file for CA configuration')
120 self.setParam('logfile','%(jobdir)s/%(jobname)s.log','Log file name template')
121 self.setParam('scriptfile','%(jobdir)s/%(jobname)s.sh','Script file name template')
122 self.setParam('outputfileprefix','%(jobdir)s/%(jobname)s-','Output file name prefix template')
123 self.setParam('outputfilelist',[],'List of desired output files (w/o outputfileprefix)')
124 self.setParam('outputfilestring','','Generated comma-separated list of desired output files with full names',True)
125 self.setParam('filesforpoolcatalog',[],'Files to insert into POOL file catalog')
126 self.setParam('addinputtopoolcatalog',True,"Add job's input files to POOL file catalog?")
127 self.setParam('subflag','%(jobdir)s/%(jobname)s.status.SUBMITTED','Status flag template for submitted jobs')
128 self.setParam('runflag','%(jobdir)s/%(jobname)s.status.RUNNING','Status flag template for running jobs')
129 self.setParam('exitflag','"%(jobdir)s/%(jobname)s.exit.$status"','Status flag template to record athena exit status')
130 self.setParam('exitstatus','"%(jobdir)s/%(jobname)s.exitstatus.dat"','File with exit status value')
131 self.setParam('postprocflag','%(jobdir)s/%(jobname)s.status.POSTPROCESSING','Status flag template for jobs requiring postprocessing')
132 self.setParam('completedflag','%(jobdir)s/%(jobname)s.status.COMPLETED','Status flag template for completed jobs')
133 self.setParam('doneflag','','Actual status flag used at end of job',True)
134 self.setParam('logmail','','E-mail address for sending status e-mails')
135 self.setParam('release',GetRelease(),'Software release (may include flags such as opt,runtime)')
136 self.setParam('setuprelease',True,'Setup ATLAS software release?')
137 self.setParam('returnstatuscode',False,'Return athena status code from script?')
138 self.setParam('joboptionpath',os.getcwd()+'/joboptions.py','Master joboption file (w/full path if not in release)')
139 self.setParam('taskpostprocsteps','','Task-level postprocessing steps (defined at task submission)')
140 self.setParam('jobpostprocsteps','','Job-level postprocessing steps (updated by template)')
141 self.setParam('cmdsetup','','Statement for setting up release',True)
142 self.setParam('cmddefinepoolcatalog','','Statement for defining POOL file catalog',True)
143 self.setParam('cmdcopyfiles','','Statement to copy files to local directory',True)
144 self.setParam('cmdjobpreprocessing','','Statement(s) to execute for preprocessing',False)
145 self.setParam('cmdjobpostprocessing','','Statement(s) to execute for postprocessing',False)
146 self.setParam('cmdexit','','Statement used to exit shell script (allows passing up athena exit code)',True)
147 self.setParam('maketmpdir','mkdir -p tmp','Statement to create tmp directory')
148 self.setParam('script',scriptTemplate,'Template of job submission script',True)
149
150
151 for k in params.keys():
152 self.setParam(k,params[k])
153
154 self.checkParams()
155
156