#!/bin/bash

# [START startup]
set -v

# Install logging monitor
# [START logging]
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash
service google-fluentd restart &
# [END logging]

# Install dependencies from apt
apt-get update
apt-get install -yq git build-essential python

# Create a swarming user
useradd -m -d /home/swarming swarming
grep -q -F 'swarming ALL=NOPASSWD: /sbin/shutdown -r now' /etc/sudoers || echo 'swarming ALL=NOPASSWD: /sbin/shutdown -r now' >>/etc/sudoers

# Setup swarming service
mkdir -p /b/swarm_slave
python - <<END
import requests
r = requests.get('http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token', headers={'Metadata-Flavor': 'Google'})
r = requests.get('https://chromium-swarm.appspot.com/bot_code', headers={'Authorization': 'Bearer %(access_token)s' % r.json()}, stream=True)
with open('/b/swarm_slave/swarming_bot.zip', 'wb') as fd:
  for chunk in r.iter_content(chunk_size=4096):
    fd.write(chunk)
END
chown -R swarming:swarming /b/swarm_slave

cat >/etc/init/swarming.conf <<EOF
description "Swarming bot"

start on filesystem or runlevel [2345]
stop on shutdown

respawn
respawn limit 0 10

setuid swarming

exec /usr/bin/env SWARMING_EXTERNAL_BOT_SETUP=1 python /b/swarm_slave/swarming_bot.zip start_bot
EOF

service swarming start &

# [END startup]
