Fix #10133, use "resolved" (keep reference) instead of target (filesystem
[arvados.git] / sdk / cwl / arvados_cwl / runner.py
index bdd80771ff224392516fc216a6e25d0248f3c211..4e91d6628a337d7e549220ec76887c19ec60ccb5 100644 (file)
@@ -23,6 +23,10 @@ logger = logging.getLogger('arvados.cwl-runner')
 
 cwltool.draft2tool.ACCEPTLIST_RE = re.compile(r"^[a-zA-Z0-9._+-]+$")
 
+def del_listing(obj):
+    if obj.get("location", "").startswith("keep:") and "listing" in obj:
+        del obj["listing"]
+
 def upload_dependencies(arvrunner, name, document_loader,
                         workflowobj, uri, loadref_run):
     """Upload the dependencies of the workflowobj document to Keep.
@@ -80,8 +84,8 @@ def upload_dependencies(arvrunner, name, document_loader,
                            name=name)
 
     def setloc(p):
-        if not p["location"].startswith("_:"):
-            p["location"] = mapper.mapper(p["location"]).target
+        if not p["location"].startswith("_:") and not p["location"].startswith("keep:"):
+            p["location"] = mapper.mapper(p["location"]).resolved
     adjustFileObjs(workflowobj, setloc)
     adjustDirObjs(workflowobj, setloc)
 
@@ -129,6 +133,8 @@ class Runner(object):
                                         self.job_order.get("id", "#"),
                                         False)
 
+        adjustDirObjs(self.job_order, del_listing)
+
         if "id" in self.job_order:
             del self.job_order["id"]