import ruamel.yaml as yaml
-from .runner import upload_dependencies, packed_workflow, upload_workflow_collection, trim_anonymous_location, remove_redundant_fields
+from .runner import (upload_dependencies, packed_workflow, upload_workflow_collection,
+ trim_anonymous_location, remove_redundant_fields, discover_secondary_files)
from .pathmapper import ArvPathMapper, trim_listing
from .arvtool import ArvadosCommandTool
from .perf import Perf
raise WorkflowException("%s object must have 'id'" % (self.tool["class"]))
document_loader, workflowobj, uri = (self.doc_loader, self.doc_loader.fetch(self.tool["id"]), self.tool["id"])
+ discover_secondary_files(self.tool["inputs"], joborder)
+
with Perf(metrics, "subworkflow upload_deps"):
upload_dependencies(self.arvrunner,
os.path.basename(joborder.get("id", "#")),
packed["http://schema.org/version"] = githash
-def upload_job_order(arvrunner, name, tool, job_order):
- """Upload local files referenced in the input object and return updated input
- object with 'location' updated to the proper keep references.
- """
-
- for t in tool.tool["inputs"]:
+def discover_secondary_files(inputs, job_order):
+ for t in inputs:
def setSecondary(fileobj):
if isinstance(fileobj, dict) and fileobj.get("class") == "File":
if "secondaryFiles" not in fileobj:
if shortname(t["id"]) in job_order and t.get("secondaryFiles"):
setSecondary(job_order[shortname(t["id"])])
+def upload_job_order(arvrunner, name, tool, job_order):
+ """Upload local files referenced in the input object and return updated input
+ object with 'location' updated to the proper keep references.
+ """
+
+ discover_secondary_files(tool.tool["inputs"], job_order)
+
jobmapper = upload_dependencies(arvrunner,
name,
tool.doc_loader,
out: out
tool: wf/runin-wf.cwl
doc: "RunInSingleContainer cwl.input.json needs to be consistent with pathmapper manipulations"
+
+- job: secondary/wf-job.yml
+ output: {}
+ tool: secondary/wf.cwl
+ doc: "RunInSingleContainer applies secondaryFile discovery & manipulation before generating cwl.input.yml"
--- /dev/null
+cwlVersion: v1.0
+class: CommandLineTool
+inputs:
+ i:
+ type: File
+ inputBinding:
+ position: 1
+ secondaryFiles:
+ - .fai
+outputs: []
+arguments: [ls, $(inputs.i), $(inputs.i.path).fai]
--- /dev/null
+cwlVersion: v1.0
+class: Workflow
+$namespaces:
+ arv: "http://arvados.org/cwl#"
+ cwltool: "http://commonwl.org/cwltool#"
+inputs:
+ i:
+ type: File
+ secondaryFiles:
+ - .fai
+outputs: []
+steps:
+ step1:
+ in:
+ i: i
+ out: []
+ run: ls.cwl
--- /dev/null
+i:
+ class: File
+ location: keep:f225e6259bdd63bc7240599648dde9f1+97/hg19.fa
--- /dev/null
+cwlVersion: v1.0
+class: Workflow
+$namespaces:
+ arv: "http://arvados.org/cwl#"
+ cwltool: "http://commonwl.org/cwltool#"
+requirements:
+ SubworkflowFeatureRequirement: {}
+inputs:
+ i:
+ type: File
+ # secondaryFiles:
+ # - .fai
+ # - .ann
+ # - .amb
+outputs: []
+steps:
+ step1:
+ in:
+ i: i
+ out: []
+ run: sub.cwl
+ requirements:
+ arv:RunInSingleContainer: {}