qemu-replies-tool: Dump 'qom-list-types'

The order of entries in 'qom-list-types' sometimes changes arbitrarily.

The --dump-qom-list-types produces a stable order and drops the for
libvirt unneeded 'parent' information.

Sample output:

$ ./scripts/qemu-replies-tool.py tests/qemucapabilitiesdata/caps_9.0.0_x86_64.replies --dump-qom-list-types
(qom) 486-v1-x86_64-cpu
(qom) 486-x86_64-cpu
(qom) AC97
(qom) AMDVI-PCI
(qom) Broadwell-IBRS-x86_64-cpu
(qom) Broadwell-noTSX-IBRS-x86_64-cpu
(qom) Broadwell-noTSX-x86_64-cpu
(qom) Broadwell-v1-x86_64-cpu
(qom) Broadwell-v2-x86_64-cpu
(qom) Broadwell-v3-x86_64-cpu

[...]

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
Peter Krempa 2024-01-04 13:22:34 +01:00
parent e355ea422d
commit 910e25afa3

View File

@ -382,6 +382,28 @@ def dump_qmp_probe_strings(schemalist):
dump_qmp_probe_strings_iter(c, '(qmp) ' + c, [], schemadict) dump_qmp_probe_strings_iter(c, '(qmp) ' + c, [], schemadict)
def dump_qom_list_types(conv):
types = []
for (cmd, rep) in conv:
if cmd['execute'] == 'qom-list-types':
for qomtype in rep['return']:
# validate known fields:
# 'parent' is ignored below as it causes output churn
for k in qomtype:
if k not in ['name', 'parent']:
raise Exception("Unhandled 'qom-list-types' field '%s'" % k)
types.append(qomtype['name'])
break
types.sort()
for t in types:
print('(qom) ' + t)
def process_one(filename, args): def process_one(filename, args):
try: try:
conv = qemu_replies_load(filename) conv = qemu_replies_load(filename)
@ -397,6 +419,10 @@ def process_one(filename, args):
dump_qmp_probe_strings(rep['return']) dump_qmp_probe_strings(rep['return'])
dumped = True dumped = True
if args.dump_all or args.dump_qom_list_types:
dump_qom_list_types(conv)
dumped = True
if dumped: if dumped:
return True return True
@ -441,6 +467,11 @@ functional impact on libvirt.
virQEMUCapsQMPSchemaQueries. It's useful to find specific query string virQEMUCapsQMPSchemaQueries. It's useful to find specific query string
without having to piece the information together from 'query-qmp-schema' without having to piece the information together from 'query-qmp-schema'
--dump-qom-list-types
Dumps all types returned by 'qom-list-types' in a stable order with the
'parent' property dropped as it's not relevant for libvirt.
The tool can be also used to programmaticaly modify the '.replies' file by The tool can be also used to programmaticaly modify the '.replies' file by
editing the 'modify_replies' method directly in the source, or for editing the 'modify_replies' method directly in the source, or for
re-formatting and re-numbering the '.replies' file to conform with the required re-formatting and re-numbering the '.replies' file to conform with the required
@ -471,6 +502,9 @@ parser.add_argument('--dump-all', action='store_true',
parser.add_argument('--dump-qmp-query-strings', action='store_true', parser.add_argument('--dump-qmp-query-strings', action='store_true',
help='dump QMP schema in form of query strings used to probe capabilities') help='dump QMP schema in form of query strings used to probe capabilities')
parser.add_argument('--dump-qom-list-types', action='store_true',
help='dump data from qom-list-types in a stable order')
args = parser.parse_args() args = parser.parse_args()
files = [] files = []