#!/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
  mkdir /b/s
  cd /b/s
  echo "Bootstrapping $swarming, expect a reboot"
  # 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/+show/master/skolo/common/ansible/bootstrap-swarming.yml
  script=$(cat << EOF
import json
import urllib2

token_url = ('http://metadata/computeMetadata/v1/instance/'
             'service-accounts/default/token')
req = urllib2.Request(token_url, headers={'Metadata-Flavor': 'Google'})
tok = json.load(urllib2.urlopen(req))
req = urllib2.Request(
    '$swarming/bootstrap',
    headers={'Authorization': 'Bearer %s' % tok['access_token']})
exec urllib2.urlopen(req).read()
EOF
)
  python -c "$script"
else
  echo "Starting swarming"
  /usr/bin/python /b/s/swarming_bot.zip start_bot &
fi
