From 9deed27d5b61b2e51de1c70ae8baf06f18588e4d Mon Sep 17 00:00:00 2001 From: Ward Vandewege Date: Tue, 6 Oct 2020 21:06:01 -0400 Subject: [PATCH] 16955: a number of fixes to make the federation migration tests pass with arvbox again. Followup to #16267. Arvados-DCO-1.1-Signed-off-by: Ward Vandewege --- .../tests/federation/arvboxcwl/fed-config.cwl | 2 +- sdk/cwl/tests/federation/arvboxcwl/start.cwl | 2 +- .../tests/fed-migrate/fed-migrate.cwlex | 6 +-- tools/arvbox/bin/arvbox | 2 - .../arvbox/lib/arvbox/docker/Dockerfile.base | 2 + .../arvbox/lib/arvbox/docker/Dockerfile.demo | 11 ++++++ tools/arvbox/lib/arvbox/docker/api-setup.sh | 6 +-- tools/arvbox/lib/arvbox/docker/go-setup.sh | 17 ++++----- tools/arvbox/lib/arvbox/docker/keep-setup.sh | 38 +------------------ .../lib/arvbox/docker/service/api/run-service | 4 +- .../lib/arvbox/docker/service/doc/run-service | 2 +- .../docker/service/gitolite/run-service | 2 +- .../docker/service/workbench/run-service | 10 ++--- 13 files changed, 38 insertions(+), 66 deletions(-) diff --git a/sdk/cwl/tests/federation/arvboxcwl/fed-config.cwl b/sdk/cwl/tests/federation/arvboxcwl/fed-config.cwl index e1cacdcaf7..abd97ed8f4 100644 --- a/sdk/cwl/tests/federation/arvboxcwl/fed-config.cwl +++ b/sdk/cwl/tests/federation/arvboxcwl/fed-config.cwl @@ -65,7 +65,7 @@ requirements: arguments: - shellQuote: false valueFrom: | - docker cp cluster_config.yml.override $(inputs.container_name):/var/lib/arvados + docker cp cluster_config.yml.override $(inputs.container_name):/var/lib/arvados-arvbox docker cp application.yml.override $(inputs.container_name):/usr/src/arvados/services/api/config $(inputs.arvbox_bin.path) sv restart api $(inputs.arvbox_bin.path) sv restart controller diff --git a/sdk/cwl/tests/federation/arvboxcwl/start.cwl b/sdk/cwl/tests/federation/arvboxcwl/start.cwl index c933de254a..2c453f768c 100644 --- a/sdk/cwl/tests/federation/arvboxcwl/start.cwl +++ b/sdk/cwl/tests/federation/arvboxcwl/start.cwl @@ -98,4 +98,4 @@ arguments: $(inputs.arvbox_bin.path) restart $(inputs.arvbox_mode) fi $(inputs.arvbox_bin.path) status > status.txt - $(inputs.arvbox_bin.path) cat /var/lib/arvados/superuser_token > superuser_token.txt + $(inputs.arvbox_bin.path) cat /var/lib/arvados-arvbox/superuser_token > superuser_token.txt diff --git a/sdk/python/tests/fed-migrate/fed-migrate.cwlex b/sdk/python/tests/fed-migrate/fed-migrate.cwlex index e0beaa91d6..4c1db0f43b 100644 --- a/sdk/python/tests/fed-migrate/fed-migrate.cwlex +++ b/sdk/python/tests/fed-migrate/fed-migrate.cwlex @@ -34,8 +34,8 @@ $(inputs.arvbox_bin.path) hotreset while ! curl --fail --insecure --silent https://$(inputs.host)/discovery/v1/apis/arvados/v1/rest >/dev/null ; do sleep 3 ; done -ARVADOS_VIRTUAL_MACHINE_UUID=\$($(inputs.arvbox_bin.path) cat /var/lib/arvados/vm-uuid) -ARVADOS_API_TOKEN=\$($(inputs.arvbox_bin.path) cat /var/lib/arvados/superuser_token) +ARVADOS_VIRTUAL_MACHINE_UUID=\$($(inputs.arvbox_bin.path) cat /var/lib/arvados-arvbox/vm-uuid) +ARVADOS_API_TOKEN=\$($(inputs.arvbox_bin.path) cat /var/lib/arvados-arvbox/superuser_token) while ! curl --fail --insecure --silent -H "Authorization: Bearer $ARVADOS_API_TOKEN" https://$(inputs.host)/arvados/v1/virtual_machines/$ARVADOS_VIRTUAL_MACHINE_UUID >/dev/null ; do sleep 3 ; done >>> @@ -47,4 +47,4 @@ while ! curl --fail --insecure --silent -H "Authorization: Bearer $ARVADOS_API_T report = run_test(arvados_api_hosts, superuser_tokens=supertok, fed_migrate) return supertok, report -} \ No newline at end of file +} diff --git a/tools/arvbox/bin/arvbox b/tools/arvbox/bin/arvbox index 3040cb793c..cd72ec06bb 100755 --- a/tools/arvbox/bin/arvbox +++ b/tools/arvbox/bin/arvbox @@ -625,8 +625,6 @@ export RAILS_ENV=development bundle exec rake db:drop rm $ARVADOS_CONTAINER_PATH/api_database_setup rm $ARVADOS_CONTAINER_PATH/superuser_token -rm $ARVADOS_CONTAINER_PATH/keep0-uuid -rm $ARVADOS_CONTAINER_PATH/keep1-uuid rm $ARVADOS_CONTAINER_PATH/keepproxy-uuid sv start api sv start controller diff --git a/tools/arvbox/lib/arvbox/docker/Dockerfile.base b/tools/arvbox/lib/arvbox/docker/Dockerfile.base index 115754cac7..79f0d3f4f6 100644 --- a/tools/arvbox/lib/arvbox/docker/Dockerfile.base +++ b/tools/arvbox/lib/arvbox/docker/Dockerfile.base @@ -133,6 +133,8 @@ COPY $workdir/runit /etc/runit # put everything (/var/lib/arvados) ENV ARVADOS_CONTAINER_PATH /var/lib/arvados-arvbox +RUN /bin/ln -s /var/lib/arvados/bin/ruby /usr/local/bin/ + # Start the supervisor. ENV SVDIR /etc/service STOPSIGNAL SIGINT diff --git a/tools/arvbox/lib/arvbox/docker/Dockerfile.demo b/tools/arvbox/lib/arvbox/docker/Dockerfile.demo index 777c71356c..92d4e70881 100644 --- a/tools/arvbox/lib/arvbox/docker/Dockerfile.demo +++ b/tools/arvbox/lib/arvbox/docker/Dockerfile.demo @@ -28,6 +28,17 @@ RUN mkdir -p $ARVADOS_CONTAINER_PATH RUN echo "production" > $ARVADOS_CONTAINER_PATH/api_rails_env RUN echo "production" > $ARVADOS_CONTAINER_PATH/workbench_rails_env +# for the federation tests, the dev server watches a lot of files, +# and we run three instances of the docker container. Bump up the +# inotify limit from 8192, to avoid errors like +# events.js:183 +# throw er; // Unhandled 'error' event +# ^ +# +# Error: watch /usr/src/workbench2/public ENOSPC +# cf. https://github.com/facebook/jest/issues/3254 +RUN echo fs.inotify.max_user_watches=524288 >> /etc/sysctl.conf + RUN /usr/local/lib/arvbox/createusers.sh RUN sudo -u arvbox /var/lib/arvbox/service/api/run-service --only-deps diff --git a/tools/arvbox/lib/arvbox/docker/api-setup.sh b/tools/arvbox/lib/arvbox/docker/api-setup.sh index f20278a69c..4ad2aed0cc 100755 --- a/tools/arvbox/lib/arvbox/docker/api-setup.sh +++ b/tools/arvbox/lib/arvbox/docker/api-setup.sh @@ -56,16 +56,16 @@ EOF fi if ! test -f $ARVADOS_CONTAINER_PATH/api_database_setup ; then - bundle exec rake db:setup + flock $GEM_HOME/gems.lock bundle exec rake db:setup touch $ARVADOS_CONTAINER_PATH/api_database_setup fi if ! test -s $ARVADOS_CONTAINER_PATH/superuser_token ; then - superuser_tok=$(bundle exec ./script/create_superuser_token.rb) + superuser_tok=$(flock $GEM_HOME/gems.lock bundle exec ./script/create_superuser_token.rb) echo "$superuser_tok" > $ARVADOS_CONTAINER_PATH/superuser_token fi rm -rf tmp mkdir -p tmp/cache -bundle exec rake db:migrate +flock $GEM_HOME/gems.lock bundle exec rake db:migrate diff --git a/tools/arvbox/lib/arvbox/docker/go-setup.sh b/tools/arvbox/lib/arvbox/docker/go-setup.sh index 21be0ccd6f..5bdc5207a3 100644 --- a/tools/arvbox/lib/arvbox/docker/go-setup.sh +++ b/tools/arvbox/lib/arvbox/docker/go-setup.sh @@ -8,14 +8,11 @@ mkdir -p $GOPATH cd /usr/src/arvados if [[ $UID = 0 ]] ; then - /usr/local/lib/arvbox/runsu.sh flock /var/lib/gopath/gopath.lock go mod download - if [[ ! -f /usr/local/bin/arvados-server ]]; then - /usr/local/lib/arvbox/runsu.sh flock /var/lib/gopath/gopath.lock go install git.arvados.org/arvados.git/cmd/arvados-server - fi -else - flock /var/lib/gopath/gopath.lock go mod download - if [[ ! -f /usr/local/bin/arvados-server ]]; then - flock /var/lib/gopath/gopath.lock go install git.arvados.org/arvados.git/cmd/arvados-server - fi + RUNSU="/usr/local/lib/arvbox/runsu.sh" +fi + +if [[ ! -f /usr/local/bin/arvados-server ]]; then + $RUNSU flock /var/lib/gopath/gopath.lock go mod download + $RUNSU flock /var/lib/gopath/gopath.lock go install git.arvados.org/arvados.git/cmd/arvados-server + $RUNSU flock /var/lib/gopath/gopath.lock install $GOPATH/bin/arvados-server /usr/local/bin fi -install $GOPATH/bin/arvados-server /usr/local/bin diff --git a/tools/arvbox/lib/arvbox/docker/keep-setup.sh b/tools/arvbox/lib/arvbox/docker/keep-setup.sh index 657a9a2600..cb64f8406f 100755 --- a/tools/arvbox/lib/arvbox/docker/keep-setup.sh +++ b/tools/arvbox/lib/arvbox/docker/keep-setup.sh @@ -19,40 +19,4 @@ fi mkdir -p $ARVADOS_CONTAINER_PATH/$1 -export ARVADOS_API_HOST=$localip:${services[controller-ssl]} -export ARVADOS_API_HOST_INSECURE=1 -export ARVADOS_API_TOKEN=$(cat $ARVADOS_CONTAINER_PATH/superuser_token) - -set +e -read -rd $'\000' keepservice < $ARVADOS_CONTAINER_PATH/$1-uuid -fi - -management_token=$(cat $ARVADOS_CONTAINER_PATH/management_token) - -set +e -sv hup /var/lib/arvbox/service/keepproxy - -cat >$ARVADOS_CONTAINER_PATH/$1.yml <config/application.yml <