[PATCH 1/8] scripts: qemu-replies-tool: Convert the QMP conversation to list of dicts

Peter Krempa via Devel posted 8 patches 1 week, 2 days ago
[PATCH 1/8] scripts: qemu-replies-tool: Convert the QMP conversation to list of dicts
Posted by Peter Krempa via Devel 1 week, 2 days ago
From: Peter Krempa <pkrempa@redhat.com>

Currently the conversation was a list of tuples. Since upcoming patches
will want to store some additional flags with the processed commands
convert it to a list of dicts, so that we can name the individual
fields.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 scripts/qemu-replies-tool.py | 54 ++++++++++++++++++------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/scripts/qemu-replies-tool.py b/scripts/qemu-replies-tool.py
index 6d474a83f2..4ec06ee95d 100755
--- a/scripts/qemu-replies-tool.py
+++ b/scripts/qemu-replies-tool.py
@@ -36,13 +36,13 @@ def qemu_replies_load(filename):
                     if command is None:
                         command = json.loads(jsonstr)
                     else:
-                        conv.append((command, json.loads(jsonstr)))
+                        conv.append({'cmd': command, 'rep': json.loads(jsonstr)})
                         command = None

                     jsonstr = ''

             if command is not None and jsonstr != '':
-                conv.append((command, json.loads(jsonstr)))
+                conv.append({'cmd': command, 'rep': json.loads(jsonstr)})
                 command = None
                 jsonstr = ''

@@ -67,14 +67,14 @@ def qemu_replies_compare_or_replace(filename, conv, regenerate_on_error):
     seq = 9999  # poison the initial counter state

     # possibly fix mis-ordererd 'id' fields
-    for (cmd, rep) in conv:
+    for c in conv:
         # 'qmp_capabilities' command restarts the numbering sequence
-        if cmd['execute'] == 'qmp_capabilities':
+        if c['cmd']['execute'] == 'qmp_capabilities':
             seq = 1

         newid = 'libvirt-%d' % seq
-        cmd['id'] = newid
-        rep['id'] = newid
+        c['cmd']['id'] = newid
+        c['rep']['id'] = newid

         seq += 1

@@ -82,7 +82,7 @@ def qemu_replies_compare_or_replace(filename, conv, regenerate_on_error):
         if len(actual) != 0:
             actual += '\n\n'

-        actual += json.dumps(cmd, indent=2) + '\n\n' + json.dumps(rep, indent=2)
+        actual += json.dumps(c['cmd'], indent=2) + '\n\n' + json.dumps(c['rep'], indent=2)

     expect = ''
     actual += '\n'
@@ -114,9 +114,9 @@ def modify_replies(conv):
     version = None  # filled with a dictionary  with 'major', 'minor', 'micro' keys

     # find version of current qemu for later use
-    for (cmd, rep) in conv:
-        if cmd['execute'] == 'query-version':
-            version = rep['return']['qemu']
+    for c in conv:
+        if c['cmd']['execute'] == 'query-version':
+            version = c['rep']['return']['qemu']
             break

     if version is None:
@@ -126,9 +126,9 @@ def modify_replies(conv):
     # Find index of a command, in this case we're looking for the last
     # invocation of given command
     for i in range(len(conv)):
-        (cmd, rep) = conv[i]
+        c = conv[i]

-        if cmd['execute'] == 'device-list-properties':
+        if c['cmd']['execute'] == 'device-list-properties':
             idx = i

     if idx == -1:
@@ -161,9 +161,9 @@ def modify_replies(conv):

     # insert command into the QMP conversation based on version of qemu
     if version['major'] >= 8 and version['minor'] > 0:
-        conv.insert(idx, (cmd, reply))
+        conv.insert(idx, {'cmd': cmd, 'rep': reply})
     else:
-        conv.insert(idx, (cmd, reply_unsupp))
+        conv.insert(idx, {'cmd': cmd, 'rep': reply_unsupp})


 # Validates that 'entry' (an member of the QMP schema):
@@ -389,9 +389,9 @@ def dump_qmp_probe_strings(schemalist):
 def dump_qom_list_types(conv):
     types = []

-    for (cmd, rep) in conv:
-        if cmd['execute'] == 'qom-list-types':
-            for qomtype in rep['return']:
+    for c in conv:
+        if c['cmd']['execute'] == 'qom-list-types':
+            for qomtype in c['rep']['return']:
                 # validate known fields:
                 # 'parent' is ignored below as it causes output churn
                 for k in qomtype:
@@ -411,20 +411,20 @@ def dump_qom_list_types(conv):
 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 c in conv:
+        if c['cmd']['execute'] == 'device-list-properties':
+            if 'return' in c['rep']:
+                for arg in c['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))
+                            raise Exception("Unhandled 'device-list-properties' typename '%s' field '%s'" % (c['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'],
+                    devices.append('%s %s %s%s' % (c['cmd']['arguments']['typename'],
                                                    arg['name'],
                                                    arg['type'],
                                                    defval))
@@ -441,12 +441,12 @@ def process_one(filename, args):

         modify_replies(conv)

-        for (cmd, rep) in conv:
-            if cmd['execute'] == 'query-qmp-schema':
-                validate_qmp_schema(rep['return'])
+        for c in conv:
+            if c['cmd']['execute'] == 'query-qmp-schema':
+                validate_qmp_schema(c['rep']['return'])

                 if args.dump_all or args.dump_qmp_query_strings:
-                    dump_qmp_probe_strings(rep['return'])
+                    dump_qmp_probe_strings(c['rep']['return'])
                     dumped = True

         if args.dump_all or args.dump_qom_list_types:
-- 
2.51.0