#!/bin/bash # Show the state of every pxetest-* object, the isolation check, the NIC # MACs, the server's GE-side DHCP lease, and optionally a screenshot. # Usage: tests/vm/status.sh [--shot DIR] source "$(dirname "$0")/common.sh" SHOT_DIR="" [ "${1:-}" = "--shot" ] && SHOT_DIR="${2:?--shot needs a dir}" if ! net_exists "$IMAGING_NET"; then n=absent; elif net_active "$IMAGING_NET"; then n=active; else n=inactive; fi echo "network $IMAGING_NET: $n" if net_active "$IMAGING_NET"; then (assert_imaging_isolated && echo " isolation: OK (no forward, no ip, no host IPv4, only vnet ports)") fi for v in "$SERVER_DISK_VOL" "$USB_VOL" "$CLIENT_DISK_VOL" "$CLIENT2_DISK_VOL" "$CLIENT3_DISK_VOL"; do if vol_exists "$v"; then echo "volume $v: $(virsh vol-info --pool "$POOL" "$v" | awk '/Capacity|Allocation/{printf "%s %s %s ", $1, $2, $3}')" else echo "volume $v: absent" fi done for vm in "$SERVER_VM" "${ALL_CLIENTS[@]}"; do if dom_exists "$vm"; then echo "domain $vm: $(dom_state "$vm")" virsh domiflist "$vm" | tail -n +3 | grep -v '^$' | sed 's/^/ /' if [ "$(dom_state "$vm")" = "running" ]; then echo " VNC $(virsh vncdisplay "$vm" 2>/dev/null | head -1)" if [ -n "$SHOT_DIR" ]; then mkdir -p "$SHOT_DIR" f="$SHOT_DIR/$vm-$(date +%H%M%S).ppm" virsh screenshot "$vm" "$f" >/dev/null 2>&1 && echo " screenshot $f" fi fi else echo "domain $vm: absent" fi done echo "GE-side DHCP leases for $SERVER_GE_MAC (on $GE_NET):" virsh net-dhcp-leases "$GE_NET" --mac "$SERVER_GE_MAC" 2>/dev/null | tail -n +3 | grep -v '^$' | sed 's/^/ /' || true