File libvirt-examples-Handle-VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED-event.patch of Package libvirt

From e12cf2a5ceb1a0e1e06f316e15fd383308630ef4 Mon Sep 17 00:00:00 2001
Message-Id: <e12cf2a5ceb1a0e1e06f316e15fd383308630ef4@dist-git>
From: Jiri Denemark <jdenemar@redhat.com>
Date: Wed, 19 Jun 2013 15:28:00 +0200
Subject: [PATCH] examples: Handle VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED event

https://bugzilla.redhat.com/show_bug.cgi?id=807023

(cherry picked from commit ee023f6c1fd7d356aa66d41499b1a37ce0180eb0)
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

Conflicts:
	examples/domain-events/events-python/event-test.py - context
---
 examples/domain-events/events-c/event-test.c       | 23 +++++++++++++++++++++-
 examples/domain-events/events-python/event-test.py |  5 +++++
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/examples/domain-events/events-c/event-test.c b/examples/domain-events/events-c/event-test.c
index ef872e2..c080418 100644
--- a/examples/domain-events/events-c/event-test.c
+++ b/examples/domain-events/events-c/event-test.c
@@ -428,6 +428,17 @@ static int myDomainEventPMSuspendDiskCallback(virConnectPtr conn ATTRIBUTE_UNUSE
     return 0;
 }
 
+static int
+myDomainEventDeviceRemovedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
+                                   virDomainPtr dom,
+                                   const char *devAlias,
+                                   void *opaque ATTRIBUTE_UNUSED)
+{
+    printf("%s EVENT: Domain %s(%d) device removed: %s\n",
+           __func__, virDomainGetName(dom), virDomainGetID(dom), devAlias);
+    return 0;
+}
+
 static void myFreeFunc(void *opaque)
 {
     char *str = opaque;
@@ -467,6 +478,7 @@ int main(int argc, char **argv)
     int callback12ret = -1;
     int callback13ret = -1;
     int callback14ret = -1;
+    int callback15ret = -1;
     struct sigaction action_stop;
 
     memset(&action_stop, 0, sizeof(action_stop));
@@ -565,6 +577,12 @@ int main(int argc, char **argv)
                                                      VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK,
                                                      VIR_DOMAIN_EVENT_CALLBACK(myDomainEventPMSuspendDiskCallback),
                                                      strdup("pmsuspend-disk"), myFreeFunc);
+    callback15ret = virConnectDomainEventRegisterAny(dconn,
+                                                     NULL,
+                                                     VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED,
+                                                     VIR_DOMAIN_EVENT_CALLBACK(myDomainEventDeviceRemovedCallback),
+                                                     strdup("device removed"), myFreeFunc);
+
     if ((callback1ret != -1) &&
         (callback2ret != -1) &&
         (callback3ret != -1) &&
@@ -577,7 +595,8 @@ int main(int argc, char **argv)
         (callback11ret != -1) &&
         (callback12ret != -1) &&
         (callback13ret != -1) &&
-        (callback14ret != -1)) {
+        (callback14ret != -1) &&
+        (callback15ret != -1)) {
         if (virConnectSetKeepAlive(dconn, 5, 3) < 0) {
             virErrorPtr err = virGetLastError();
             fprintf(stderr, "Failed to start keepalive protocol: %s\n",
@@ -606,6 +625,8 @@ int main(int argc, char **argv)
         virConnectDomainEventDeregisterAny(dconn, callback11ret);
         virConnectDomainEventDeregisterAny(dconn, callback12ret);
         virConnectDomainEventDeregisterAny(dconn, callback13ret);
+        virConnectDomainEventDeregisterAny(dconn, callback14ret);
+        virConnectDomainEventDeregisterAny(dconn, callback15ret);
         if (callback8ret != -1)
             virConnectDomainEventDeregisterAny(dconn, callback8ret);
     }
diff --git a/examples/domain-events/events-python/event-test.py b/examples/domain-events/events-python/event-test.py
index a04f8b5..4f3bdb0 100644
--- a/examples/domain-events/events-python/event-test.py
+++ b/examples/domain-events/events-python/event-test.py
@@ -495,6 +495,10 @@ def myDomainEventBalloonChangeCallback(conn, dom, actual, opaque):
 def myDomainEventPMSuspendDiskCallback(conn, dom, reason, opaque):
     print "myDomainEventPMSuspendDiskCallback: Domain %s(%s) system pmsuspend_disk" % (
             dom.name(), dom.ID())
+def myDomainEventDeviceRemovedCallback(conn, dom, dev, opaque):
+    print "myDomainEventDeviceRemovedCallback: Domain %s(%s) device removed: %s" % (
+            dom.name(), dom.ID(), dev)
+
 def usage(out=sys.stderr):
     print >>out, "usage: "+os.path.basename(sys.argv[0])+" [-hdl] [uri]"
     print >>out, "   uri will default to qemu:///system"
@@ -558,6 +562,7 @@ def main():
     vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_PMSUSPEND, myDomainEventPMSuspendCallback, None)
     vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE, myDomainEventBalloonChangeCallback, None)
     vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK, myDomainEventPMSuspendDiskCallback, None)
+    vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED, myDomainEventDeviceRemovedCallback, None)
 
     vc.setKeepAlive(5, 3)
 
-- 
2.0.0

openSUSE Build Service is sponsored by