from cwltool.pack import pack
from cwltool.load_tool import fetch_document
from cwltool.process import shortname
-from cwltool.workflow import Workflow
+from cwltool.workflow import Workflow, WorkflowException
from cwltool.pathmapper import adjustFileObjs, adjustDirObjs
import ruamel.yaml as yaml
-from .runner import upload_docker, upload_dependencies
+from .runner import upload_docker, upload_dependencies, del_listing
from .arvtool import ArvadosCommandTool
logger = logging.getLogger('arvados.cwl-runner')
packed = pack(document_loader, workflowobj, uri, tool.metadata)
+ adjustDirObjs(job_order, del_listing)
+
main = [p for p in packed["$graph"] if p["id"] == "#main"][0]
for inp in main["inputs"]:
sn = shortname(inp["id"])
def keepmount(obj):
if obj["location"].startswith("keep:"):
obj["location"] = "/keep/" + obj["location"][5:]
+ if "listing" in obj:
+ del obj["listing"]
+ elif obj["location"].startswith("_:"):
+ del obj["location"]
else:
- raise Exception("Uh oh %s" % obj["location"])
- if "listing" in obj:
- del obj["listing"]
+ raise WorkflowException("Location is not a keep reference or a literal: '%s'" % obj["location"])
+
adjustFileObjs(joborder_keepmount, keepmount)
adjustDirObjs(joborder_keepmount, keepmount)
adjustFileObjs(packed, keepmount)