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