X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/966acb6ce28cdb4b0d30bdcd238cbbce73deaa87..1a3de5eab1062485e6985d43bc7c3e036254efb6:/sdk/cwl/arvados_cwl/arvtool.py diff --git a/sdk/cwl/arvados_cwl/arvtool.py b/sdk/cwl/arvados_cwl/arvtool.py index 7347eacaac..de329796e4 100644 --- a/sdk/cwl/arvados_cwl/arvtool.py +++ b/sdk/cwl/arvados_cwl/arvtool.py @@ -1,4 +1,8 @@ -from cwltool.draft2tool import CommandLineTool +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +from cwltool.command_line_tool import CommandLineTool from .arvjob import ArvadosJob from .arvcontainer import ArvadosContainer from .pathmapper import ArvPathMapper @@ -11,13 +15,14 @@ class ArvadosCommandTool(CommandLineTool): self.arvrunner = arvrunner self.work_api = kwargs["work_api"] - def makeJobRunner(self): + def makeJobRunner(self, **kwargs): if self.work_api == "containers": return ArvadosContainer(self.arvrunner) elif self.work_api == "jobs": return ArvadosJob(self.arvrunner) - def makePathMapper(self, reffiles, **kwargs): + def makePathMapper(self, reffiles, stagedir, **kwargs): + # type: (List[Any], unicode, **Any) -> PathMapper if self.work_api == "containers": return ArvPathMapper(self.arvrunner, reffiles, kwargs["basedir"], "/keep/%s", @@ -30,5 +35,17 @@ class ArvadosCommandTool(CommandLineTool): **kwargs) def job(self, joborder, output_callback, **kwargs): - kwargs["outdir"] = "$(task.outdir)" + if self.work_api == "containers": + dockerReq, is_req = self.get_requirement("DockerRequirement") + if dockerReq and dockerReq.get("dockerOutputDirectory"): + kwargs["outdir"] = dockerReq.get("dockerOutputDirectory") + kwargs["docker_outdir"] = dockerReq.get("dockerOutputDirectory") + else: + kwargs["outdir"] = "/var/spool/cwl" + kwargs["docker_outdir"] = "/var/spool/cwl" + elif self.work_api == "jobs": + kwargs["outdir"] = "$(task.outdir)" + kwargs["docker_outdir"] = "$(task.outdir)" + kwargs["tmpdir"] = "$(task.tmpdir)" + kwargs["docker_tmpdir"] = "$(task.tmpdir)" return super(ArvadosCommandTool, self).job(joborder, output_callback, **kwargs)