1
0
mirror of https://gitlab.com/libvirt/libvirt-python.git synced 2025-07-17 00:59:36 +03:00

event-test.py: Merge livecycle callbacks

Registering the same function twice using the old domainEventRegister()
interface would not work, as the function reference is used for
un-registering.

But it is not a problem with the new interface domainEventRegisterAny(),
as that returns a unique ID.

While at it also demonstrate the 'opaque' mechanism.

Signed-off-by: Philipp Hahn <hahn@univention.de>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Philipp Hahn
2018-09-21 15:35:01 +02:00
committed by Michal Privoznik
parent d408dc944d
commit 73b5ae581c

View File

@ -499,15 +499,11 @@ def agentLifecycleReasonToString(reason):
agentReasons = ( "unknown", "domain started", "channel event", )
return agentReasons[reason]
def myDomainEventCallback1 (conn, dom, event, detail, opaque):
print("myDomainEventCallback1 EVENT: Domain %s(%s) %s %s" % (dom.name(), dom.ID(),
domEventToString(event),
domDetailToString(event, detail)))
def myDomainEventCallback2 (conn, dom, event, detail, opaque):
print("myDomainEventCallback2 EVENT: Domain %s(%s) %s %s" % (dom.name(), dom.ID(),
domEventToString(event),
domDetailToString(event, detail)))
def myDomainEventCallback(conn, dom, event, detail, opaque):
print("myDomainEventCallback%d EVENT: Domain %s(%s) %s %s" % (
opaque, dom.name(), dom.ID(), domEventToString(event), domDetailToString(event, detail)))
def myDomainEventRebootCallback(conn, dom, opaque):
print("myDomainEventRebootCallback: Domain %s(%s)" % (dom.name(), dom.ID()))
@ -725,9 +721,9 @@ def main():
vc.registerCloseCallback(myConnectionCloseCallback, None)
#Add 2 lifecycle callbacks to prove this works with more than just one
vc.domainEventRegister(myDomainEventCallback1,None)
vc.domainEventRegister(myDomainEventCallback, 1)
domcallbacks = []
domcallbacks.append(vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE, myDomainEventCallback2, None))
domcallbacks.append(vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE, myDomainEventCallback, 2))
domcallbacks.append(vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_REBOOT, myDomainEventRebootCallback, None))
domcallbacks.append(vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_RTC_CHANGE, myDomainEventRTCChangeCallback, None))
domcallbacks.append(vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_WATCHDOG, myDomainEventWatchdogCallback, None))
@ -784,7 +780,7 @@ def main():
if not run:
return
vc.domainEventDeregister(myDomainEventCallback1)
vc.domainEventDeregister(myDomainEventCallback)
for id in seccallbacks:
vc.secretEventDeregisterAny(id)