3 from tools
import loadCmsProcess
4 from DTWorkflow
import DTWorkflow
5 from DTTtrigWorkflow
import DTttrigWorkflow
6 from DTVdriftWorkflow
import DTvdriftWorkflow
9 log = logging.getLogger(__name__)
13 """ This class serves as a top level helper to perform all available 14 workflows. Additional workflow classes should use the naming scheme 15 DT${WORKFLOWNAME}Workflow and implement a classmethod function add_parser_options. 17 available_workflows = [
"ttrig",
"vdrift"]
25 class_name =
"DT" + self.options.workflow +
"Workflow" 26 workflow_class = eval(class_name)
27 workflow_class_instance = workflow_class(self.
options)
28 workflow_class_instance.run()
29 return workflow_class_instance.local_path
33 if not "/crabclient/3" in os.environ[
"PATH"]:
40 command = [
'bash',
'-c',
'unset module;source /cvmfs/cms.cern.ch/crab3/crab.sh && env']
41 proc = subprocess.Popen(command, stdout = subprocess.PIPE)
43 print 'setting up crab' 44 for line
in proc.stdout:
45 (key, _, value) = line.partition(
"=")
46 os.environ[key] = value.replace(
"\n",
"")
47 for path
in os.environ[
'PYTHONPATH'].
split(
':'):
53 workflow_parser = DTWorkflow.add_parser_options(parser)
54 for workflow
in cls.available_workflows:
55 class_name =
"DT" + workflow +
"Workflow" 57 workflow_class = eval( class_name )
58 workflow_class.add_parser_options(workflow_parser)
60 log.error(
"No class with name: %s exists bot workflow exists in %s" %
61 (class_name, DTCalibrationWorker)
def __init__(self, options)
def add_arguments(cls, parser)