10129: Rename del_listing to trim_listing and add docstring about what it is
authorPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 27 Sep 2016 20:30:27 +0000 (16:30 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 27 Sep 2016 20:30:27 +0000 (16:30 -0400)
for.

sdk/cwl/arvados_cwl/arvworkflow.py
sdk/cwl/arvados_cwl/runner.py

index 3bb0a34197594774f81049ff5ccdf606dc2dfcde..f4ce44670dd7f1f9dd282158196af8b214874982 100644 (file)
@@ -11,7 +11,7 @@ from cwltool.pathmapper import adjustFileObjs, adjustDirObjs
 
 import ruamel.yaml as yaml
 
-from .runner import upload_docker, upload_dependencies, del_listing
+from .runner import upload_docker, upload_dependencies, trim_listing
 from .arvtool import ArvadosCommandTool
 
 logger = logging.getLogger('arvados.cwl-runner')
@@ -23,7 +23,7 @@ def upload_workflow(arvRunner, tool, job_order, project_uuid, update_uuid):
 
     packed = pack(document_loader, workflowobj, uri, tool.metadata)
 
-    adjustDirObjs(job_order, del_listing)
+    adjustDirObjs(job_order, trim_listing)
 
     main = [p for p in packed["$graph"] if p["id"] == "#main"][0]
     for inp in main["inputs"]:
index aafe7c3dd4560d7c3e48c4bbeba99012159b36b4..07f85bbc479d7104cb9308f3013eea75c829b758 100644 (file)
@@ -23,7 +23,16 @@ logger = logging.getLogger('arvados.cwl-runner')
 
 cwltool.draft2tool.ACCEPTLIST_RE = re.compile(r"^[a-zA-Z0-9._+-]+$")
 
-def del_listing(obj):
+def trim_listing(obj):
+    """Remove 'listing' field from Directory objects that are keep references.
+
+    When Directory objects represent Keep references, it redundant and
+    potentially very expensive to pass fully enumerated Directory objects
+    between instances of cwl-runner (e.g. a submitting a job, or using the
+    RunInSingleContainer feature), so delete the 'listing' field when it is
+    safe to do so.
+    """
+
     if obj.get("location", "").startswith("keep:") and "listing" in obj:
         del obj["listing"]
     if obj.get("location", "").startswith("_:"):
@@ -135,7 +144,7 @@ class Runner(object):
                                         self.job_order.get("id", "#"),
                                         False)
 
-        adjustDirObjs(self.job_order, del_listing)
+        adjustDirObjs(self.job_order, trim_listing)
 
         if "id" in self.job_order:
             del self.job_order["id"]