# 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-test-monitors@google.com
  )
  MODEL_INTEREST=(
    englab-sys-cros@google.com
    chromeos-test-monitors@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.
#   + UNTESTABLE_DETECT happens with every run.  It looks for
#     and reports DUTs that for never run tests even though their
#     status indicates that they should.
#   + 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.

UNTESTABLE_DETECT=( --report-untestable )

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

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