#!/bin/bash

set -x

. /etc/profile.d/rvm.sh

export ARVADOS_API_HOST=api
export ARVADOS_API_HOST_INSECURE=yes
export ARVADOS_API_TOKEN=@@API_SUPERUSER_SECRET@@

# All users group
prefix=`arv --format=uuid user current | cut -d- -f1`
read -rd $'\000' newgroup <<EOF; arv group create --group "$newgroup"
{
 "uuid":"$prefix-j7d0g-fffffffffffffff",
 "name":"All users"
}
EOF

# Arvados repository object
all_users_group_uuid="$prefix-j7d0g-fffffffffffffff"
repo_uuid=`arv --format=uuid repository create --repository '{"name":"arvados","fetch_url":"git@api:arvados.git","push_url":"git@api:arvados.git"}'`
echo "Arvados repository uuid is $repo_uuid"

read -rd $'\000' newlink <<EOF; arv link create --link "$newlink"
{
 "tail_uuid":"$all_users_group_uuid",
 "head_uuid":"$repo_uuid",
 "link_class":"permission",
 "name":"can_read"
}
EOF

# Make sure the necessary keep_service objects exist
arv keep_service list > /tmp/keep_service.list

grep -q keep_server_0 /tmp/keep_service.list
if [[ "$?" != "0" ]]; then
  arv keep_service create --keep-service "$(cat /root/keep_server_0.json)"
fi

grep -q keep_server_1 /tmp/keep_service.list
if [[ "$?" != "0" ]]; then
  arv keep_service create --keep-service "$(cat /root/keep_server_1.json)"
fi

# User repository object
user_uuid=`arv --format=uuid user current`
repo_uuid=`arv --format=uuid repository create --repository '{"name":"@@ARVADOS_USER_NAME@@","fetch_url":"git@api:@@ARVADOS_USER_NAME@@.git","push_url":"git@api:@@ARVADOS_USER_NAME@@.git"}'`
echo "User repository uuid is $repo_uuid"

read -rd $'\000' newlink <<EOF; arv link create --link "$newlink"
{
 "tail_uuid":"$user_uuid",
 "head_uuid":"$repo_uuid",
 "link_class":"permission",
 "name":"can_write"
}
EOF

# Shell machine object
arv virtual_machine create --virtual-machine '{"hostname":"shell"}'