46 lines
998 B
Bash
Executable file
46 lines
998 B
Bash
Executable file
#!/bin/bash
|
|
set -u
|
|
watch_mode=false
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-w|--watch) watch_mode=true; shift ;;
|
|
*) shift ;;
|
|
esac
|
|
done
|
|
|
|
render_nodes() {
|
|
local raw
|
|
raw=$(kubectl get nodes -L topology.kubernetes.io/zone,topology.kubernetes.io/region 2>/dev/null || true)
|
|
|
|
echo "$raw" | awk '
|
|
BEGIN {
|
|
ERR = "\033[38;2;255;46;76m"
|
|
RUN = "\033[38;2;166;227;161m"
|
|
HEAD = "\033[38;2;147;154;183m"
|
|
RST = "\033[0m"
|
|
}
|
|
NR==1 { print HEAD $0 RST; next }
|
|
{
|
|
if ($2 ~ /Ready/ && $2 !~ /NotReady/) {
|
|
print RUN $0 RST
|
|
}
|
|
else {
|
|
print ERR $0 RST
|
|
}
|
|
}'
|
|
}
|
|
|
|
if [[ "$watch_mode" == true ]]; then
|
|
trap 'tput cnorm 2>/dev/null || true; echo ""; exit 0' INT TERM
|
|
tput civis 2>/dev/null || true
|
|
clear
|
|
while true; do
|
|
tput cup 0 0 2>/dev/null || true
|
|
render_nodes
|
|
tput ed 2>/dev/null || true
|
|
sleep 1
|
|
done
|
|
else
|
|
render_nodes
|
|
fi |