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.
-compat deprecated-input=<in-policy> configures what to do when deprecated input is received. Available policies: * accept: Accept deprecated commands and arguments (default) * reject: Reject them * crash: Crash -compat deprecated-output=<out-policy> configures what to do when deprecated output is sent. Available output policies: * accept: Emit deprecated command results and events (default) * hide: Suppress them For now, -compat covers only deprecated syntactic aspects of QMP. We may want to extend it to cover semantic aspects, CLI, and experimental features. v7: * Trivially rebased * PATCH 01: New, bug fix from Paolo * PATCH 02+11: Since: comments fixed, for real this time [Eric] * PATCH 03+10: qobject_output_visitor_new_qmp() and qobject_input_visitor_new_qmp() moved to qmp-dispatch.c to not break --disable-system --disable-tools builds * PATCH 05: Minor fallout from changed PATCH 03 * PATCH 06: Commit message typo fixed [Eric] v6: * Rebased, with straightforward conflicts * PATCH 1: More verbose commit message, explaining intent, and the lack of introspection [Peter], comments updated for 6.0, Eric's R-by kept anyway * PATCH 5+6: Split old PATCH 5 [Eric], Eric's R-by lept anyway * PATCH 7: New, correcting a latent issue so it doesn't break PATCH 8 * PATCH 10: Doc fix [Eric] v5: * Old PATCH 01-26 merged in commit f57587c7d47. * Rebased, non-trivial conflicts in PATCH 1 due to Meson, and in PATCH 7 due to visitor changes * PATCH 1: Comments updated for 5.2 [Eric] * PATCH 2: Harmless missing initialization fixed [Eric] * PATCH 3+4: Harmless missing has_FOO = true fixed [Eric] * PATCH 6+7: Commit message tweaked v4: * PATCH 05+07: Temporary memory leak plugged [Marc-André] * PATCH 23: Rewritten [Marc-André] * PATCH 24: Comment typo [Marc-André] * PATCH 30: Memory leaks plugged v3: * Rebased, non-trivial conflicts in PATCH 01+26+27+34 due to RST conversion and code motion * PATCH 28-29: Old PATCH 28 split up to ease review * PATCH 30-31: New * PATCH 32-33: Old PATCH 29 split up to ease review Comparison to RFC (24 Oct 2019): * Cover arguments and results in addition to commands and events * Half-baked "[RFC PATCH 18/19] qapi: Include a warning in the response to a deprecated command" dropped See also last item of Subject: Minutes of KVM Forum BoF on deprecating stuff Date: Fri, 26 Oct 2018 16:03:51 +0200 Message-ID: <87mur0ls8o....@dusky.pond.sub.org> https://lists.nongnu.org/archive/html/qemu-devel/2018-10/msg05828.html Cc: Lukáš Doktor <ldok...@redhat.com> Cc: libgues...@redhat.com Cc: libvir-list@redhat.com Cc: Daniel P. Berrange <berra...@redhat.com> Cc: Peter Krempa <pkre...@redhat.com> Cc: Kevin Wolf <kw...@redhat.com> Markus Armbruster (10): qemu-options: New -compat to set policy for deprecated interfaces qapi: Implement deprecated-output=hide for QMP command results qapi: Implement deprecated-output=hide for QMP events qapi: Implement deprecated-output=hide for QMP event data monitor: Drop query-qmp-schema 'gen': false hack qapi: Implement deprecated-output=hide for QMP introspection test-util-sockets: Add stub for monitor_set_cur() qapi: Implement deprecated-input=reject for QMP commands qapi: Implement deprecated-input=reject for QMP command arguments qapi: New -compat deprecated-input=crash Paolo Bonzini (1): qemuutil: remove qemu_set_fd_handler duplicate symbol qapi/compat.json | 52 ++++++++++++ qapi/introspect.json | 2 +- qapi/qapi-schema.json | 1 + include/qapi/compat-policy.h | 38 +++++++++ include/qapi/qmp/dispatch.h | 1 + include/qapi/qobject-input-visitor.h | 4 + include/qapi/qobject-output-visitor.h | 4 + include/qapi/visitor-impl.h | 6 ++ include/qapi/visitor.h | 18 +++++ monitor/monitor-internal.h | 3 - monitor/misc.c | 2 - monitor/qmp-cmds-control.c | 100 +++++++++++++++++++++--- qapi/qapi-visit-core.c | 18 +++++ qapi/qmp-dispatch.c | 35 +++++++++ qapi/qobject-input-visitor.c | 29 +++++++ qapi/qobject-output-visitor.c | 19 +++++ softmmu/vl.c | 17 ++++ storage-daemon/qemu-storage-daemon.c | 2 - stubs/set-fd-handler.c | 10 --- tests/unit/test-qmp-cmds.c | 91 +++++++++++++++++++-- tests/unit/test-qmp-event.c | 41 ++++++++++ tests/unit/test-util-sockets.c | 1 + qapi/meson.build | 1 + qapi/trace-events | 2 + qemu-options.hx | 22 ++++++ scripts/qapi/commands.py | 17 ++-- scripts/qapi/events.py | 21 ++++- scripts/qapi/visit.py | 15 ++++ stubs/meson.build | 1 - tests/qapi-schema/qapi-schema-test.json | 20 +++-- tests/qapi-schema/qapi-schema-test.out | 20 ++--- 31 files changed, 549 insertions(+), 64 deletions(-) create mode 100644 qapi/compat.json create mode 100644 include/qapi/compat-policy.h delete mode 100644 stubs/set-fd-handler.c -- 2.26.3