Merge branch '2411-check-copyright'
[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: RunInSingleContainer
31   type: record
32   extends: cwl:ProcessRequirement
33   inVocab: false
34   doc: |
35     Indicates that a subworkflow should run in a single container
36     and not be scheduled as separate steps.
37   fields:
38     - name: class
39       type: string
40       doc: "Always 'arv:RunInSingleContainer'"
41       jsonldPredicate:
42         _id: "@type"
43         _type: "@vocab"
44
45 - name: OutputDirType
46   type: enum
47   symbols:
48     - local_output_dir
49     - keep_output_dir
50   doc:
51     - |
52       local_output_dir: Use regular file system local to the compute node.
53       There must be sufficient local scratch space to store entire output;
54       specify this with `outdirMin` of `ResourceRequirement`.  Files are
55       batch uploaded to Keep when the process completes.  Most compatible, but
56       upload step can be time consuming for very large files.
57     - |
58       keep_output_dir: Use writable Keep mount.  Files are streamed to Keep as
59       they are written.  Does not consume local scratch space, but does consume
60       RAM for output buffers (up to 192 MiB per file simultaneously open for
61       writing.)  Best suited to processes which produce sequential output of
62       large files (non-sequential writes may produced fragmented file
63       manifests).  Supports regular files and directories, does not support
64       special files such as symlinks, hard links, named pipes, named sockets,
65       or device nodes.
66
67
68 - name: RuntimeConstraints
69   type: record
70   extends: cwl:ProcessRequirement
71   inVocab: false
72   doc: |
73     Set Arvados-specific runtime hints.
74   fields:
75     - name: class
76       type: string
77       doc: "Always 'arv:RuntimeConstraints'"
78       jsonldPredicate:
79         _id: "@type"
80         _type: "@vocab"
81     - name: keep_cache
82       type: int?
83       doc: |
84         Size of file data buffer for Keep mount in MiB. Default is 256
85         MiB. Increase this to reduce cache thrashing in situations such as
86         accessing multiple large (64+ MiB) files at the same time, or
87         performing random access on a large file.
88     - name: outputDirType
89       type: OutputDirType?
90       doc: |
91         Preferred backing store for output staging.  If not specified, the
92         system may choose which one to use.
93
94 - name: PartitionRequirement
95   type: record
96   extends: cwl:ProcessRequirement
97   inVocab: false
98   doc: |
99     Select preferred compute partitions on which to run jobs.
100   fields:
101     - name: class
102       type: string
103       doc: "Always 'arv:PartitionRequirement'"
104       jsonldPredicate:
105         _id: "@type"
106         _type: "@vocab"
107     - name: partition
108       type:
109         - string
110         - string[]
111
112 - name: APIRequirement
113   type: record
114   extends: cwl:ProcessRequirement
115   inVocab: false
116   doc: |
117     Indicates that process wants to access to the Arvados API.  Will be granted
118     limited network access and have ARVADOS_API_HOST and ARVADOS_API_TOKEN set
119     in the environment.
120   fields:
121     - name: class
122       type: string
123       doc: "Always 'arv:APIRequirement'"
124       jsonldPredicate:
125         _id: "@type"
126         _type: "@vocab"
127
128 - name: IntermediateOutput
129   type: record
130   extends: cwl:ProcessRequirement
131   inVocab: false
132   doc: |
133     Specify desired handling of intermediate output collections.
134   fields:
135     class:
136       type: string
137       doc: "Always 'arv:IntermediateOutput'"
138       jsonldPredicate:
139         _id: "@type"
140         _type: "@vocab"
141     outputTTL:
142       type: int
143       doc: |
144         If the value is greater than zero, consider intermediate output
145         collections to be temporary and should be automatically
146         trashed. Temporary collections will be trashed `outputTTL` seconds
147         after creation.  A value of zero means intermediate output should be
148         retained indefinitely (this is the default behavior).
149
150         Note: arvados-cwl-runner currently does not take workflow dependencies
151         into account when setting the TTL on an intermediate output
152         collection. If the TTL is too short, it is possible for a collection to
153         be trashed before downstream steps that consume it are started.  The
154         recommended minimum value for TTL is the expected duration of the
155         entire the workflow.
156
157 - name: ReuseRequirement
158   type: record
159   extends: cwl:ProcessRequirement
160   inVocab: false
161   doc: |
162     Enable/disable work reuse for current process.  Default true (work reuse enabled).
163   fields:
164     - name: class
165       type: string
166       doc: "Always 'arv:ReuseRequirement'"
167       jsonldPredicate:
168         _id: "@type"
169         _type: "@vocab"
170     - name: enableReuse
171       type: boolean