blob: 3cbeb7dbc3fa221bb5977fc2e323fd4df8adab22 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/usr/bin/env bash
set -euo pipefail
NAME="${1:-}"
usage() { echo "Usage: vm-rm <name>" >&2; exit 2; }
[[ -n "$NAME" ]] || usage
case "$NAME" in
debian13-template|work01|Whonix-Gateway|Whonix-Workstation)
echo "Refusing: protected VM name '$NAME'." >&2
exit 1
;;
esac
if ! sudo virsh dominfo "$NAME" >/dev/null 2>&1; then
echo "VM not found in libvirt: $NAME" >&2
exit 1
fi
# Find associated disk(s) from XML, delete only qcow2 under overlays/
mapfile -t DISKS < <(sudo virsh domblklist "$NAME" --details \
| awk '$3=="disk" && $4 ~ /^\// {print $4}')
echo "Will remove VM: $NAME"
for d in "${DISKS[@]}"; do
echo "Disk: $d"
done
sudo virsh destroy "$NAME" >/dev/null 2>&1 || true
sudo virsh undefine "$NAME" --nvram >/dev/null 2>&1 || sudo virsh undefine "$NAME" >/dev/null
for d in "${DISKS[@]}"; do
case "$d" in
/var/lib/libvirt/images/overlays/*.qcow2)
sudo rm -f -- "$d"
;;
*)
echo "Skipping non-overlay disk: $d" >&2
;;
esac
done
echo "Removed: $NAME"
|