mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
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=1673320 Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
850bb78a6e
commit
398d5766b3
@ -986,6 +986,7 @@ struct virQEMUCapsStringFlags virQEMUCapsMigration[] = {
|
||||
{ "rdma-pin-all", QEMU_CAPS_MIGRATE_RDMA },
|
||||
};
|
||||
|
||||
/* Use virQEMUCapsQMPSchemaQueries for querying parameters of events */
|
||||
struct virQEMUCapsStringFlags virQEMUCapsEvents[] = {
|
||||
{ "MIGRATION", QEMU_CAPS_MIGRATION_EVENT },
|
||||
{ "VSERPORT_CHANGE", QEMU_CAPS_VSERPORT_CHANGE },
|
||||
@ -2125,6 +2126,12 @@ virQEMUCapsProbeQMPEvents(virQEMUCapsPtr qemuCaps,
|
||||
if ((nevents = qemuMonitorGetEvents(mon, &events)) < 0)
|
||||
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,
|
||||
ARRAY_CARDINALITY(virQEMUCapsEvents),
|
||||
virQEMUCapsEvents,
|
||||
@ -4140,6 +4147,14 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCapsPtr qemuCaps,
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user