17267: Don't immediately fail if an extension schema is missing
authorPeter Amstutz <peter.amstutz@curii.com>
Mon, 18 Jan 2021 19:36:07 +0000 (14:36 -0500)
committerPeter Amstutz <peter.amstutz@curii.com>
Mon, 18 Jan 2021 19:36:07 +0000 (14:36 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

sdk/cwl/arvados_cwl/pathmapper.py
sdk/cwl/arvados_cwl/runner.py

index e0b2d25bc5e89155bccc09567998fe1afcda2888..4a91a7a836f3a289e4088619eaffc7e058eaeed2 100644 (file)
@@ -101,9 +101,12 @@ class ArvPathMapper(PathMapper):
                 if srcobj["class"] == "Directory" and "listing" not in srcobj:
                     raise WorkflowException("Directory literal '%s' is missing `listing`" % src)
             elif src.startswith("http:") or src.startswith("https:"):
-                keepref = http_to_keep(self.arvrunner.api, self.arvrunner.project_uuid, src)
-                logger.info("%s is %s", src, keepref)
-                self._pathmap[src] = MapperEnt(keepref, keepref, srcobj["class"], True)
+                try:
+                    keepref = http_to_keep(self.arvrunner.api, self.arvrunner.project_uuid, src)
+                    logger.info("%s is %s", src, keepref)
+                    self._pathmap[src] = MapperEnt(keepref, keepref, srcobj["class"], True)
+                except Exception as e:
+                    logger.warning(str(e))
             else:
                 self._pathmap[src] = MapperEnt(src, src, srcobj["class"], True)
 
index 42d4b552acc92bc8d76a3ffbbf32edc539682aad..7664abef7c52ffe95f3c114ac1ba1ee9d833f8f9 100644 (file)
@@ -427,7 +427,8 @@ def upload_dependencies(arvrunner, name, document_loader,
     if "$schemas" in workflowobj:
         sch = CommentedSeq()
         for s in workflowobj["$schemas"]:
-            sch.append(mapper.mapper(s).resolved)
+            if s in mapper:
+                sch.append(mapper.mapper(s).resolved)
         workflowobj["$schemas"] = sch
 
     return mapper