Last active
September 5, 2017 17:48
-
-
Save Aricg/d770f7d0a4e88d149ddb6715dc4ad0ba to your computer and use it in GitHub Desktop.
monitor jnlp slaves jenkins hack
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#Yes I know about jq | |
curlcommand() { | |
curl -s "https://build.opnfv.org/ci/computer/api/json?tree=computer\[displayName,offline\]" \ | |
| awk -v k=":" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' \ | |
| grep -v "_class" \ | |
| awk 'NR%2{printf "%s ",$0;next;}1' \ | |
| awk -F":" '{print $2,$3}' \ | |
| awk '{print $1,$3}' \ | |
| sed s,\},,g \ | |
| sed s,],,g \ | |
| sed s,\",,g | |
} | |
if [ -f podoutput-current ]; then | |
cp podoutput-current podoutput-lastiteration | |
fi | |
curlcommand > podoutput-current | |
declare -A slavescurrent slaveslastiteration | |
while read -r name status ; do | |
slavescurrent["$name"]="$status" | |
done < <(cat podoutput-current) | |
while read -r name status ; do | |
slaveslastiteration["$name"]=$status | |
done < <(cat podoutput-lastiteration) | |
main () { | |
for slavename in "${!slavescurrent[@]}"; do | |
#Slave is online. Mark it down. | |
if [ "${slavescurrent[$slavename]}" == "false" ]; then | |
if [ -f "$slavename"-offline ]; then | |
echo "removing offline status from "$slavename" slave was offline for $(cat "$slavename"-offline ) iterations" | |
rm "$slavename"-offline | |
fi | |
if ! [ -f "$slavename"-online ]; then | |
echo "1" > "$slavename"-online | |
elif [ -f "$slavename"-online ]; then | |
#read and increment slavename | |
read -r -d $'\x04' var < "$slavename"-online | |
((var++)) | |
echo -n "ONLINE $slavename " | |
echo "for $var iterations" | |
echo "$var" > "$slavename"-online | |
fi | |
fi | |
#went offline since last iteration. | |
if [ "${slavescurrent[$slavename]}" == "false" ] && [ "${slaveslastiteration[$slavename]}" == "true" ]; then | |
echo "JUST WENT OFFLINE $slavename " | |
if [ -f "$slavename"-online ]; then | |
echo "removing online status from $slavename. slave was online for $(cat "$slavename"-online ) iterations" | |
rm "$slavename"-online | |
fi | |
fi | |
#slave is offline | |
if [ "${slavescurrent[$slavename]}" == "true" ]; then | |
if ! [ -f "$slavename"-offline ]; then | |
echo "1" > "$slavename"-offline | |
fi | |
if [ -f "$slavename"-offline ]; then | |
#read and increment slavename | |
read -r -d $'\x04' var < "$slavename"-offline | |
((var++)) | |
echo "$var" > "$slavename"-offline | |
if [ "$var" -gt "14" ]; then | |
echo "OFFLINE FOR $var ITERATIONS REMOVE $slavename " | |
else | |
echo "OFFLINE $slavename FOR $var ITERATIONS " | |
fi | |
fi | |
fi | |
done | |
} | |
main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment