Actions
Bug #12875
closedarvados-cwl-runner fails to validate when InitialWorkDirRequirement File is referenced by keep locator
Status:
Closed
Priority:
Normal
Assigned To:
-
Category:
-
Target version:
-
Story points:
-
Description
When an InitialWorkDirRequirement references a file which is specified by keep locator, I get the error:
Anonymous file object must have 'contents' and 'basename' fields.
If a CWL uses InitialWorkDirRequirement such as:
- class: InitialWorkDirRequirement
listing:
- entry: $(inputs.input)
entryname: $(inputs.input.basename)
This works with arvados-cwl-runner when providing input as a local file (which is then staged to keep). However, it does not work when provided as a keep reference.
For example:
$ cat arvados_faidx_test.yaml
input:
class: File
locator: keep:1747025feb654a015d8c3728df0aa1cc+2129/Homo_sapiens.GRCh38_full_analysis_set_plus_decoy_hla.fa
$ arvados-cwl-runner --api containers tools/samtools/samtools-faidx.cwl arvados_faidx_test.yaml
2017-12-28 20:36:17 cwltool INFO: /usr/bin/arvados-cwl-runner dc78526ba494973df7d298825e20503353e92adf 1.0.20171116210428, arvados-python-client 0.1.20171109204045, cwltool 1.0.20170928192020
2017-12-28 20:36:17 cwltool INFO: Resolved 'tools/samtools/samtools-faidx.cwl' to 'file:///tmp/arvados-pipelines/cwl/tools/samtools/samtools-faidx.cwl'
Traceback (most recent call last):
File "/usr/bin/arvados-cwl-runner", line 10, in <module>
sys.exit(main(sys.argv[1:], sys.stdout, sys.stderr))
File "/usr/lib/python2.7/dist-packages/arvados_cwl/__init__.py", line 773, in main
custom_schema_callback=add_arv_hints)
File "/usr/lib/python2.7/dist-packages/cwltool/main.py", line 898, in main
fetcher_constructor=fetcher_constructor)
File "/usr/lib/python2.7/dist-packages/cwltool/main.py", line 615, in load_job_order
normalizeFilesDirs(job_order_object)
File "/usr/lib/python2.7/dist-packages/cwltool/pathmapper.py", line 91, in normalizeFilesDirs
visit_class(job, ("File", "Directory"), addLocation)
File "/usr/lib/python2.7/dist-packages/cwltool/pathmapper.py", line 48, in visit_class
visit_class(rec[d], cls, op)
File "/usr/lib/python2.7/dist-packages/cwltool/pathmapper.py", line 46, in visit_class
op(rec)
File "/usr/lib/python2.7/dist-packages/cwltool/pathmapper.py", line 67, in addLocation
raise validate.ValidationException("Anonymous file object must have 'contents' and 'basename' fields.")
schema_salad.validate.ValidationException: Anonymous file object must have 'contents' and 'basename' fields.
Updated by Joshua Randall about 8 years ago
- Status changed from New to Closed
Oops - the problem here was that the input parameter specified "locator" instead of "location"
Actions