The order of properties in 'device-list-properties' can hange arbitrarily and git is not great at picking the contexts in JSON to help seeing what changed. The new --dump-device-list-properties produces a stable order of properties and dumps also the type and default value mainly useful for comparing two .replies files. Example output: $ ./scripts/qemu-replies-tool.py tests/qemucapabilitiesdata/caps_9.0.0_x86_64.replies --dump-device-list-properties (dev) ICH9-LPC acpi-index uint32 (0) (dev) ICH9-LPC acpi-pci-hotplug-with-bridge-support bool (dev) ICH9-LPC acpi_disable_cmd uint8 (dev) ICH9-LPC acpi_enable_cmd uint8 (dev) ICH9-LPC addr int32 (-1) (dev) ICH9-LPC cpu-hotplug-legacy bool (dev) ICH9-LPC disable_s3 uint8 (dev) ICH9-LPC disable_s4 uint8 Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- scripts/qemu-replies-tool.py | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/scripts/qemu-replies-tool.py b/scripts/qemu-replies-tool.py index bdd63a9460..9ab1c30ee2 100755 --- a/scripts/qemu-replies-tool.py +++ b/scripts/qemu-replies-tool.py @@ -397,6 +397,32 @@ def dump_qom_list_types(conv): print('(qom) ' + t) +def dump_device_list_properties(conv): + devices = [] + + for (cmd, rep) in conv: + if cmd['execute'] == 'device-list-properties': + if 'return' in rep: + for arg in rep['return']: + for k in arg: + if k not in ['name', 'type', 'description', 'default-value']: + raise Exception("Unhandled 'device-list-properties' typename '%s' field '%s'" % (cmd['arguments']['typename'], k)) + + if 'default-value' in arg: + defval = ' (%s)' % str(arg['default-value']) + else: + defval = '' + + devices.append('%s %s %s%s' % (cmd['arguments']['typename'], + arg['name'], + arg['type'], + defval)) + devices.sort() + + for d in devices: + print('(dev) ' + d) + + def process_one(filename, args): try: conv = qemu_replies_load(filename) @@ -416,6 +442,10 @@ def process_one(filename, args): dump_qom_list_types(conv) dumped = True + if args.dump_all or args.dump_device_list_properties: + dump_device_list_properties(conv) + dumped = True + if dumped: return True @@ -464,6 +494,11 @@ functional impact on libvirt. Dumps all types returned by 'qom-list-types' in a stable order with the 'parent' property dropped as it's not relevant for libvirt. + --dump-device-list-properties + + Dumps all properties (in stable order) of devices (in order libvirt queries + them) along with types and default values. + The tool can be also used to programmaticaly modify the '.replies' file by editting the 'modify_replies' method directly in the source, or for re-formatting and re-numbering the '.replies' file to conform with the required @@ -497,6 +532,9 @@ parser.add_argument('--dump-qmp-query-strings', action='store_true', parser.add_argument('--dump-qom-list-types', action='store_true', help='dump data from qom-list-types in a stable order') +parser.add_argument('--dump-device-list-properties', action='store_true', + help='dump all devices and their properties') + args = parser.parse_args() if not args.replyfile and not args.repliesdir: -- 2.43.0 _______________________________________________ Devel mailing list -- devel@xxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx