#!/bin/bash # Shut pxetest VMs down (ACPI, then force after a timeout). Keeps them # defined. Idempotent. # Usage: tests/vm/stop.sh [server|client|client2|all] (default: all) source "$(dirname "$0")/common.sh" which="${1:-all}" case "$which" in server) vms=("$SERVER_VM") ;; client) vms=("$CLIENT_VM") ;; client2|nosb) vms=("$CLIENT2_VM") ;; all) vms=("$CLIENT_VM" "$CLIENT2_VM" "$SERVER_VM") ;; *) die "usage: $0 [server|client|client2|all]" ;; esac for vm in "${vms[@]}"; do dom_exists "$vm" || continue [ "$(dom_state "$vm")" = "shut off" ] && { log "$vm already off"; continue; } virsh shutdown "$vm" >/dev/null 2>&1 || true for _ in $(seq 1 60); do [ "$(dom_state "$vm")" = "shut off" ] && break sleep 1 done if [ "$(dom_state "$vm")" != "shut off" ]; then log "$vm ignored ACPI shutdown; forcing off" virsh destroy "$vm" >/dev/null fi log "$vm off" done