Merge branch '15296-cwl-cancel-procs' closes #15296
[arvados.git] / tools / arvbox / lib / arvbox / docker / api-setup.sh
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 exec 2>&1
7 set -ex -o pipefail
8
9 . /usr/local/lib/arvbox/common.sh
10
11 cd /usr/src/arvados/services/api
12
13 if test -s /var/lib/arvados/api_rails_env ; then
14   export RAILS_ENV=$(cat /var/lib/arvados/api_rails_env)
15 else
16   export RAILS_ENV=development
17 fi
18
19 set -u
20
21 uuid_prefix=$(cat /var/lib/arvados/api_uuid_prefix)
22
23 if ! test -s /var/lib/arvados/api_secret_token ; then
24     ruby -e 'puts rand(2**400).to_s(36)' > /var/lib/arvados/api_secret_token
25 fi
26 secret_token=$(cat /var/lib/arvados/api_secret_token)
27
28 if ! test -s /var/lib/arvados/blob_signing_key ; then
29     ruby -e 'puts rand(2**400).to_s(36)' > /var/lib/arvados/blob_signing_key
30 fi
31 blob_signing_key=$(cat /var/lib/arvados/blob_signing_key)
32
33 if ! test -s /var/lib/arvados/management_token ; then
34     ruby -e 'puts rand(2**400).to_s(36)' > /var/lib/arvados/management_token
35 fi
36 management_token=$(cat /var/lib/arvados/management_token)
37
38 sso_app_secret=$(cat /var/lib/arvados/sso_app_secret)
39
40 if test -s /var/lib/arvados/vm-uuid ; then
41     vm_uuid=$(cat /var/lib/arvados/vm-uuid)
42 else
43     vm_uuid=$uuid_prefix-2x53u-$(ruby -e 'puts rand(2**400).to_s(36)[0,15]')
44     echo $vm_uuid > /var/lib/arvados/vm-uuid
45 fi
46
47 cat >config/application.yml <<EOF
48 $RAILS_ENV:
49   uuid_prefix: $uuid_prefix
50   secret_token: $secret_token
51   blob_signing_key: $blob_signing_key
52   sso_app_secret: $sso_app_secret
53   sso_app_id: arvados-server
54   sso_provider_url: "https://$localip:${services[sso]}"
55   sso_insecure: false
56   workbench_address: "https://$localip/"
57   websocket_address: "wss://$localip:${services[websockets-ssl]}/websocket"
58   git_repo_ssh_base: "git@$localip:"
59   git_repo_https_base: "http://$localip:${services[arv-git-httpd]}/"
60   new_users_are_active: true
61   auto_admin_first_user: true
62   auto_setup_new_users: true
63   auto_setup_new_users_with_vm_uuid: $vm_uuid
64   auto_setup_new_users_with_repository: true
65   default_collection_replication: 1
66   docker_image_formats: ["v2"]
67   keep_web_service_url: https://$localip:${services[keep-web-ssl]}/
68   ManagementToken: $management_token
69 EOF
70
71 (cd config && /usr/local/lib/arvbox/yml_override.py application.yml)
72
73 if ! test -f /var/lib/arvados/api_database_pw ; then
74     ruby -e 'puts rand(2**128).to_s(36)' > /var/lib/arvados/api_database_pw
75 fi
76 database_pw=$(cat /var/lib/arvados/api_database_pw)
77
78 if ! (psql postgres -c "\du" | grep "^ arvados ") >/dev/null ; then
79     psql postgres -c "create user arvados with password '$database_pw'"
80 fi
81 psql postgres -c "ALTER USER arvados WITH SUPERUSER;"
82
83 sed "s/password:.*/password: $database_pw/" <config/database.yml.example >config/database.yml
84
85 if ! test -f /var/lib/arvados/api_database_setup ; then
86    bundle exec rake db:setup
87    touch /var/lib/arvados/api_database_setup
88 fi
89
90 if ! test -s /var/lib/arvados/superuser_token ; then
91     superuser_tok=$(bundle exec ./script/create_superuser_token.rb)
92     echo "$superuser_tok" > /var/lib/arvados/superuser_token
93 fi
94
95 rm -rf tmp
96 mkdir -p tmp/cache
97
98 bundle exec rake db:migrate