#!/bin/bash
#
# Script to setup a host for running in Home Swarming CI.
#
# Prereqs:
#   this script and its dependencies are scp'd to the swarm lab host via:
#     $ scp /google/data/ro/teams/cast-test/swarming/* gtvchrome@<lab-host-ip>:/home/gtvchrome/
#        (gtvchrome password in valentine)
#   all of these shell scripts have chmod +x on the lab host:  chmod +x *.sh
#   you're ssh'd into the lab host and ready to run this script on it
#
# Usage:
#  ./setup_swarm_host.sh

# stop any bots that might be running already
for abspath in /etc/init/swarming*.conf; do
  filename=$(basename "$abspath")
  botname="${filename%.*}"
  sudo stop "$botname"
done

# our puppet config requires at least 1 bot dir set up already
echo -e "Visit the following URL to get the latest token code and copy-paste it below.\n"
echo -e "https://cast-swarming.appspot.com\n"
read -p "Token Code: " token
SWARM_HOME=~/swarm_home
if [ ! -d "$SWARM_HOME" ]; then
  mkdir $SWARM_HOME
fi
cd $SWARM_HOME
rm -rf bots ; mkdir -p bots/1 ; cd bots/1
curl -sSLOJ https://cast-swarming.appspot.com/bot_code?tok=$token

# Fetch a temporary copy of our puppet configs from cipd and run it.
# The puppet config will set up a permanent puppet config dir and keep it up-to-date with cron.
source $HOME/install_cipd.sh $HOME/depot_tools/

# Init masterless puppet config only on gtvchrome lab hosts.
# Ganeti hosts are configured via ENC puppet (mosaic-role user, not gtvchrome)
if [[ "$PWD" =~ gtvchrome ]]; then
  rm -rf /tmp/puppet; mkdir /tmp/puppet; cd /tmp/puppet
  cipd install home_internal/swarm_puppet staging -service-account-json ~/luci/swarming-key.json

  sudo apt-get install --yes puppet
  sudo /usr/bin/puppet apply --modulepath ./ ./cast_builder/files/swarm/lab_nodes/site.pp
fi
