12764: arvados-cwl-runner support
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Wed, 10 Jan 2018 20:44:50 +0000 (15:44 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Mon, 29 Jan 2018 19:49:56 +0000 (14:49 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

sdk/cwl/arvados_cwl/__init__.py
sdk/cwl/arvados_cwl/arvcontainer.py

index e82fd9feef1f3d88c4068e7d0d6cbfee6232c3f2..892cb0a6309e048d5b970d5b39598eb331740f43 100644 (file)
@@ -224,8 +224,8 @@ class ArvCwlRunner(object):
 
     def check_features(self, obj):
         if isinstance(obj, dict):
-            if obj.get("writable"):
-                raise SourceLine(obj, "writable", UnsupportedRequirement).makeError("InitialWorkDir feature 'writable: true' not supported")
+            #if obj.get("writable"):
+            #    raise SourceLine(obj, "writable", UnsupportedRequirement).makeError("InitialWorkDir feature 'writable: true' not supported")
             if obj.get("class") == "DockerRequirement":
                 if obj.get("dockerOutputDirectory"):
                     # TODO: can be supported by containers API, but not jobs API.
index 014e1b94aae5b283ea851fd74e480dd5df926f55..deccc69753831e4bdd6aae73c2a55fefb321b525 100644 (file)
@@ -109,7 +109,7 @@ class ArvadosContainer(object):
                     for f, p in generatemapper.items():
                         if not p.target:
                             pass
-                        elif p.type in ("File", "Directory"):
+                        elif p.type in ("File", "Directory", "WritableFile", "WritableDirectory"):
                             source, path = self.arvrunner.fs_access.get_collection(p.resolved)
                             vwd.copy(path, p.target, source_collection=source)
                         elif p.type == "CreateFile":
@@ -126,6 +126,8 @@ class ArvadosContainer(object):
                     mounts[mountpoint] = {"kind": "collection",
                                           "portable_data_hash": vwd.portable_data_hash(),
                                           "path": p.target}
+                    if t.type.startswith("Writable"):
+                        mounts[mountpoint]["writable"] = True
 
         container_request["environment"] = {"TMPDIR": self.tmpdir, "HOME": self.outdir}
         if self.environment: