[libvirt] [PATCH v3 19/24] qemu_monitor: Wire up MIGRATION event

2015-06-10 Thread Jiri Denemark
Thanks to Juan's work QEMU finally emits an event whenever migration
state changes.

Signed-off-by: Jiri Denemark jdene...@redhat.com
---

Notes:
The MIGRATION event is not supported by QEMU yet, this patch is based
on the current patches available on qemu-devel mailing list. However,
there were no objections to the design of the event, which makes it
unlikely to change. Anyway this will have to wait until the patches
are applied to QEMU.

ACKed in version 2

Version 3:
- rebased (context conflict in qemu_capabilities.[ch])

Version 2:
- new patch

 src/qemu/qemu_capabilities.c |  3 +++
 src/qemu/qemu_capabilities.h |  1 +
 src/qemu/qemu_monitor.c  | 14 ++
 src/qemu/qemu_monitor.h  |  8 
 src/qemu/qemu_monitor_json.c | 23 +++
 5 files changed, 49 insertions(+)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index ca7a7c2..a80763a 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -285,6 +285,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
   dea-key-wrap,
   pci-serial,
   aarch64-off,
+
+  migration-event, /* 190 */
 );
 
 
@@ -1499,6 +1501,7 @@ struct virQEMUCapsStringFlags virQEMUCapsEvents[] = {
 { BALLOON_CHANGE, QEMU_CAPS_BALLOON_EVENT },
 { SPICE_MIGRATE_COMPLETED, QEMU_CAPS_SEAMLESS_MIGRATION },
 { DEVICE_DELETED, QEMU_CAPS_DEVICE_DEL_EVENT },
+{ MIGRATION, QEMU_CAPS_MIGRATION_EVENT },
 };
 
 struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index b5a7770..34cd078 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -229,6 +229,7 @@ typedef enum {
 QEMU_CAPS_DEA_KEY_WRAP   = 187, /* -machine dea_key_wrap */
 QEMU_CAPS_DEVICE_PCI_SERIAL  = 188, /* -device pci-serial */
 QEMU_CAPS_CPU_AARCH64_OFF= 189, /* -cpu ...,aarch64=off */
+QEMU_CAPS_MIGRATION_EVENT   = 190, /* MIGRATION event */
 
 QEMU_CAPS_LAST,   /* this must always be the last item */
 } virQEMUCapsFlags;
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 94b0007..7f71a0e 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -1491,6 +1491,20 @@ qemuMonitorEmitSpiceMigrated(qemuMonitorPtr mon)
 
 
 int
+qemuMonitorEmitMigrationStatus(qemuMonitorPtr mon,
+   int status)
+{
+int ret = -1;
+VIR_DEBUG(mon=%p, status=%s,
+  mon, NULLSTR(qemuMonitorMigrationStatusTypeToString(status)));
+
+QEMU_MONITOR_CALLBACK(mon, ret, domainMigrationStatus, mon-vm, status);
+
+return ret;
+}
+
+
+int
 qemuMonitorSetCapabilities(qemuMonitorPtr mon)
 {
 QEMU_CHECK_MONITOR(mon);
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 1afc344..7018045 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -186,6 +186,11 @@ typedef int 
(*qemuMonitorDomainSpiceMigratedCallback)(qemuMonitorPtr mon,
   virDomainObjPtr vm,
   void *opaque);
 
+typedef int (*qemuMonitorDomainMigrationStatusCallback)(qemuMonitorPtr mon,
+virDomainObjPtr vm,
+int status,
+void *opaque);
+
 typedef struct _qemuMonitorCallbacks qemuMonitorCallbacks;
 typedef qemuMonitorCallbacks *qemuMonitorCallbacksPtr;
 struct _qemuMonitorCallbacks {
@@ -214,6 +219,7 @@ struct _qemuMonitorCallbacks {
 qemuMonitorDomainNicRxFilterChangedCallback domainNicRxFilterChanged;
 qemuMonitorDomainSerialChangeCallback domainSerialChange;
 qemuMonitorDomainSpiceMigratedCallback domainSpiceMigrated;
+qemuMonitorDomainMigrationStatusCallback domainMigrationStatus;
 };
 
 char *qemuMonitorEscapeArg(const char *in);
@@ -313,6 +319,8 @@ int qemuMonitorEmitSerialChange(qemuMonitorPtr mon,
 const char *devAlias,
 bool connected);
 int qemuMonitorEmitSpiceMigrated(qemuMonitorPtr mon);
+int qemuMonitorEmitMigrationStatus(qemuMonitorPtr mon,
+   int status);
 
 int qemuMonitorStartCPUs(qemuMonitorPtr mon,
  virConnectPtr conn);
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 0ba549e..1f070cf 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -84,6 +84,7 @@ static void qemuMonitorJSONHandleDeviceDeleted(qemuMonitorPtr 
mon, virJSONValueP
 static void qemuMonitorJSONHandleNicRxFilterChanged(qemuMonitorPtr mon, 
virJSONValuePtr data);
 static void qemuMonitorJSONHandleSerialChange(qemuMonitorPtr mon, 
virJSONValuePtr data);
 static void 

Re: [libvirt] [PATCH v3 19/24] qemu_monitor: Wire up MIGRATION event

2015-06-10 Thread Peter Krempa
On Wed, Jun 10, 2015 at 15:42:53 +0200, Jiri Denemark wrote:
 Thanks to Juan's work QEMU finally emits an event whenever migration
 state changes.
 
 Signed-off-by: Jiri Denemark jdene...@redhat.com
 ---
 
 Notes:
 The MIGRATION event is not supported by QEMU yet, this patch is based
 on the current patches available on qemu-devel mailing list. However,
 there were no objections to the design of the event, which makes it
 unlikely to change. Anyway this will have to wait until the patches
 are applied to QEMU.
 
 ACKed in version 2
 
 Version 3:
 - rebased (context conflict in qemu_capabilities.[ch])
 
 Version 2:
 - new patch
 
  src/qemu/qemu_capabilities.c |  3 +++
  src/qemu/qemu_capabilities.h |  1 +
  src/qemu/qemu_monitor.c  | 14 ++
  src/qemu/qemu_monitor.h  |  8 
  src/qemu/qemu_monitor_json.c | 23 +++
  5 files changed, 49 insertions(+)

...

 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
 index b5a7770..34cd078 100644
 --- a/src/qemu/qemu_capabilities.h
 +++ b/src/qemu/qemu_capabilities.h
 @@ -229,6 +229,7 @@ typedef enum {
  QEMU_CAPS_DEA_KEY_WRAP   = 187, /* -machine dea_key_wrap */
  QEMU_CAPS_DEVICE_PCI_SERIAL  = 188, /* -device pci-serial */
  QEMU_CAPS_CPU_AARCH64_OFF= 189, /* -cpu ...,aarch64=off */
 +QEMU_CAPS_MIGRATION_EVENT = 190, /* MIGRATION event */

The alignment of the equals sign is off here.

  
  QEMU_CAPS_LAST,   /* this must always be the last item */
  } virQEMUCapsFlags;

ACK with that fixed.

Peter


signature.asc
Description: Digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list