export LIBVIRT_DEFAULT_URI=qemu:///system task 1 "libvirt installed; web1 created from the cloud image and running" need "virsh list works" 'virsh list --all' need "VM web1 exists" 'virsh dominfo web1' need "web1 is running" '[ "$(virsh domstate web1)" = running ]' need "web1 has an IP address" 'virsh domifaddr web1 | grep -q ipv4 || virsh domifaddr web1 --source arp | grep -q ipv4' task 2 "web1 starts when the host boots" need "web1 has autostart on" 'virsh dominfo web1 | grep -Eq "^Autostart:[[:space:]]+enable"' task 3 "web1 has 2 GiB of memory and a second 5 GiB disk, for good" need "web1's saved definition has 2 GiB of memory" ' x=$(virsh dumpxml --inactive web1) grep -Eq "2097152" <<<"$x" && grep -Eq "2097152" <<<"$x"' need "web1's saved definition has two disks" '[ "$(virsh domblklist web1 --inactive --details | awk "\$2 == \"disk\"" | wc -l)" -ge 2 ]' need "one of web1's disks is 5 GiB" ' virsh domblklist web1 --inactive --details | awk "\$2 == \"disk\" {print \$4}" | while read -r f; do qemu-img info -U --output=json "$f" 2>/dev/null | grep -Eq "\"virtual-size\": 5368709120," && echo yes done | grep -q yes' need "running web1 has 2 GiB" 'virsh dominfo web1 | grep -Eq "^Used memory:[[:space:]]+2097152 KiB"' need "running web1 has two disks" '[ "$(virsh domblklist web1 --details | awk "\$2 == \"disk\"" | wc -l)" -ge 2 ]' task 4 "web1 snapshotted and reverted" need "web1 has a snapshot" '[ -n "$(virsh snapshot-list web1 --name | grep .)" ]' task 5 "web2 and its disks deleted" need "/root/lab-answers/5 lists web2's disk files" 'grep -q "^/" /root/lab-answers/5' need "VM web2 no longer exists" '! virsh dominfo web2' need "web2's disk files are gone" '! grep "^/" /root/lab-answers/5 | while read -r f; do [ -e "$f" ] && echo left; done | grep -q left' need "web1's disks weren't touched" ' virsh domblklist web1 --inactive --details | awk "\$2 == \"disk\" {print \$4}" | while read -r f; do [ -e "$f" ] || echo missing; done | grep -q missing && exit 1 true'