On Tue, Mar 03, 2020 at 17:34:35 +0100, Markus Armbruster wrote: > Based-on: <20200227144531.24309-1-armbru@xxxxxxxxxx> > > This series extends QMP introspection to cover deprecation. > Additionally, new option -compat lets you configure what to do when > deprecated interfaces get used. This is intended for testing users of > the management interfaces. It is experimental. I've quickly hacked up support for the 'deprecated' feature in libvirt's QMP validator. I've found a few uses of deprecated commands but they might very well be in code paths that are no longer invoked in modern qemus: Offenders from qemumonitorjsontest: 44) qemuMonitorJSONSetCPU ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'cpu-add': failed to validate arguments of 'cpu-add' against QAPI schema: ERROR: 'cpu-add' is deprecated FAILED 46) qemuMonitorJSONChangeMedia ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'change': failed to validate arguments of 'change' against QAPI schema: ERROR: 'change' is deprecated FAILED 49) qemuMonitorJSONSetMigrationSpeed ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'migrate_set_speed': failed to validate arguments of 'migrate_set_speed' against QAPI schema: ERROR: 'migrate_set_speed' is deprecated FAILED 50) qemuMonitorJSONSetMigrationDowntime ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'migrate_set_downtime': failed to validate arguments of 'migrate_set_downtime' against QAPI schema: ERROR: 'migrate_set_downtime' is deprecated FAILED 77) qemuMonitorJSONGetMigrationCacheSize ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-migrate-cache-size': failed to validate arguments of 'query-migrate-cache-size' against QAPI schema: ERROR: 'query-migrate-cache-size' is deprecated FAILED 83) qemuMonitorJSONQueryCPUs ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 93) GetCPUInfo(x86-basic-pluggable) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 94) GetCPUInfo(x86-full) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 95) GetCPUInfo(x86-node-full) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 97) GetCPUInfo(ppc64-basic) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 98) GetCPUInfo(ppc64-hotplug-1) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 99) GetCPUInfo(ppc64-hotplug-2) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 100) GetCPUInfo(ppc64-hotplug-4) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED 101) GetCPUInfo(ppc64-no-threads) ... libvirt: QEMU Driver error : internal error: unable to execute QEMU command 'query-cpus': failed to validate arguments of 'query-cpus' against QAPI schema: ERROR: 'query-cpus' is deprecated FAILED Here all commands are tested just for legacy reasons. query-cpus-fast is used on any live codebase, cpu-add is no longer used, change is not used with -blockdev. I'm not sure about the migration parameter APIs but I didn't check either. The above shows that we can't enable this without thinking even in our test-suite. I'll try to come up with a solution where we can enable the reporting of use of deprecated commands through /etc/qemu.conf so that I as an developer can always use it. I'm currently busy but I plan to follow up later. I've pushed the test change here: https://gitlab.com/pipo.sk/libvirt/-/commits/qmp-deprecated The unfortunate part is that we'll need to manually inspect the codebase for any deprecation in returned values. Our parser is 'artisanaly handcrafted' so it can't be introspected.