Fix up MD5 and Git capitalization/typeface and some Git vocabulary
[arvados.git] / doc / api / schema / PipelineTemplate.html.textile.liquid
1 ---
2 layout: default
3 navsection: api
4 navmenu: Schema
5 title: PipelineTemplate
6 ...
7
8 Pipelines consist of a set of "components".  Each component is an Arvados job submission.  "Parameters for job submissions are described on the job method page.":{{site.baseurl}}/api/methods/jobs.html#create
9
10 table(table table-bordered table-condensed).
11 |_. Attribute    |_. Type |_. Accepted values                           |_. Required|_. Description|
12 |name            |string  |any                                          |yes        |The human-readable name of the pipeline template.|
13 |components      |object  |JSON object containing job submission objects|yes        |The component jobs that make up the pipeline, with the component name as the key. |
14
15 h3. Script parameters
16
17 When used in a pipeline, each parameter in the 'script_parameters' attribute of a component job can specify that the input parameter must be supplied by the user, or the input parameter should be linked to the output of another component.  To do this, the value of the parameter should be JSON object containing one of the following attributes:
18
19 table(table table-bordered table-condensed).
20 |_. Attribute    |_. Type |_. Accepted values                               |_. Description|
21 |default         |any     |any                                              |The default value for this parameter.|
22 |required        |boolean |true or false                                    |Specifies whether the parameter is required to have a value or not.|
23 |dataclass       |string  |One of 'Collection', 'File' [1], 'number', or 'text' |Data type of this parameter.|
24 |output_of       |string  |the name of another component in the pipeline    |Specifies that the value of this parameter should be set to the 'output' attribute of the job that corresponds to the specified component.|
25
26 The 'output_of' parameter is especially important, as this is how components are actually linked together to form a pipeline.  Component jobs that depend on the output of other components do not run until the parent job completes and has produced output.  If the parent job fails, the entire pipeline fails.
27
28 fn1. The 'File' type refers to a specific file within a Keep collection in the form 'collection_hash/filename', for example '887cd41e9c613463eab2f0d885c6dd96+83/bob.txt'.
29
30 h3. Examples
31
32 This is a pipeline named "Filter MD5 hash values" with two components, "do_hash" and "filter".  The "input" script parameter of the "do_hash" component is required to be filled in by the user, and the expected data type is "Collection".  This also specifies that the "input" script parameter of the "filter" component is the output of "do_hash", so "filter" will not run until "do_hash" completes successfully.  When the pipeline runs, past jobs that meet the criteria described above may be substituted for either or both components to avoid redundant computation.
33
34 <notextile><pre>
35 {
36   "name": "Filter MD5 hash values",
37   "components": {
38     "do_hash": {
39       "script": "hash.py",
40       "repository": "<b>you</b>",
41       "script_version": "master",
42       "script_parameters": {
43         "input": {
44           "required": true,
45           "dataclass": "Collection"
46         }
47       },
48     },
49     "filter": {
50       "script": "0-filter.py",
51       "repository": "<b>you</b>",
52       "script_version": "master",
53       "script_parameters": {
54         "input": {
55           "output_of": "do_hash"
56         }
57       },
58     }
59   }
60 }
61 </pre></notextile>
62
63 This pipeline consists of three components.  The components "thing1" and "thing2" both depend on "cat_in_the_hat".  Once the "cat_in_the_hat" job is complete, both "thing1" and "thing2" can run in parallel, because they do not depend on each other.
64
65 <notextile><pre>
66 {
67   "name": "Wreck the house",
68   "components": {
69     "cat_in_the_hat": {
70       "script": "cat.py",
71       "repository": "<b>you</b>",
72       "script_version": "master",
73       "script_parameters": { }
74     },
75     "thing1": {
76       "script": "thing1.py",
77       "repository": "<b>you</b>",
78       "script_version": "master",
79       "script_parameters": {
80         "input": {
81           "output_of": "cat_in_the_hat"
82         }
83       },
84     },
85     "thing2": {
86       "script": "thing2.py",
87       "repository": "<b>you</b>",
88       "script_version": "master",
89       "script_parameters": {
90         "input": {
91           "output_of": "cat_in_the_hat"
92         }
93       },
94     },
95   }
96 }
97 </pre></notextile>
98
99 This pipeline consists of three components.  The component "cleanup" depends on "thing1" and "thing2".  Both "thing1" and "thing2" are started immediately and can run in parallel, because they do not depend on each other, but "cleanup" cannot begin until both "thing1" and "thing2" have completed.
100
101 <notextile><pre>
102 {
103   "name": "Clean the house",
104   "components": {
105     "thing1": {
106       "script": "thing1.py",
107       "repository": "<b>you</b>",
108       "script_version": "master",
109       "script_parameters": { }
110     },
111     "thing2": {
112       "script": "thing2.py",
113       "repository": "<b>you</b>",
114       "script_version": "master",
115       "script_parameters": { }
116     },
117     "cleanup": {
118       "script": "cleanup.py",
119       "repository": "<b>you</b>",
120       "script_version": "master",
121       "script_parameters": {
122         "mess1": {
123           "output_of": "thing1"
124         },
125         "mess2": {
126           "output_of": "thing2"
127         }
128       }
129     }
130   }
131 }
132 </pre></notextile>
133
134
135
136 h2. Methods
137
138 See "REST methods for working with Arvados resources":{{site.baseurl}}/api/methods.html
139
140 API endpoint base: @https://{{ site.arvados_api_host }}/arvados/v1/pipeline_templates@
141
142 h2. Creation
143
144 h3. Prerequisites
145
146 Prerequisites for creating a PipelineTemplate.
147
148 h3. Side effects
149
150 Side effects of creating a PipelineTemplate.
151
152 h2. Resources
153
154 Each PipelineTemplate has, in addition to the usual "attributes of Arvados resources":{{site.baseurl}}/api/resources.html:
155
156 table(table table-bordered table-condensed).
157 |_. Attribute|_. Type|_. Description|_. Example|
158 |name|string|||
159 |components|Hash|||
160 |updated_at|datetime|||