提交 398d5766 编写于 作者: P Peter Krempa

qemu: caps: Probe events from 'query-qmp-schema' rather than 'query-events'

QEMU plans to deprecate 'query-events' as it's non-extensible. Events
are also described by 'query-qmp-schema' so we can use that one instead.

This patch adds detection of events to
virQEMUCapsProbeQMPSchemaCapabilities using the same structure declaring
them for the old approach (virQEMUCapsEvents). This is possible as the
name is the same in the QMP schema and our detector supports that
trivially.

For any complex queries virQEMUCapsQMPSchemaQueries can be used in the
future.

For now we still call 'query-events' and discard the result so that it's
obvious that the tests pass. This will be cleaned up later.

https://bugzilla.redhat.com/show_bug.cgi?id=1673320Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
上级 850bb78a
...@@ -986,6 +986,7 @@ struct virQEMUCapsStringFlags virQEMUCapsMigration[] = { ...@@ -986,6 +986,7 @@ struct virQEMUCapsStringFlags virQEMUCapsMigration[] = {
{ "rdma-pin-all", QEMU_CAPS_MIGRATE_RDMA }, { "rdma-pin-all", QEMU_CAPS_MIGRATE_RDMA },
}; };
/* Use virQEMUCapsQMPSchemaQueries for querying parameters of events */
struct virQEMUCapsStringFlags virQEMUCapsEvents[] = { struct virQEMUCapsStringFlags virQEMUCapsEvents[] = {
{ "MIGRATION", QEMU_CAPS_MIGRATION_EVENT }, { "MIGRATION", QEMU_CAPS_MIGRATION_EVENT },
{ "VSERPORT_CHANGE", QEMU_CAPS_VSERPORT_CHANGE }, { "VSERPORT_CHANGE", QEMU_CAPS_VSERPORT_CHANGE },
...@@ -2125,6 +2126,12 @@ virQEMUCapsProbeQMPEvents(virQEMUCapsPtr qemuCaps, ...@@ -2125,6 +2126,12 @@ virQEMUCapsProbeQMPEvents(virQEMUCapsPtr qemuCaps,
if ((nevents = qemuMonitorGetEvents(mon, &events)) < 0) if ((nevents = qemuMonitorGetEvents(mon, &events)) < 0)
return -1; return -1;
/* we can probe events also from the QMP schema so we can skip this here */
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_QMP_SCHEMA)) {
virStringListFreeCount(events, nevents);
return 0;
}
virQEMUCapsProcessStringFlags(qemuCaps, virQEMUCapsProcessStringFlags(qemuCaps,
ARRAY_CARDINALITY(virQEMUCapsEvents), ARRAY_CARDINALITY(virQEMUCapsEvents),
virQEMUCapsEvents, virQEMUCapsEvents,
...@@ -4140,6 +4147,14 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCapsPtr qemuCaps, ...@@ -4140,6 +4147,14 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCapsPtr qemuCaps,
virQEMUCapsSet(qemuCaps, entry->flag); virQEMUCapsSet(qemuCaps, entry->flag);
} }
/* probe also for basic event support */
for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsEvents); i++) {
entry = virQEMUCapsEvents + i;
if (virQEMUQAPISchemaPathExists(entry->value, schema))
virQEMUCapsSet(qemuCaps, entry->flag);
}
virHashFree(schema); virHashFree(schema);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册