[libvirt] [PATCH libvirt-python v2 06/22] event-test.py: Merge livecycle callbacks

Philipp Hahn hahn at univention.de
Fri Sep 21 13:35:01 UTC 2018


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 domainEventRegisterAn(),
as that returns a unique ID.

While at it also demonstrate the 'opaque' mechanism.

Signed-off-by: Philipp Hahn <hahn at univention.de>
---
 examples/event-test.py | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/examples/event-test.py b/examples/event-test.py
index ab1da4a..2dcdee3 100755
--- a/examples/event-test.py
+++ b/examples/event-test.py
@@ -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)
-- 
2.11.0




More information about the libvir-list mailing list