#!/usr/bin/env python import libvirt import libvirt_qemu import threading import time import signal import os import sys eventLoopThread = None def eventLoopRun(): while True: libvirt.virEventRunDefaultImpl() def eventLoopStart(): global eventLoopThread libvirt.virEventRegisterDefaultImpl() eventLoopThread = threading.Thread(target=eventLoopRun, name="libvirtEventLoop") eventLoopThread.setDaemon(True) eventLoopThread.start() def reportDefault(conn, dom, eventName,eventArgs,opaque): print "DEFAULT EVENT: Domain %s(%s), pass the unknown event:%s, arguments is: %s" % (dom.name(), dom.ID(), eventName, eventArgs) eventStrings = ( "RESUME", "VNC_CONNECTED", "VNC_DISCONNECTED", "VNC_INITIALIZED", "RESET", "SHUTDOWN", "HELLO" ); conn = libvirt.virConnect(); eventID = {}; def signal_handler(signal, frame): #print conn.getURI() if conn != None: print conn for i in eventID: print "deregister event: %d" %(i) #libvirt_qemu.domainQemuEventDeregister(conn1, i) print "test safely exit" else: print "conn is None" sys.exit(0) def main(): eventLoopStart() signal.signal(signal.SIGINT, signal_handler) #eventID[0] = conn.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_GRAPHICS, reportGraphic, None) conn = libvirt.openReadOnly('qemu:///system') eventID[0] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[0], reportDefault, None) #eventID[1] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[1], reportDefault, None) #eventID[2] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[2], reportDefault, None) #eventID[3] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[3], reportDefault, None) #eventID[4] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[4], reportDefault, None) #eventID[5] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[5], reportDefault, None) #eventID[6] = libvirt_qemu.domainQemuEventRegister(conn, None, eventStrings[6], reportDefault, None) #eventID[7] = libvirt_qemu.domainQemuEventRegister(conn, None, 'SHUTDOWN', reportDefault, None) while 1: time.sleep(1) if __name__ == "__main__": main()