python: support recording QMP session to a file
commit5c66d7d8de9a00460199669d26cd83fba135bee5
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 28 Jan 2022 16:11:57 +0000 (28 16:11 +0000)
committerJohn Snow <jsnow@redhat.com>
Wed, 23 Feb 2022 22:07:26 +0000 (23 17:07 -0500)
tree5c782624a6de5c4174dff51036afce6120960184
parent439125293cc9cfb684eb4db23db04199f5f435a2
python: support recording QMP session to a file

When running QMP commands with very large response payloads, it is often
not easy to spot the info you want. If we can save the response to a
file then tools like 'grep' or 'jq' can be used to extract information.

For convenience of processing, we merge the QMP command and response
dictionaries together:

  {
      "arguments": {},
      "execute": "query-kvm",
      "return": {
          "enabled": false,
          "present": true
      }
  }

Example usage

  $ ./scripts/qmp/qmp-shell-wrap -l q.log -p -- ./build/qemu-system-x86_64 -display none
  Welcome to the QMP low-level shell!
  Connected
  (QEMU) query-kvm
  {
      "return": {
          "enabled": false,
          "present": true
      }
  }
  (QEMU) query-mice
  {
      "return": [
          {
              "absolute": false,
              "current": true,
              "index": 2,
              "name": "QEMU PS/2 Mouse"
          }
      ]
  }

 $ jq --slurp '. | to_entries[] | select(.value.execute == "query-kvm") |
               .value.return.enabled' < q.log
   false

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20220128161157.36261-3-berrange@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
python/qemu/aqmp/qmp_shell.py
python/setup.cfg