10028: replace _____-uuid-prefix with site_config_uuid_prefix-uuid-prefix
[arvados.git] / sdk / cwl / arvados_cwl / arvworkflow.py
index 0e1ad9fbaa005c54236991d149387771fdaed6d7..8e45890a8d6226d9387524e1dc330effe900e163 100644 (file)
@@ -1,33 +1,38 @@
 import os
 import json
+import copy
 
 from cwltool.pack import pack
 from cwltool.load_tool import fetch_document
 from cwltool.process import shortname
 
+import ruamel.yaml as yaml
+
 from .runner import upload_docker, upload_dependencies
 
 def make_workflow(arvRunner, tool, job_order, project_uuid, update_uuid):
     upload_docker(arvRunner, tool)
 
     document_loader, workflowobj, uri = (tool.doc_loader, tool.doc_loader.fetch(tool.tool["id"]), tool.tool["id"])
-    for inp in workflowobj["inputs"]:
+
+    packed = pack(document_loader, workflowobj, uri, tool.metadata)
+
+    main = [p for p in packed["$graph"] if p["id"] == "#main"][0]
+    for inp in main["inputs"]:
         sn = shortname(inp["id"])
         if sn in job_order:
             inp["default"] = job_order[sn]
 
-    packed = pack(document_loader, workflowobj, uri, tool.metadata)
-
     name = os.path.basename(tool.tool["id"])
     upload_dependencies(arvRunner, name, document_loader,
-                        packed, uri, "keep:", False)
+                        packed, uri, False)
 
     body = {
         "workflow": {
             "owner_uuid": project_uuid,
             "name": tool.tool.get("label", name),
             "description": tool.tool.get("doc", ""),
-            "workflow":json.dumps(packed, sort_keys=True, indent=4)
+            "definition":yaml.safe_dump(packed)
         }}
 
     if update_uuid: