Move suspend handling into qubesd.pull/28/head
parent
9b75dd1321
commit
51abb471b9
@ -1,37 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
get_running_netvms() {
|
|
||||||
# Actually get running VMs with PCI devices attached
|
|
||||||
RUNNING_VMS=`xl list | tail -n +3 | cut -f 1 -d " "`
|
|
||||||
RUNNING_NETVMS=""
|
|
||||||
for VM in $RUNNING_VMS; do
|
|
||||||
if [ -n "`xl pci-list $VM|tail -n +2`" ]; then
|
|
||||||
echo "$VM"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
suspend_net()
|
|
||||||
{
|
|
||||||
for VM in `get_running_netvms`; do
|
|
||||||
qvm-run -u root --pass-io $VM 'QUBESRPC qubes.SuspendPre dom0'
|
|
||||||
done
|
|
||||||
# Ignore exit status from netvm...
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
resume_net()
|
|
||||||
{
|
|
||||||
for VM in `get_running_netvms`; do
|
|
||||||
qvm-run -u root --pass-io $VM 'QUBESRPC qubes.SuspendPost dom0'
|
|
||||||
done
|
|
||||||
# Ignore exit status from netvm...
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
resume) resume_net ;;
|
|
||||||
suspend) suspend_net ;;
|
|
||||||
*) exit 0 ;;
|
|
||||||
esac
|
|
@ -1,27 +1,12 @@
|
|||||||
#!/usr/bin/python
|
#!/bin/sh
|
||||||
|
|
||||||
from qubes.qubes import QubesVmCollection,QubesException
|
case "$1" in
|
||||||
import sys
|
suspend|hibernate)
|
||||||
|
qubesd-query -e --fail -c /var/run/qubesd.internal.sock \
|
||||||
qc = QubesVmCollection()
|
dom0 internal.SuspendPre dom0
|
||||||
qc.lock_db_for_reading()
|
;;
|
||||||
qc.load()
|
resume|thaw)
|
||||||
qc.unlock_db()
|
qubesd-query -e --fail -c /var/run/qubesd.internal.sock \
|
||||||
|
dom0 internal.SuspendPost dom0
|
||||||
if sys.argv[1] in ["suspend", "hibernate"]:
|
;;
|
||||||
for vm in qc.values():
|
esac
|
||||||
if vm.is_running():
|
|
||||||
try:
|
|
||||||
vm.run_service("qubes.SuspendPreAll", user="root")
|
|
||||||
vm.suspend()
|
|
||||||
except Exception as e:
|
|
||||||
print >>sys.stderr, "Failed to suspend VM %s: %s" % (vm.name, e.message)
|
|
||||||
|
|
||||||
elif sys.argv[1] in ["resume", "thaw"]:
|
|
||||||
for vm in qc.values():
|
|
||||||
if vm.get_power_state() in ["Paused", "Suspended"]:
|
|
||||||
try:
|
|
||||||
vm.resume()
|
|
||||||
vm.run_service("qubes.SuspendPostAll", user="root")
|
|
||||||
except Exception as e:
|
|
||||||
print >>sys.stderr, "Failed to resume VM %s: %s" % (vm.name, e.message)
|
|
||||||
|
Loading…
Reference in new issue