X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a894a61cc9004e184bc63f9f0a785f555d6c6829..3af38eca348413c6f11f6526b2ee2ca7cb53e348:/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 ee1834779d..dce1bd4d02 100644 --- a/sdk/cwl/arvados_cwl/arv-cwl-schema.yml +++ b/sdk/cwl/arvados_cwl/arv-cwl-schema.yml @@ -1,7 +1,78 @@ +# 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: cwltool:TimeLimit + type: record + inVocab: false + extends: cwl:ProcessRequirement + doc: | + Set an upper limit on the execution time of a CommandLineTool or + ExpressionTool. A tool execution which exceeds the time limit may + be preemptively terminated and considered failed. May also be + used by batch systems to make scheduling decisions. + fields: + - name: class + type: string + doc: "Always 'TimeLimit'" + jsonldPredicate: + "_id": "@type" + "_type": "@vocab" + - name: timelimit + type: [long, string] + doc: | + The time limit, in seconds. A time limit of zero means no + time limit. Negative time limits are an error. + - 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. @@ -38,6 +109,8 @@ $graph: - name: RuntimeConstraints type: record + extends: cwl:ProcessRequirement + inVocab: false doc: | Set Arvados-specific runtime hints. fields: @@ -60,8 +133,28 @@ $graph: 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 @@ -73,3 +166,97 @@ $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 + +- name: WorkflowRunnerResources + type: record + extends: cwl:ProcessRequirement + inVocab: false + doc: | + Specify memory or cores resource request for the CWL runner process itself. + fields: + class: + type: string + doc: "Always 'arv:WorkflowRunnerResources'" + jsonldPredicate: + _id: "@type" + _type: "@vocab" + ramMin: + type: int? + doc: Minimum RAM, in mebibytes (2**20) + jsonldPredicate: "https://w3id.org/cwl/cwl#ResourceRequirement/ramMin" + coresMin: + type: int? + doc: Minimum cores allocated to cwl-runner + jsonldPredicate: "https://w3id.org/cwl/cwl#ResourceRequirement/coresMin" + keep_cache: + type: int? + doc: | + Size of collection metadata cache for the workflow runner, in + MiB. Default 256 MiB. Will be added on to the RAM request + when determining node size to request. + jsonldPredicate: "http://arvados.org/cwl#RuntimeConstraints/keep_cache" + +- name: ClusterTarget + type: record + extends: cwl:ProcessRequirement + inVocab: false + doc: | + Specify where a workflow step should run + fields: + class: + type: string + doc: "Always 'arv:ClusterTarget'" + jsonldPredicate: + _id: "@type" + _type: "@vocab" + cluster_id: + type: string? + doc: The cluster to run the container + project_uuid: + type: string? + doc: The project that will own the container requests and intermediate collections