banger/list.sh

30 lines
810 B
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
shopt -s nullglob
get_prop() {
local info="$1"
local key="$2"
awk -F= -v k="$key" '$1==k {print $2}' "$info"
}
for info in state/vm-*/info; do
id="$(get_prop "$info" "id")"
name="$(get_prop "$info" "name")"
created_at="$(get_prop "$info" "created_at")"
guest_ip="$(get_prop "$info" "guest_ip")"
pid="$(get_prop "$info" "pid")"
tap="$(get_prop "$info" "tap")"
api_sock="$(get_prop "$info" "api_sock")"
status="stale"
if [[ -n "$pid" && -n "$api_sock" ]]; then
if ps -p "$pid" -o comm=,args= 2>/dev/null | rg -q "firecracker.*--api-sock $api_sock"; then
status="running"
fi
fi
printf 'status=%s id=%s name=%s created_at=%s guest_ip=%s pid=%s tap=%s\n' \
"$status" "$id" "$name" "$created_at" "$guest_ip" "$pid" "$tap"
done