#!/bin/bash
#
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

USAGE='Usage: deploy_puppet.sh [-rsndh]'
HELP="${USAGE}\n\n\
Force puppet deployment.\n\
The script will first fetch server hostnames from server db,\n\
given the server role and status and/or server name.\n\
And then force puppet deployment on the selected servers.\n\n\
Requirement:
 - Run on the machine that has access to server db and
 - Run it as chromeos-test.\n\
 - The server must exist in server db, even if -n is used.

It should be safe to rerun the script multiple time, \n\
as it doesn't hurt to deploy puppet multiple times.\n\n\
Options:\n\
  -r server role as in server db, e.g. 'drone'.\n\
  -s server status as in server db, e.g. 'primary'.\n\
  -n server hostname.\n\
  -d dryrun.\n\
  -h help."

ROLE=
ROLE_OPT=
STATUS=
STATUS_OPT=
HOSTNAME=
DRYRUN="FALSE"
AUTOTEST_ROOT="/usr/local/autotest"
while getopts ":s:r:n:dh" opt; do
  case $opt in
    r)
      ROLE=$OPTARG
      ;;
    s)
      STATUS=$OPTARG
      ;;
    n)
      HOSTNAME=$OPTARG
      ;;
    d)
      DRYRUN="TRUE"
      ;;
    h)
      echo -e "${HELP}" >&2
      exit 0
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      echo -e "${HELP}" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      echo -e "${HELP}" >&2
      exit 1
      ;;
  esac
done

if [ -n "${ROLE}" ]; then
  ROLE_OPT="-r ${ROLE}"
fi

if [ -n "${STATUS}" ]; then
  STATUS_OPT="-s ${STATUS}"
fi

if [ -z "${ROLE}" ] && [ -z "${STATUS}" ] && [ -z "${HOSTNAME}" ]; then
  echo "You must specify at least one of -r, -s or -n"
  exit 1
fi

hosts="$(${AUTOTEST_ROOT}/cli/atest server list ${STATUS_OPT} ${ROLE_OPT} ${HOSTNAME} | awk '/hostname *:/ {gsub(/"/, "", $2); print $2}')"

echo -e "\n******* Will update the following servers ********\n "

for host in ${hosts}; do
  echo ${host}
done

echo -e "\n**************************************************\n"

for host in ${hosts}; do
  run_puppet="ssh ${host} -- 'sudo /root/chromeos-admin/puppet/sync_and_run_puppet -f'"
  echo -e "\n********** Processing ${host} ****************\n"
  echo "[Running] ${run_puppet}"
  if [ "${DRYRUN}" != "TRUE" ]; then
    eval ${run_puppet}
  fi
  echo -e "\n********* Finished processing ${host} *******\n"
done
