1 # By default, we're invoked without arguments. This is how the cron 2 # job does it, and means we should generate output and mail it to 3 # the default mail alias. 4 # 5 # Invoking with arguments is for testing: It allows running through 6 # the full logic and output generation, without spamming the alert 7 # aliases. 8 9 OPTIONS="" 10 if [ $# -eq 0 ]; then 11 # TODO(jrbarnette): Really, this feels like a hack. The cron job 12 # that invokes the inventory scripts is installed and enabled on 13 # both a primary and backup server, meaning the e-mail will be 14 # generated twice. We don't want that, so unless this is the 15 # primary server, quash this job. 16 if ! cli/atest server list $(hostname) 2>&1 | 17 grep -q '^Status *: *primary'; then 18 exit 0 19 fi 20 21 POOL_INTEREST=( 22 chromeos-infra-eng (a] grotations.appspotmail.com 23 chromeos-build-alerts+dut-pool (a] google.com 24 ) 25 MODEL_INTEREST=( 26 englab-sys-cros (a] google.com 27 chromeos-build-alerts+dut-pool (a] google.com 28 ) 29 else 30 MODEL_INTEREST=( "$@" ) 31 POOL_INTEREST=( "$@" ) 32 OPTIONS=--debug 33 fi 34 35 # Options to be used for different script invocations. Inventory 36 # runs are relatively expensive, so operations that happen rarely 37 # also bundle operations that happen more frequently. 38 # + REPAIR_LOOP_DETECT happens with every run. It looks for 39 # and reports DUTs that do no work other than to fail, then repair 40 # successfully. 41 # + MODEL_NOTIFY happens less often. This adds a full model 42 # inventory count to REPAIR_LOOP_DETECT. 43 # + POOL_NOTIFY happens least often. It adds per-pool inventory 44 # counts, as well as individual DUT repair recommendations to 45 # MODEL_NOTIFY. 46 47 REPAIR_LOOP_DETECT=( --repair-loops ) 48 49 MODEL_NOTIFY=( 50 "${REPAIR_LOOP_DETECT[@]}" 51 --model-notify $(echo "${MODEL_INTEREST[@]}" | sed 's/ /,/g') 52 ) 53 54 POOL_NOTIFY=( 55 "${MODEL_NOTIFY[@]}" 56 --recommend=40 57 --pool-notify $(echo "${POOL_INTEREST[@]}" | sed 's/ /,/g') 58 ) 59