The following testcase worked for me with a preseeded install, giving me
the following results:
myDomainEventLifecycleCallback EVENT: Domain desktop(12) Shutdown
Finished
myDomainEventLifecycleCallback EVENT: Domain desktop(12) Stopped
Shutdown
myDomainEventLifecycleCallback EVENT: Domain desktop(13) Started Booted
Test script is as follows, borrowing some boilerplate from libvirt-
python/examples/event-test.py:
#!/usr/bin/env python
import sys
import getopt
import os
import libvirt
import select
import errno
import time
import threading
eventLoopThread = None
def virEventLoopNativeRun():
while True:
libvirt.virEventRunDefaultImpl()
def virEventLoopNativeStart():
global eventLoopThread
libvirt.virEventRegisterDefaultImpl()
eventLoopThread = threading.Thread(target=virEventLoopNativeRun,
name="libvirtEventLoop")
eventLoopThread.setDaemon(True)
eventLoopThread.start()
def domEventToString(event):
domEventStrings = ( "Defined",
"Undefined",
"Started",
"Suspended",
"Resumed",
"Stopped",
"Shutdown",
"PMSuspended",
"Crashed",
)
return domEventStrings[event]
def myDomainEventLifecycleCallback (conn, dom, event, detail, opaque):
print("myDomainEventLifecycleCallback EVENT: Domain %s(%s) %s %s\n" %
(dom.name(), dom.ID(),
domEventToString(event),
domDetailToString(event, detail)))
def domDetailToString(event, detail):
domEventStrings = (
( "Added", "Updated" ),
( "Removed", ),
( "Booted", "Migrated", "Restored", "Snapshot", "Wakeup" ),
( "Paused", "Migrated", "IOError", "Watchdog", "Restored", "Snapshot",
"API error" ),
( "Unpaused", "Migrated", "Snapshot" ),
( "Shutdown", "Destroyed", "Crashed", "Migrated", "Saved", "Failed",
"Snapshot"),
( "Finished", ),
( "Memory", "Disk" ),
( "Panicked", ),
)
return domEventStrings[event][detail]
def myDomainEventRebootCallback (conn, dom, event, detail, opaque):
print("myDomainEventRebootCallback EVENT: Domain %s(%s) %s %s\n" %
(dom.name(), dom.ID(),
domEventToString(event),
domDetailToString(event, detail)))
def myDomainEventCallback2 (conn, dom, event, detail, opaque):
print("myDomainEventCallback2 EVENT: Domain %s(%s) %s %s\n" % (dom.name(),
dom.ID(),
domEventToString(event),
domDetailToString(event, detail)))
run = True
def main():
virEventLoopNativeStart()
lv = libvirt.open("qemu:///system")
lv.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_REBOOT,
myDomainEventRebootCallback, None)
lv.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE,
myDomainEventLifecycleCallback, None)
while run:
time.sleep(1)
print("done sleeping")
if __name__ == '__main__':
exit(main())
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1329254
Title:
VMs do not become inactive during the reboot on saucy and later hosts
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1329254/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs