13822: Don't call list_sizes() in cloud client constructor.
[arvados.git] / sdk / cwl / arvados_cwl / arv-cwl-schema.yml
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 $base: "http://arvados.org/cwl#"
6 $namespaces:
7   cwl: "https://w3id.org/cwl/cwl#"
8   cwltool: "http://commonwl.org/cwltool#"
9 $graph:
10 - $import: https://w3id.org/cwl/CommonWorkflowLanguage.yml
11
12 - name: cwltool:LoadListingRequirement
13   type: record
14   extends: cwl:ProcessRequirement
15   inVocab: false
16   fields:
17     class:
18       type: string
19       doc: "Always 'LoadListingRequirement'"
20       jsonldPredicate:
21         "_id": "@type"
22         "_type": "@vocab"
23     loadListing:
24       type:
25         - "null"
26         - type: enum
27           name: LoadListingEnum
28           symbols: [no_listing, shallow_listing, deep_listing]
29
30 - name: cwltool:Secrets
31   type: record
32   inVocab: false
33   extends: cwl:ProcessRequirement
34   fields:
35     class:
36       type: string
37       doc: "Always 'Secrets'"
38       jsonldPredicate:
39         "_id": "@type"
40         "_type": "@vocab"
41     secrets:
42       type: string[]
43       doc: |
44         List one or more input parameters that are sensitive (such as passwords)
45         which will be deliberately obscured from logging.
46       jsonldPredicate:
47         "_type": "@id"
48         refScope: 0
49
50 - name: RunInSingleContainer
51   type: record
52   extends: cwl:ProcessRequirement
53   inVocab: false
54   doc: |
55     Indicates that a subworkflow should run in a single container
56     and not be scheduled as separate steps.
57   fields:
58     - name: class
59       type: string
60       doc: "Always 'arv:RunInSingleContainer'"
61       jsonldPredicate:
62         _id: "@type"
63         _type: "@vocab"
64
65 - name: OutputDirType
66   type: enum
67   symbols:
68     - local_output_dir
69     - keep_output_dir
70   doc:
71     - |
72       local_output_dir: Use regular file system local to the compute node.
73       There must be sufficient local scratch space to store entire output;
74       specify this with `outdirMin` of `ResourceRequirement`.  Files are
75       batch uploaded to Keep when the process completes.  Most compatible, but
76       upload step can be time consuming for very large files.
77     - |
78       keep_output_dir: Use writable Keep mount.  Files are streamed to Keep as
79       they are written.  Does not consume local scratch space, but does consume
80       RAM for output buffers (up to 192 MiB per file simultaneously open for
81       writing.)  Best suited to processes which produce sequential output of
82       large files (non-sequential writes may produced fragmented file
83       manifests).  Supports regular files and directories, does not support
84       special files such as symlinks, hard links, named pipes, named sockets,
85       or device nodes.
86
87
88 - name: RuntimeConstraints
89   type: record
90   extends: cwl:ProcessRequirement
91   inVocab: false
92   doc: |
93     Set Arvados-specific runtime hints.
94   fields:
95     - name: class
96       type: string
97       doc: "Always 'arv:RuntimeConstraints'"
98       jsonldPredicate:
99         _id: "@type"
100         _type: "@vocab"
101     - name: keep_cache
102       type: int?
103       doc: |
104         Size of file data buffer for Keep mount in MiB. Default is 256
105         MiB. Increase this to reduce cache thrashing in situations such as
106         accessing multiple large (64+ MiB) files at the same time, or
107         performing random access on a large file.
108     - name: outputDirType
109       type: OutputDirType?
110       doc: |
111         Preferred backing store for output staging.  If not specified, the
112         system may choose which one to use.
113
114 - name: PartitionRequirement
115   type: record
116   extends: cwl:ProcessRequirement
117   inVocab: false
118   doc: |
119     Select preferred compute partitions on which to run jobs.
120   fields:
121     - name: class
122       type: string
123       doc: "Always 'arv:PartitionRequirement'"
124       jsonldPredicate:
125         _id: "@type"
126         _type: "@vocab"
127     - name: partition
128       type:
129         - string
130         - string[]
131
132 - name: APIRequirement
133   type: record
134   extends: cwl:ProcessRequirement
135   inVocab: false
136   doc: |
137     Indicates that process wants to access to the Arvados API.  Will be granted
138     limited network access and have ARVADOS_API_HOST and ARVADOS_API_TOKEN set
139     in the environment.
140   fields:
141     - name: class
142       type: string
143       doc: "Always 'arv:APIRequirement'"
144       jsonldPredicate:
145         _id: "@type"
146         _type: "@vocab"
147
148 - name: IntermediateOutput
149   type: record
150   extends: cwl:ProcessRequirement
151   inVocab: false
152   doc: |
153     Specify desired handling of intermediate output collections.
154   fields:
155     class:
156       type: string
157       doc: "Always 'arv:IntermediateOutput'"
158       jsonldPredicate:
159         _id: "@type"
160         _type: "@vocab"
161     outputTTL:
162       type: int
163       doc: |
164         If the value is greater than zero, consider intermediate output
165         collections to be temporary and should be automatically
166         trashed. Temporary collections will be trashed `outputTTL` seconds
167         after creation.  A value of zero means intermediate output should be
168         retained indefinitely (this is the default behavior).
169
170         Note: arvados-cwl-runner currently does not take workflow dependencies
171         into account when setting the TTL on an intermediate output
172         collection. If the TTL is too short, it is possible for a collection to
173         be trashed before downstream steps that consume it are started.  The
174         recommended minimum value for TTL is the expected duration of the
175         entire the workflow.
176
177 - name: ReuseRequirement
178   type: record
179   extends: cwl:ProcessRequirement
180   inVocab: false
181   doc: |
182     Enable/disable work reuse for current process.  Default true (work reuse enabled).
183   fields:
184     - name: class
185       type: string
186       doc: "Always 'arv:ReuseRequirement'"
187       jsonldPredicate:
188         _id: "@type"
189         _type: "@vocab"
190     - name: enableReuse
191       type: boolean