9442: Fix runtime.outdir for containers.
authorPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 28 Jun 2016 17:15:02 +0000 (13:15 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 28 Jun 2016 17:15:02 +0000 (13:15 -0400)
sdk/cwl/arvados_cwl/arvcontainer.py
sdk/cwl/arvados_cwl/arvtool.py

index 94a7579f202a62d88f7a69481e4f2fe65dfa0f7b..9bf93e7c5661420727ff01ad3da9e16aaec40271 100644 (file)
@@ -29,14 +29,14 @@ class ArvadosContainer(object):
             "command": self.command_line,
             "owner_uuid": self.arvrunner.project_uuid,
             "name": self.name,
-            "output_path": "/var/spool/cwl",
-            "cwd": "/var/spool/cwl",
+            "output_path": self.outdir,
+            "cwd": self.outdir,
             "priority": 1,
             "state": "Committed"
         }
         runtime_constraints = {}
         mounts = {
-            "/var/spool/cwl": {
+            self.outdir: {
                 "kind": "tmp"
             }
         }
@@ -60,7 +60,7 @@ class ArvadosContainer(object):
 
         if self.stdout:
             mounts["stdout"] = {"kind": "file",
-                                "path": "/var/spool/cwl/%s" % (self.stdout)}
+                                "path": "%s/%s" % (self.outdir, self.stdout)}
 
         (docker_req, docker_is_req) = get_feature(self, "DockerRequirement")
         if not docker_req:
@@ -114,7 +114,7 @@ class ArvadosContainer(object):
             try:
                 outputs = {}
                 if record["output"]:
-                    outputs = done.done(self, record, "/tmp", "/var/spool/cwl", "/keep")
+                    outputs = done.done(self, record, "/tmp", self.outdir, "/keep")
             except WorkflowException as e:
                 logger.error("Error while collecting container outputs:\n%s", e, exc_info=(e if self.arvrunner.debug else False))
                 processStatus = "permanentFail"
index 7347eacaacd3044367460b43b889f004600651fd..a2dffa675a164e296dc88e966f02de273f2f69c4 100644 (file)
@@ -30,5 +30,8 @@ class ArvadosCommandTool(CommandLineTool):
                                  **kwargs)
 
     def job(self, joborder, output_callback, **kwargs):
-        kwargs["outdir"] = "$(task.outdir)"
+        if self.work_api == "containers":
+            kwargs["outdir"] = "/var/spool/cwl"
+        elif self.work_api == "jobs":
+            kwargs["outdir"] = "$(task.outdir)"
         return super(ArvadosCommandTool, self).job(joborder, output_callback, **kwargs)