X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0821f5481edd016a3744bb50d97a9e5b99cd1a0f..6aef698e8f1f99aa0511afd21db86d4c7cf8b5da:/sdk/cwl/arvados_cwl/arv-cwl-schema.yml diff --git a/sdk/cwl/arvados_cwl/arv-cwl-schema.yml b/sdk/cwl/arvados_cwl/arv-cwl-schema.yml index 44b1b06a1a..2ab96c94f0 100644 --- a/sdk/cwl/arvados_cwl/arv-cwl-schema.yml +++ b/sdk/cwl/arvados_cwl/arv-cwl-schema.yml @@ -1,7 +1,56 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + $base: "http://arvados.org/cwl#" +$namespaces: + cwl: "https://w3id.org/cwl/cwl#" + cwltool: "http://commonwl.org/cwltool#" $graph: +- $import: https://w3id.org/cwl/CommonWorkflowLanguage.yml + +- name: cwltool:LoadListingRequirement + type: record + extends: cwl:ProcessRequirement + inVocab: false + fields: + class: + type: string + doc: "Always 'LoadListingRequirement'" + jsonldPredicate: + "_id": "@type" + "_type": "@vocab" + loadListing: + type: + - "null" + - type: enum + name: LoadListingEnum + symbols: [no_listing, shallow_listing, deep_listing] + +- name: cwltool:Secrets + type: record + inVocab: false + extends: cwl:ProcessRequirement + fields: + class: + type: string + doc: "Always 'Secrets'" + jsonldPredicate: + "_id": "@type" + "_type": "@vocab" + secrets: + type: string[] + doc: | + List one or more input parameters that are sensitive (such as passwords) + which will be deliberately obscured from logging. + jsonldPredicate: + "_type": "@id" + refScope: 0 + - name: RunInSingleContainer type: record + extends: cwl:ProcessRequirement + inVocab: false doc: | Indicates that a subworkflow should run in a single container and not be scheduled as separate steps. @@ -13,8 +62,33 @@ $graph: _id: "@type" _type: "@vocab" +- name: OutputDirType + type: enum + symbols: + - local_output_dir + - keep_output_dir + doc: + - | + local_output_dir: Use regular file system local to the compute node. + There must be sufficient local scratch space to store entire output; + specify this with `outdirMin` of `ResourceRequirement`. Files are + batch uploaded to Keep when the process completes. Most compatible, but + upload step can be time consuming for very large files. + - | + keep_output_dir: Use writable Keep mount. Files are streamed to Keep as + they are written. Does not consume local scratch space, but does consume + RAM for output buffers (up to 192 MiB per file simultaneously open for + writing.) Best suited to processes which produce sequential output of + large files (non-sequential writes may produced fragmented file + manifests). Supports regular files and directories, does not support + special files such as symlinks, hard links, named pipes, named sockets, + or device nodes. + + - name: RuntimeConstraints type: record + extends: cwl:ProcessRequirement + inVocab: false doc: | Set Arvados-specific runtime hints. fields: @@ -31,9 +105,34 @@ $graph: MiB. Increase this to reduce cache thrashing in situations such as accessing multiple large (64+ MiB) files at the same time, or performing random access on a large file. + - name: outputDirType + type: OutputDirType? + doc: | + Preferred backing store for output staging. If not specified, the + system may choose which one to use. + +- name: PartitionRequirement + type: record + extends: cwl:ProcessRequirement + inVocab: false + doc: | + Select preferred compute partitions on which to run jobs. + fields: + - name: class + type: string + doc: "Always 'arv:PartitionRequirement'" + jsonldPredicate: + _id: "@type" + _type: "@vocab" + - name: partition + type: + - string + - string[] - name: APIRequirement type: record + extends: cwl:ProcessRequirement + inVocab: false doc: | Indicates that process wants to access to the Arvados API. Will be granted limited network access and have ARVADOS_API_HOST and ARVADOS_API_TOKEN set @@ -45,3 +144,48 @@ $graph: jsonldPredicate: _id: "@type" _type: "@vocab" + +- name: IntermediateOutput + type: record + extends: cwl:ProcessRequirement + inVocab: false + doc: | + Specify desired handling of intermediate output collections. + fields: + class: + type: string + doc: "Always 'arv:IntermediateOutput'" + jsonldPredicate: + _id: "@type" + _type: "@vocab" + outputTTL: + type: int + doc: | + If the value is greater than zero, consider intermediate output + collections to be temporary and should be automatically + trashed. Temporary collections will be trashed `outputTTL` seconds + after creation. A value of zero means intermediate output should be + retained indefinitely (this is the default behavior). + + Note: arvados-cwl-runner currently does not take workflow dependencies + into account when setting the TTL on an intermediate output + collection. If the TTL is too short, it is possible for a collection to + be trashed before downstream steps that consume it are started. The + recommended minimum value for TTL is the expected duration of the + entire the workflow. + +- name: ReuseRequirement + type: record + extends: cwl:ProcessRequirement + inVocab: false + doc: | + Enable/disable work reuse for current process. Default true (work reuse enabled). + fields: + - name: class + type: string + doc: "Always 'arv:ReuseRequirement'" + jsonldPredicate: + _id: "@type" + _type: "@vocab" + - name: enableReuse + type: boolean