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