9615: Add check_writable to check for "writable" field and raise UnsupportedRequirement. 9615-cwl-writable-unsupported
authorPeter Amstutz <peter.amstutz@curoverse.com>
Thu, 4 Aug 2016 15:36:56 +0000 (11:36 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Thu, 4 Aug 2016 15:36:56 +0000 (11:36 -0400)
sdk/cwl/arvados_cwl/__init__.py

index ce1cc26eeeaaf3236d7936d74cb249ef9fec8c89..18fb8c92e850f21e305fd1539dfdf38494c8371b 100644 (file)
@@ -101,9 +101,21 @@ class ArvCwlRunner(object):
     def add_uploaded(self, src, pair):
         self.uploaded[src] = pair
 
+    def check_writable(self, obj):
+        if isinstance(obj, dict):
+            if obj.get("writable"):
+                raise UnsupportedRequirement("InitialWorkDir feature 'writable: true' not supported")
+            for v in obj.itervalues():
+                self.check_writable(v)
+        if isinstance(obj, list):
+            for v in obj:
+                self.check_writable(v)
+
     def arvExecutor(self, tool, job_order, **kwargs):
         self.debug = kwargs.get("debug")
 
+        tool.visit(self.check_writable)
+
         if kwargs.get("quiet"):
             logger.setLevel(logging.WARN)
             logging.getLogger('arvados.arv-run').setLevel(logging.WARN)