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

Comparing COMP/CRAB/python/multicrab.py (file contents):
Revision 1.29 by slacapra, Wed Oct 26 11:43:40 2011 UTC vs.
Revision 1.33 by slacapra, Thu Sep 20 13:09:26 2012 UTC

# Line 83 | Line 83 | class MultiCrab:
83              try:
84                  os.mkdir(self.continue_dir)
85              except OSError:
86 <                msg = 'Cannot create '+str(self.continue_dir) +' directory.\n'
86 >                msg = 'ERROR: Cannot create '+str(self.continue_dir) +' directory.\n'
87                  raise CrabException(msg)
88              pass
89          else:
90 <            msg = 'Directory '+str(self.continue_dir) +' already exist.\n'
90 >            msg = 'ERROR: Directory '+str(self.continue_dir) +' already exist.\n'
91              raise CrabException(msg)
92  
93          os.putenv("MULTICRAB_WORKDIR",self.continue_dir)
# Line 131 | Line 131 | class MultiCrab:
131                  cfg_params = self.loadMultiConfig(self.cfg_fname)
132                  pass
133              else:
134 <                msg = 'cfg-file '+self.cfg_fname+' not found.'
134 >                msg = 'ERROR: cfg-file '+self.cfg_fname+' not found.'
135                  raise CrabException(msg)
136                  pass
137              pass
# Line 152 | Line 152 | class MultiCrab:
152          self.cfg_params_dataset = {}
153          common_opts = {}
154          # first get common sections
155 +        crab_cfg='crab.cfg' # this is the default
156          for sec in cfg_params:
157              if sec in ['MULTICRAB']:
158                  if 'cfg' in cfg_params[sec]:
159                      common_opts['cfg']=cfg_params[sec]['cfg']
160 +                    crab_cfg=common_opts['cfg'];
161                  continue
162              if sec in ['COMMON']:
163                  common_opts.update(cfg_params[sec])
164                  continue
165              pass
166  
165        crab_cfg='crab.cfg'
166        if common_opts.has_key('cfg') : crab_cfg=common_opts['cfg']
167
168        # then Dataset's specific
169        for sec in cfg_params:
170            if sec in ['MULTICRAB', 'COMMON']: continue
171            self.cfg_params_dataset[sec]=cfg_params[sec]
172            # add common to all dataset
173            for key in common_opts:
174                self.cfg_params_dataset[sec][key]=common_opts[key]
175            pass
176
167          # read crab.cfg file and search for storage_path
168          crab_cfg_params = loadConfig(crab_cfg,{})
169          # also USER.ui_working_dir USER.outputdir and USER.logdir need special treatment
# Line 184 | Line 174 | class MultiCrab:
174              self.ui_working_dir = cfg_params["COMMON"].get("user.ui_working_dir", crab_cfg_params.get("USER.ui_working_dir",None))
175              self.publish_data_name = cfg_params["COMMON"].get("user.publish_data_name", crab_cfg_params.get("USER.publish_data_name",None))
176          else:
177 <            self.user_remote_dir = crab_cfg_params.get("USER.user_remote_dir",None)
177 >            self.user_remote_dir = crab_cfg_params.get("USER.user_remote_dir","./")
178              self.outputdir = crab_cfg_params.get("USER.outputdir",None)
179              self.logdir = crab_cfg_params.get("USER.logdir",None)
180              self.ui_working_dir = crab_cfg_params.get("USER.ui_working_dir",None)
181              self.publish_data_name = crab_cfg_params.get("USER.publish_data_name",None)
182  
183 +        if common_opts.has_key('cfg') : crab_cfg=common_opts['cfg']
184 +
185 +        # then Dataset's specific
186 +        for sec in cfg_params:
187 +            if sec in ['MULTICRAB', 'COMMON']: continue
188 +            # add common to all dataset
189 +            self.cfg_params_dataset[sec]=cfg_params[sec]
190 +            # special tratment for some parameter
191 +            if not self.cfg_params_dataset[sec].has_key("user.publish_data_name") and self.publish_data_name:
192 +                self.cfg_params_dataset[sec]["user.publish_data_name"]=self.publish_data_name+"_"+sec
193 +            if not self.cfg_params_dataset[sec].has_key("user.user_remote_dir") and self.user_remote_dir:
194 +                self.cfg_params_dataset[sec]["user.user_remote_dir"]=self.user_remote_dir+"/"+sec
195 +            if not self.cfg_params_dataset[sec].has_key("user.ui_working_dir") and self.ui_working_dir:
196 +                self.cfg_params_dataset[sec]["user.ui_working_dir"]=self.ui_working_dir+"/"+sec
197 +            if not self.cfg_params_dataset[sec].has_key("user.logdir") and self.logdir:
198 +                self.cfg_params_dataset[sec]["user.logdir"]=self.logdir+"/"+sec
199 +            if not self.cfg_params_dataset[sec].has_key("user.outputdir") and self.outputdir:
200 +                self.cfg_params_dataset[sec]["user.outputdir"]=self.outputdir+"/"+sec
201 +            for key in common_opts:
202 +                if not self.cfg_params_dataset[sec].has_key(key):
203 +                    self.cfg_params_dataset[sec][key]=common_opts[key]
204 +            pass
205 +
206          return
207  
208      def loadMultiConfig(self, file):
# Line 204 | Line 217 | class MultiCrab:
217              # print 'Section',sec
218              config[sec]={}
219              for opt in cp.options(sec):
220 <                #print 'config['+sec+'.'+opt+'] = '+string.strip(cp.get(sec,opt))
220 >                # print 'config['+sec+'.'+opt+'] = '+string.strip(cp.get(sec,opt))
221                  config[sec][opt] = string.strip(cp.get(sec,opt))
222          return config
223  
# Line 226 | Line 239 | class MultiCrab:
239                  
240                  options[tmp]=self.cfg_params_dataset[sec][opt]
241  
242 +            # if ui_working_dir is set, change -c dir accordnigly
243 +            if not self.cfg_params_dataset.has_key("USER.ui_working_dir") and self.ui_working_dir:
244 +                if self.flag_continue:
245 +                    options['-c']=self.ui_working_dir+"/"+sec
246 +
247              # check if user_remote_dir is set in multicrab.cfg
248              # protect against no user_remote_dir
249 <            self.user_remote_dir =self.cfg_params_dataset[sec].get("user.user_remote_dir",self.user_remote_dir)
250 <            if not self.user_remote_dir:
251 <                self.user_remote_dir = "./"
249 >            # self.user_remote_dir =self.cfg_params_dataset[sec].get("user.user_remote_dir",self.user_remote_dir)
250 >            # if not self.user_remote_dir:
251 >            #     self.user_remote_dir = "./"
252              # add section to storage_path if exist in crab.cfg
253 <            if not self.cfg_params_dataset.has_key("USER.user_remote_dir") and self.user_remote_dir:
254 <                options["-USER.user_remote_dir"]=self.user_remote_dir+"/"+sec
253 >            # if not self.cfg_params_dataset.has_key("USER.user_remote_dir") and self.user_remote_dir:
254 >            #     options["-USER.user_remote_dir"]=self.user_remote_dir+"/"+sec
255              # print options["-USER.user_remote_dir"]
256              # also for ui_working_dir
257 <            if not self.cfg_params_dataset.has_key("USER.ui_working_dir") and self.ui_working_dir:
258 <                options["-USER.ui_working_dir"]=self.ui_working_dir+"/"+sec
241 <            # if ui_working_dir is set, change -c dir accordnigly
242 <                if self.flag_continue:
243 <                    options['-c']=self.ui_working_dir+"/"+sec
244 <
257 >            # if not self.cfg_params_dataset.has_key("USER.ui_working_dir") and self.ui_working_dir:
258 >            #     options["-USER.ui_working_dir"]=self.ui_working_dir+"/"+sec
259              # also for logDir
260 <            if not self.cfg_params_dataset.has_key("USER.logdir") and self.logdir:
261 <                options["-USER.logdir"]=self.logdir+"/"+sec
262 <            # also for outputdir
263 <            if not self.cfg_params_dataset.has_key("USER.outputdir") and self.outputdir:
264 <                options["-USER.outputdir"]=self.outputdir+"/"+sec
260 >            # if not self.cfg_params_dataset.has_key("USER.logdir") and self.logdir:
261 >            #     options["-USER.logdir"]=self.logdir+"/"+sec
262 >            # # also for outputdir
263 >            # if not self.cfg_params_dataset.has_key("USER.outputdir") and self.outputdir:
264 >            #     options["-USER.outputdir"]=self.outputdir+"/"+sec
265              # also for publish_data_name
266 <            if not self.cfg_params_dataset.has_key("USER.publish_data_name") and self.publish_data_name:
267 <                options["-USER.publish_data_name"]=self.publish_data_name+"_"+sec
266 >            # print sec," ",self.cfg_params_dataset[sec], self.cfg_params_dataset[sec].has_key("user.publish_data_name")
267 >            # if not self.cfg_params_dataset[sec].has_key("user.publish_data_name") and self.publish_data_name:
268 >            #     options["-USER.publish_data_name"]=self.publish_data_name+"_"+sec
269 >            #     print "adding user.publish_data_name", self.cfg_params_dataset.has_key("user.publish_data_name")
270  
271              # Input options (command)
272              for opt in self.opts:
# Line 261 | Line 277 | class MultiCrab:
277                          del options['-cfg']
278                      pass
279  
280 +
281              # write crab command to be executed later...
282              cmd='crab '
283              for o in options:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines