This is a followup to
https://www.redhat.com/archives/libvir-list/2012-September/msg00643.html
As of QEMU 1.2 libvirt is supposed to stop parsing -help and instead
use various QMP commands to detect capabilities. Before we can do this,
the current QEMU capabilities code needs a serious cleanup and some
refactoring. The first half of this series does that major preparation
work, and the rest adds the new monitor commands and finally uses
them to detect capabilities.
Currently we consider "capabilities" to just refer to flags we detect
from -help. This series expands to cover all the things we detect
from QEMU, specifically including machine types, CPU definitions
and architecture. It introduces a single object to track all this
data and a centralized caching mechanism so we never re-query data
we already have somewhere.
b/src/conf/capabilities.h | 1
b/src/qemu/qemu_capabilities.c | 1813 ++++++----
b/src/qemu/qemu_capabilities.h | 47
b/src/qemu/qemu_command.c | 113
b/src/qemu/qemu_command.h | 6
b/src/qemu/qemu_conf.h | 2
b/src/qemu/qemu_driver.c | 211 -
b/src/qemu/qemu_monitor.c | 197 +
b/src/qemu/qemu_monitor.h | 42
b/src/qemu/qemu_monitor_json.c | 707 +++
b/src/qemu/qemu_monitor_json.h | 36
b/src/qemu/qemu_process.c | 26
b/tests/qemuhelptest.c | 2
b/tests/qemumonitorjsontest.c | 303 +
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-disabled.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-disabled.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-enabled.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-enabled.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model-fallback.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model-fallback.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model-nofallback.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-passthrough.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-passthrough.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-kvmclock.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-kvmclock.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-nofallback.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa1.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa1.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa2.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa2.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-qemu-host-passthrough.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology1.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology1.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology2.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology2.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology3.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology3.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-eoi-disabled.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-eoi-disabled.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-eoi-enabled.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-eoi-enabled.xml | 2
b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.args | 2
b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.xml | 2
b/tests/qemuxml2argvtest.c | 66
b/tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml | 2
b/tests/qemuxmlnstest.c | 7
tests/qemuxml2argvdata/qemu-lib.sh | 50
tests/qemuxml2argvdata/qemu-supported-cpus.sh | 15
tests/qemuxml2argvdata/qemu.sh | 15
67 files changed, 2499 insertions(+), 1256 deletions(-)