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