#!/bin/bash

# Force a verify job for any host that hasn't seen activity in
# the past day.
#
# Various scripts/cron jobs look for DUTs that aren't working.  To
# be conservative, those scripts assume that a DUT that hasn't run
# any jobs within a reasonable time interval isn't working, since
# some of the ways a DUT may be unavailable manifest as inactivity.
#
# In some cases, we'd like to be more certain as to a DUT's status.
# This script goes through the entire AFE hosts table, and
# identifies unlocked hosts that would otherwise be flagged as "not
# working due to lack of activity", and forces a Verify job.
#
# Locked hosts are skipped because they can't run jobs, and because
# we want them to show up as suspicious anyway.


cd $(dirname $0)/..

# Gather all the hosts under supervision of the SKC fire team.
# Basically, that's any host in the suites, bvt, cq, or pfq pool.

GET_HOSTS='
  /pool:(suites|bvt|cq|continuous|cts)/ {
    print $1
  }
'
HOSTS=( $(cli/atest host list --unlocked | awk "$GET_HOSTS") )


# Go through the gathered hosts, and use dut_status to find the
# ones with unknown state (anything without a positive "OK" or
# "NO" diagnosis).

NEED_VERIFY='
  /OK/ || /NO/ { next }
  /^chromeos/ {
    print $1
  }
'
VERIFY=( $(site_utils/dut_status.py -d 19 "${HOSTS[@]}" | awk "$NEED_VERIFY") )

# Reverify the unknown hosts.
contrib/reverify_hosts "${VERIFY[@]}"
