8465: arvados-cwl-runner support for stdin and stderr redirection with containers.
authorPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 11 Apr 2017 17:40:30 +0000 (13:40 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 11 Apr 2017 17:40:30 +0000 (13:40 -0400)
sdk/cwl/arvados_cwl/__init__.py
sdk/cwl/arvados_cwl/arvcontainer.py

index 1e109920fabaae4fa208615cbbaabd8f9161c3a1..87c3db1df68abad933d9db21a13c2aaea7e02de9 100644 (file)
@@ -203,12 +203,6 @@ class ArvCwlRunner(object):
         if isinstance(obj, dict):
             if obj.get("writable"):
                 raise SourceLine(obj, "writable", UnsupportedRequirement).makeError("InitialWorkDir feature 'writable: true' not supported")
-            if obj.get("class") == "CommandLineTool":
-                if self.work_api == "containers":
-                    if obj.get("stdin"):
-                        raise SourceLine(obj, "stdin", UnsupportedRequirement).makeError("Stdin redirection currently not suppported with --api=containers")
-                    if obj.get("stderr"):
-                        raise SourceLine(obj, "stderr", UnsupportedRequirement).makeError("Stderr redirection currently not suppported with --api=containers")
             if obj.get("class") == "DockerRequirement":
                 if obj.get("dockerOutputDirectory"):
                     # TODO: can be supported by containers API, but not jobs API.
index 3090936121daf32d9ffa61744d1f5b932b73590a..dc8e101acf6a5c8f9b8c74f2359ffd8278e5cca2 100644 (file)
@@ -114,10 +114,14 @@ class ArvadosContainer(object):
             container_request["environment"].update(self.environment)
 
         if self.stdin:
-            raise UnsupportedRequirement("Stdin redirection currently not suppported")
+            sp = self.stdin[6:].split("/", 1)
+            mounts["stdin"] = {"kind": "collection",
+                                "portable_data_hash": sp[0],
+                                "path": sp[1]}
 
         if self.stderr:
-            raise UnsupportedRequirement("Stderr redirection currently not suppported")
+            mounts["stderr"] = {"kind": "file",
+                                "path": "%s/%s" % (self.outdir, self.stderr)}
 
         if self.stdout:
             mounts["stdout"] = {"kind": "file",