#!/bin/bash

# Found as /opt/start_swarming. Called by /etc/init.d/start-swarming so it can be run
# as user chrome-bot (swarming doesn't like being run as root).
# Logs will be found in /var/log/startup.(log|err)

# Wait 20s to make sure ssl is fully booted.  Otherwise, we may get an error
# when trying to download the bootstrap code.
sleep 20s

# Copy authentication to home directory
cp /opt/.gitconfig /home/chrome-bot/.gitconfig
cp /opt/.netrc /home/chrome-bot/.netrc

host="$(hostname)"
swarming="https://chromium-swarm.appspot.com"
if [[ "$host" = skia-i-* ]]; then
  swarming="https://chrome-swarming.appspot.com"
elif [[ "$host" = skia-d-* ]]; then
  swarming="https://chromium-swarm-dev.appspot.com"
fi

if [ -d "/b/s" ]; then
  echo "Starting swarming at legacy location /b/s"
  /usr/bin/python /b/s/swarming_bot.zip start_bot &
  # The following is based on this Ansible script, which was not used here
  # because it would've complicated the setup flow a bit:
  # https://skia.googlesource.com/buildbot/+/main/skolo/common/ansible/bootstrap-swarming.yml
elif [ ! -d "/opt/s" ]; then
  mkdir -p /opt/s
  cd /opt/s
  tok=$(curl --silent --show-error --header "Metadata-Flavor: Google" \
    "http://metadata/computeMetadata/v1/instance/service-accounts/default/token" | \
    sed -E 's/.*"access_token":"([^"]+)".*/\1/')
  curl --silent --show-error --location "${swarming}/bot_code?tok=${tok}" \
    --output /opt/s/swarming_bot.zip
  echo "Bootstrapping $swarming at /opt/s, expect a reboot"
  /usr/bin/python -u /opt/s/swarming_bot.zip
else
  echo "Starting swarming at /opt/s"
  /usr/bin/python /opt/s/swarming_bot.zip start_bot &
fi
