Merge branch '9446-refactor-keep-parallel-write-strategy'
[arvados.git] / sdk / cwl / arvados_cwl / arvtool.py
1 from cwltool.draft2tool import CommandLineTool
2 from .arvjob import ArvadosJob
3 from .arvcontainer import ArvadosContainer
4 from .pathmapper import ArvPathMapper
5
6 class ArvadosCommandTool(CommandLineTool):
7     """Wrap cwltool CommandLineTool to override selected methods."""
8
9     def __init__(self, arvrunner, toolpath_object, **kwargs):
10         super(ArvadosCommandTool, self).__init__(toolpath_object, **kwargs)
11         self.arvrunner = arvrunner
12         self.work_api = kwargs["work_api"]
13
14     def makeJobRunner(self):
15         if self.work_api == "containers":
16             return ArvadosContainer(self.arvrunner)
17         elif self.work_api == "jobs":
18             return ArvadosJob(self.arvrunner)
19
20     def makePathMapper(self, reffiles, **kwargs):
21         if self.work_api == "containers":
22             return ArvPathMapper(self.arvrunner, reffiles, kwargs["basedir"],
23                                  "/keep/%s",
24                                  "/keep/%s/%s",
25                                  **kwargs)
26         elif self.work_api == "jobs":
27             return ArvPathMapper(self.arvrunner, reffiles, kwargs["basedir"],
28                                  "$(task.keep)/%s",
29                                  "$(task.keep)/%s/%s",
30                                  **kwargs)