blob: 6da46110f0011a5ebf8ac56229bd9f80fd7c2a66 [file] [log] [blame]
#!/bin/bash
cd $(dirname $(readlink -f $0))/..
BOARD="$1"
if [[ "${BOARD}" = *_* ]]; then
FREON=${BOARD}-freon
else
FREON=${BOARD}_freon
fi
case "${BOARD}" in
x86-*) PLATFORM=${BOARD#x86-} ;;
daisy) PLATFORM=snow ;;
daisy_spring) PLATFORM=spring ;;
daisy_skate) PLATFORM=skate ;;
parrot_ivb) PLATFORM=parrot_2 ;;
falco_li) PLATFORM=falco ;;
*) PLATFORM=$BOARD ;;
esac
BROKEN=( $(site_utils/dut_status.py -n -b $FREON) )
if [[ ${#BROKEN[@]} -eq 0 ]]; then
echo "No broken DUTs for $FREON" >&2
exit 0
fi
echo "Found ${#BROKEN[@]} broken $FREON DUTs" >&2
HOST_FILTER='
NR == 1 || /pool:.*pool:/ {next}
{print $1}
'
ELIGIBLE=( $(cli/atest host list -b board:$BOARD,pool:suites |
awk "${HOST_FILTER}") )
WORKING=( $(site_utils/dut_status.py -w "${ELIGIBLE[@]}" |
tail -${#BROKEN[@]}) )
if [[ ${#WORKING[@]} -eq 0 ]]; then
echo "No working DUTs for $BOARD" >&2
exit 1
fi
echo "Found ${#WORKING[@]} working $BOARD DUTs" >&2
if [[ ${#WORKING[@]} -lt ${#BROKEN[@]} ]]; then
echo "Short by $(( ${#BROKEN[@]} - ${#WORKING[@]} )) spares" >&2
echo "Not all devices will be replaced" >&2
while [[ ${#WORKING[@]} -lt ${#BROKEN[@]} ]]; do
unset BROKEN[$(( ${#BROKEN[@]} - 1 ))]
done
fi
BROKEN_M=$(echo "${BROKEN[@]}" | sed 's/ /,/g')
WORKING_M=$(echo "${WORKING[@]}" | sed 's/ /,/g')
cli/atest label remove -m $BROKEN_M pool:bvt board:$FREON $FREON
cli/atest label add -m $BROKEN_M pool:suites board:$BOARD $PLATFORM
cli/atest label remove -m $WORKING_M pool:suites board:$BOARD $PLATFORM
cli/atest label add -m $WORKING_M pool:bvt board:$FREON $FREON