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