# By default, we're invoked without arguments.  This is how the cron
# job does it, and means we should generate output and mail it to
# the default mail alias.
#
# Invoking with arguments is for testing:  It allows running through
# the full logic and output generation, without spamming the alert
# aliases.

OPTIONS=""
if [ $# -eq 0 ]; then
  # TODO(jrbarnette):  Really, this feels like a hack.  The cron job
  # that invokes the inventory scripts is installed and enabled on
  # both a primary and backup server, meaning the e-mail will be
  # generated twice.  We don't want that, so unless this is the
  # primary server, quash this job.
  if ! cli/atest server list $(hostname) 2>&1 |
      grep -q '^Status *: *primary'; then
    exit 0
  fi

  POOL_INTEREST=(
    chromeos-infra-eng@grotations.appspotmail.com
    chromeos-build-alerts+dut-pool@google.com
  )
  MODEL_INTEREST=(
    englab-sys-cros@google.com
    chromeos-build-alerts+dut-pool@google.com
  )
else
  MODEL_INTEREST=( "$@" )
  POOL_INTEREST=( "$@" )
  OPTIONS=--debug
fi

# Options to be used for different script invocations.  Inventory
# runs are relatively expensive, so operations that happen rarely
# also bundle operations that happen more frequently.
#   + REPAIR_LOOP_DETECT happens with every run.  It looks for
#     and reports DUTs that do no work other than to fail, then repair
#     successfully.
#   + MODEL_NOTIFY happens less often.  This adds a full model
#     inventory count to REPAIR_LOOP_DETECT.
#   + POOL_NOTIFY happens least often.  It adds per-pool inventory
#     counts, as well as individual DUT repair recommendations to
#     MODEL_NOTIFY.

REPAIR_LOOP_DETECT=( --repair-loops )

MODEL_NOTIFY=(
  "${REPAIR_LOOP_DETECT[@]}"
  --model-notify $(echo "${MODEL_INTEREST[@]}" | sed 's/ /,/g')
)

POOL_NOTIFY=(
  "${MODEL_NOTIFY[@]}"
  --recommend=40
  --pool-notify $(echo "${POOL_INTEREST[@]}" | sed 's/ /,/g')
)
