d26a6b28ec8b82f08c4034e09a0688b9a6247398
[arvados.git] / sdk / cwl / tests / federation / arvbox / start.cwl
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 cwlVersion: v1.0
6 class: CommandLineTool
7 $namespaces:
8   arv: "http://arvados.org/cwl#"
9   cwltool: "http://commonwl.org/cwltool#"
10 inputs:
11   container_name: string
12   arvbox_data: Directory
13   arvbox_bin: File
14   branch:
15     type: string
16     default: master
17 outputs:
18   cluster_id:
19     type: string
20     outputBinding:
21       glob: status.txt
22       loadContents: true
23       outputEval: |
24         ${
25         var sp = self[0].contents.split("\n");
26         for (var i = 0; i < sp.length; i++) {
27           if (sp[i].startsWith("Cluster id: ")) {
28             return sp[i].substr(12);
29           }
30         }
31         }
32   container_host:
33     type: string
34     outputBinding:
35       glob: status.txt
36       loadContents: true
37       outputEval: |
38         ${
39         var sp = self[0].contents.split("\n");
40         for (var i = 0; i < sp.length; i++) {
41           if (sp[i].startsWith("Container IP: ")) {
42             return sp[i].substr(14)+":8000";
43           }
44         }
45         }
46   superuser_token:
47     type: string
48     outputBinding:
49       glob: superuser_token.txt
50       loadContents: true
51       outputEval: $(self[0].contents.trim())
52   arvbox_data_out:
53     type: Directory
54     outputBinding:
55       outputEval: $(inputs.arvbox_data)
56 requirements:
57   EnvVarRequirement:
58     envDef:
59       ARVBOX_CONTAINER: $(inputs.container_name)
60       ARVBOX_DATA: $(inputs.arvbox_data.path)
61   ShellCommandRequirement: {}
62   InitialWorkDirRequirement:
63     listing:
64       - entry: $(inputs.arvbox_data)
65         entryname: $(inputs.container_name)
66         writable: true
67   cwltool:InplaceUpdateRequirement:
68     inplaceUpdate: true
69   InlineJavascriptRequirement: {}
70 arguments:
71   - shellQuote: false
72     valueFrom: |
73       set -ex
74       mkdir -p $ARVBOX_DATA
75       if ! test -d $ARVBOX_DATA/arvados ; then
76         cd $ARVBOX_DATA
77         git clone https://github.com/curoverse/arvados.git
78       fi
79       cd $ARVBOX_DATA/arvados
80       gitver=`git rev-parse HEAD`
81       git fetch
82       git checkout -f $(inputs.branch)
83       git pull
84       pulled=`git rev-parse HEAD`
85       git --no-pager log -n1 $pulled
86
87       cd $(runtime.outdir)
88       if test "$gitver" = "$pulled" ; then
89         $(inputs.arvbox_bin.path) start dev
90       else
91         $(inputs.arvbox_bin.path) restart dev
92       fi
93       $(inputs.arvbox_bin.path) status > status.txt
94       $(inputs.arvbox_bin.path) cat /var/lib/arvados/superuser_token > superuser_token.txt