All of lore.kernel.org
 help / color / mirror / Atom feed
From: Amos Kong <akong@redhat.com>
To: qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, qiaonuohan@cn.fujitsu.com,
	lcapitulino@redhat.com, aliguori@us.ibm.com, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH] full introspection support for QMP
Date: Thu, 20 Jun 2013 18:16:14 +0800	[thread overview]
Message-ID: <20130620101614.GA9587@amosk.info> (raw)
In-Reply-To: <20130619124914.GA11095@amosk.info>

[-- Attachment #1: Type: text/plain, Size: 3119 bytes --]

On Wed, Jun 19, 2013 at 08:49:14PM +0800, Amos Kong wrote:
> On Wed, Jun 19, 2013 at 08:24:37PM +0800, Amos Kong wrote:
> > Introduces new monitor command to query QMP schema information,
> > the return data is a nested dict/list, it contains the useful
> > metadata.
> > 
> > we can add events definations to qapi-schema.json, then it can
> > also be queried.
>  
> I didn't implement to return complete schema in one go in this
> version, will do it in next version. We have a recursive define
> 'DataObject', we only display one layer for it.


I have implemented the return whole schema in one go.
Attached the whole output [query-qmp-schema--whole.txt]
I will send the patch out after cleanup.

DataObject description might cause confuse, I also plan
to add a detail document [docs/qmp-full-introspection.txt] (uncompleted)

Welcome your comments :)

============== full introspection support for QMP ===================

== Purpose ==

Add a new interface to provide QMP schema information to management,

== Usage ==

Execute QMP command:

  { "execute": "query-qmp-schema" }

Returns:

  { "return": [
      {
          "name": "query-name",
          "type": "Command",
          "returns": [
              {
                  "name": "*name",
                  "type": "str"
              }
          ]
      }  
   }

The whole schema information will be returned in one go, it contains
commands and event. It doesn't support to filter information by type
or name.

We have four types (ImageInfo, BlockStats, PciDeviceInfo,
SchemaData) that uses themself in their own define data
directly or indirectly, we will not repeatedly extend them.

== more description of 'DataObject' type ==

We use 'DataObject' to describe dynamical data struct, it might be
nested dictionary, list or string.

'DataObject' itself is a arbitrary and nested dictionary, the
dictionary has three keys ('name', 'type', 'data'), 'name' and
'data' are optional.

* For describing Dictionary, we set the key to 'name', and set the
  value to 'type'
* For describing List, we don't set 'name', just set the value to
  'type'
* If the value of dictionary or list is non-native type, we extend
  the non-native type to dictionary, set it to 'data',  and set the
  non-native type's name to 'type'.


1) Dict, value is native type
{ 'id': 'str', ... }
--------------------
[
    {
        "name": "id", 
        "type": "str"
    },
    .....
]

2) Dict, value is defined types
{ 'options': 'TpmTypeOptions' }
-------------------------------
[
    {
        "name": "options", 
        "type": "TpmTypeOptions", 
        "data": [
            {
                "name": "passthrough", 
                "type": "str", 
            }
        ]
    },
    .....
]

3) List, value is native type
['str', ... ]
-------------
[
    {
        "type": "str"
    },
    ....
]

4) List, value is defined types
['TpmTypeOptions', ... ]
------------------------
[
    {
        "type": "TpmTypeOptions", 
        "data": [
            {
                "name": "passthrough", 
                "type": "str", 
            }
        ]
    },
    .....
]

[-- Attachment #2: query-qmp-schema--whole.txt --]
[-- Type: text/plain, Size: 117255 bytes --]

{
    "QMP": {
        "version": {
            "qemu": {
                "micro": 50, 
                "minor": 5, 
                "major": 1
            }, 
            "package": ""
        }, 
        "capabilities": [
        ]
    }
}
{
    "return": {
    }
}
{
    "return": [
        {
            "name": "add_client", 
            "type": "Command", 
            "data": [
                {
                    "name": "*skipauth", 
                    "type": "bool"
                }, 
                {
                    "name": "protocol", 
                    "type": "str"
                }, 
                {
                    "name": "fdname", 
                    "type": "str"
                }, 
                {
                    "name": "*tls", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "query-name", 
            "type": "Command", 
            "returns": [
                {
                    "name": "*name", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-version", 
            "type": "Command", 
            "returns": [
                {
                    "name": "qemu", 
                    "data": [
                        {
                            "name": "micro", 
                            "type": "int"
                        }, 
                        {
                            "name": "minor", 
                            "type": "int"
                        }, 
                        {
                            "name": "major", 
                            "type": "int"
                        }
                    ]
                }, 
                {
                    "name": "package", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-kvm", 
            "type": "Command", 
            "returns": [
                {
                    "name": "enabled", 
                    "type": "bool"
                }, 
                {
                    "name": "present", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "query-status", 
            "type": "Command", 
            "returns": [
                {
                    "name": "status", 
                    "type": "RunState", 
                    "data": [
                        {
                            "type": "debug"
                        }, 
                        {
                            "type": "inmigrate"
                        }, 
                        {
                            "type": "internal-error"
                        }, 
                        {
                            "type": "io-error"
                        }, 
                        {
                            "type": "paused"
                        }, 
                        {
                            "type": "postmigrate"
                        }, 
                        {
                            "type": "prelaunch"
                        }, 
                        {
                            "type": "finish-migrate"
                        }, 
                        {
                            "type": "restore-vm"
                        }, 
                        {
                            "type": "running"
                        }, 
                        {
                            "type": "save-vm"
                        }, 
                        {
                            "type": "shutdown"
                        }, 
                        {
                            "type": "suspended"
                        }, 
                        {
                            "type": "watchdog"
                        }, 
                        {
                            "type": "guest-panicked"
                        }
                    ]
                }, 
                {
                    "name": "singlestep", 
                    "type": "bool"
                }, 
                {
                    "name": "running", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "query-uuid", 
            "type": "Command", 
            "returns": [
                {
                    "name": "UUID", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-chardev", 
            "type": "Command", 
            "returns": [
                {
                    "type": "ChardevInfo", 
                    "data": [
                        {
                            "name": "filename", 
                            "type": "str"
                        }, 
                        {
                            "name": "label", 
                            "type": "str"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "ringbuf-write", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*format", 
                    "type": "DataFormat", 
                    "data": [
                        {
                            "type": "utf8"
                        }, 
                        {
                            "type": "base64"
                        }
                    ]
                }, 
                {
                    "name": "data", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "ringbuf-read", 
            "type": "Command", 
            "returns": [
                {
                    "type": "str"
                }
            ], 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*format", 
                    "type": "DataFormat", 
                    "data": [
                        {
                            "type": "utf8"
                        }, 
                        {
                            "type": "base64"
                        }
                    ]
                }, 
                {
                    "name": "size", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "query-commands", 
            "type": "Command", 
            "returns": [
                {
                    "type": "CommandInfo", 
                    "data": [
                        {
                            "name": "name", 
                            "type": "str"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-events", 
            "type": "Command", 
            "returns": [
                {
                    "type": "EventInfo", 
                    "data": [
                        {
                            "name": "name", 
                            "type": "str"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-migrate", 
            "type": "Command", 
            "returns": [
                {
                    "name": "*disk", 
                    "type": "MigrationStats", 
                    "data": [
                        {
                            "name": "total", 
                            "type": "int"
                        }, 
                        {
                            "name": "remaining", 
                            "type": "int"
                        }, 
                        {
                            "name": "transferred", 
                            "type": "int"
                        }, 
                        {
                            "name": "duplicate", 
                            "type": "int"
                        }, 
                        {
                            "name": "dirty-pages-rate", 
                            "type": "int"
                        }, 
                        {
                            "name": "skipped", 
                            "type": "int"
                        }, 
                        {
                            "name": "normal-bytes", 
                            "type": "int"
                        }, 
                        {
                            "name": "normal", 
                            "type": "int"
                        }
                    ]
                }, 
                {
                    "name": "*xbzrle-cache", 
                    "type": "XBZRLECacheStats", 
                    "data": [
                        {
                            "name": "bytes", 
                            "type": "int"
                        }, 
                        {
                            "name": "cache-size", 
                            "type": "int"
                        }, 
                        {
                            "name": "pages", 
                            "type": "int"
                        }, 
                        {
                            "name": "overflow", 
                            "type": "int"
                        }, 
                        {
                            "name": "cache-miss", 
                            "type": "int"
                        }
                    ]
                }, 
                {
                    "name": "*downtime", 
                    "type": "int"
                }, 
                {
                    "name": "*expected-downtime", 
                    "type": "int"
                }, 
                {
                    "name": "*status", 
                    "type": "str"
                }, 
                {
                    "name": "*ram", 
                    "type": "MigrationStats", 
                    "data": [
                        {
                            "name": "total", 
                            "type": "int"
                        }, 
                        {
                            "name": "remaining", 
                            "type": "int"
                        }, 
                        {
                            "name": "transferred", 
                            "type": "int"
                        }, 
                        {
                            "name": "duplicate", 
                            "type": "int"
                        }, 
                        {
                            "name": "dirty-pages-rate", 
                            "type": "int"
                        }, 
                        {
                            "name": "skipped", 
                            "type": "int"
                        }, 
                        {
                            "name": "normal-bytes", 
                            "type": "int"
                        }, 
                        {
                            "name": "normal", 
                            "type": "int"
                        }
                    ]
                }, 
                {
                    "name": "*total-time", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "migrate-set-capabilities", 
            "type": "Command", 
            "data": [
                {
                    "name": "capabilities", 
                    "data": [
                        {
                            "type": "MigrationCapabilityStatus", 
                            "data": [
                                {
                                    "name": "state", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "capability", 
                                    "type": "MigrationCapability", 
                                    "data": [
                                        {
                                            "type": "xbzrle"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-migrate-capabilities", 
            "type": "Command", 
            "returns": [
                {
                    "type": "MigrationCapabilityStatus", 
                    "data": [
                        {
                            "name": "state", 
                            "type": "bool"
                        }, 
                        {
                            "name": "capability", 
                            "type": "MigrationCapability", 
                            "data": [
                                {
                                    "type": "xbzrle"
                                }
                            ]
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-mice", 
            "type": "Command", 
            "returns": [
                {
                    "type": "MouseInfo", 
                    "data": [
                        {
                            "name": "index", 
                            "type": "int"
                        }, 
                        {
                            "name": "name", 
                            "type": "str"
                        }, 
                        {
                            "name": "current", 
                            "type": "bool"
                        }, 
                        {
                            "name": "absolute", 
                            "type": "bool"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-cpus", 
            "type": "Command", 
            "returns": [
                {
                    "type": "CpuInfo", 
                    "data": [
                        {
                            "name": "*PC", 
                            "type": "int"
                        }, 
                        {
                            "name": "*pc", 
                            "type": "int"
                        }, 
                        {
                            "name": "current", 
                            "type": "bool"
                        }, 
                        {
                            "name": "CPU", 
                            "type": "int"
                        }, 
                        {
                            "name": "halted", 
                            "type": "bool"
                        }, 
                        {
                            "name": "*npc", 
                            "type": "int"
                        }, 
                        {
                            "name": "*nip", 
                            "type": "int"
                        }, 
                        {
                            "name": "thread_id", 
                            "type": "int"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-block", 
            "type": "Command", 
            "returns": [
                {
                    "type": "BlockInfo", 
                    "data": [
                        {
                            "name": "device", 
                            "type": "str"
                        }, 
                        {
                            "name": "locked", 
                            "type": "bool"
                        }, 
                        {
                            "name": "removable", 
                            "type": "bool"
                        }, 
                        {
                            "name": "*dirty", 
                            "type": "BlockDirtyInfo", 
                            "data": [
                                {
                                    "name": "granularity", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "count", 
                                    "type": "int"
                                }
                            ]
                        }, 
                        {
                            "name": "*io-status", 
                            "type": "BlockDeviceIoStatus", 
                            "data": [
                                {
                                    "type": "ok"
                                }, 
                                {
                                    "type": "failed"
                                }, 
                                {
                                    "type": "nospace"
                                }
                            ]
                        }, 
                        {
                            "name": "*tray_open", 
                            "type": "bool"
                        }, 
                        {
                            "name": "type", 
                            "type": "str"
                        }, 
                        {
                            "name": "*inserted", 
                            "type": "BlockDeviceInfo", 
                            "data": [
                                {
                                    "name": "iops_rd", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "*backing_file", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "image", 
                                    "type": "ImageInfo", 
                                    "data": [
                                        {
                                            "name": "*backing-filename", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*actual-size", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "*backing-image", 
                                            "type": "ImageInfo"
                                        }, 
                                        {
                                            "name": "*full-backing-filename", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*cluster-size", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "virtual-size", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "filename", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*encrypted", 
                                            "type": "bool"
                                        }, 
                                        {
                                            "name": "format", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*snapshots", 
                                            "data": [
                                                {
                                                    "type": "SnapshotInfo", 
                                                    "data": [
                                                        {
                                                            "name": "vm-clock-nsec", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "name", 
                                                            "type": "str"
                                                        }, 
                                                        {
                                                            "name": "date-sec", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "date-nsec", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "vm-clock-sec", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "id", 
                                                            "type": "str"
                                                         }, 
                                                        {
                                                            "name": "vm-state-size", 
                                                            "type": "int"
                                                        }
                                                    ]
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "*backing-filename-format", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*dirty-flag", 
                                            "type": "bool"
                                        }
                                    ]
                                }, 
                                {
                                    "name": "iops_wr", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "ro", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "backing_file_depth", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "drv", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "iops", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "bps_wr", 
                                    "type" : "int"
                                }, 
                                {
                                    "name": "encrypted", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "bps", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "bps_rd", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "file", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "encryption_key_missing", 
                                    "type": "bool"
                                }
                            ]
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-blockstats", 
            "type": "Command", 
            "returns": [
                {
                    "type": "BlockStats", 
                    "data": [
                        {
                            "name": "stats", 
                            "type": "BlockDeviceStats", 
                            "data": [
                                {
                                    "name": "flush_total_time_ns", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "wr_highest_offset", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "wr_total_time_ns", 
                                    "type": "int"
                                }, 
                                 {
                                    "name": "wr_bytes", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "rd_total_time_ns", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "flush_operations", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "wr_operations", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "rd_bytes", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "rd_operations", 
                                    "type": "int"
                                }
                            ]
                        }, 
                        {
                            "name": "*device", 
                            "type": "str"
                        }, 
                        {
                            "name": "*parent", 
                            "type": "BlockStats"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-vnc", 
            "type": "Command", 
            "returns": [
                {
                    "name": "*clients", 
                    "data": [
                        {
                            "type": "VncClientInfo", 
                            "data": [
                                {
                                    "name": "family", 
                                    "type": "str"
                                }, 
                                 {
                                    "name": "*sasl_username", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "service", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "host", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "*x509_dname", 
                                    "type": "str"
                                }
                            ]
                        }
                    ]
                }, 
                {
                    "name": "*family", 
                    "type": "str"
                }, 
                {
                    "name": "enabled", 
                    "type": "bool"
                }, 
                {
                    "name": "*service", 
                    "type": "str"
                }, 
                {
                    "name": "*host", 
                    "type": "str"
                }, 
                {
                    "name": "*auth", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-spice", 
            "type": "Command", 
            "returns": [
                {
                    "name": "migrated", 
                    "type": "bool"
                }, 
                {
                    "name": "enabled", 
                    "type": "bool"
                }, 
                {
                    "name": "*port", 
                    "type": "int"
                }, 
                {
                    "name": "*channels", 
                    "data": [
                        {
                            "type": "SpiceChannel", 
                             "data": [
                                {
                                    "name": "port", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "family", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "channel-type", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "connection-id", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "host", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "channel-id", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "tls", 
                                    "type": "bool"
                                }
                            ]
                        }
                    ]
                }, 
                {
                    "name": "*compiled-version", 
                    "type": "str"
                }, 
                {
                    "name": "mouse-mode", 
                    "type": "SpiceQueryMouseMode", 
                    "data": [
                        {
                            "type": "client"
                        }, 
                        {
                            "type": "server"
                        }, 
                        {
                            "type": "unknown"
                        }
                    ]
                }, 
                {
                     "name": "*tls-port", 
                    "type": "int"
                }, 
                {
                    "name": "*host", 
                    "type": "str"
                }, 
                {
                    "name": "*auth", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-balloon", 
            "type": "Command", 
            "returns": [
                {
                    "name": "actual", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "query-pci", 
            "type": "Command", 
            "returns": [
                {
                    "type": "PciInfo", 
                    "data": [
                        {
                            "name": "bus", 
                            "type": "int"
                        }, 
                        {
                            "name": "devices", 
                            "data": [
                                {
                                    "type": "PciDeviceInfo", 
                                    "data": [
                                        {
                                            "name": "bus", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "*irq", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "qdev_id", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "slot", 
                                            "type": "int"
                                        }, 
                                         {
                                            "name": "*pci_bridge", 
                                            "type": "PciBridgeInfo", 
                                            "data": [
                                                {
                                                    "name": "bus", 
                                                    "data": [
                                                        {
                                                            "name": "prefetchable_range", 
                                                            "type": "PciMemoryRange", 
                                                            "data": [
                                                                {
                                                                    "name": "limit", 
                                                                    "type": "int"
                                                                }, 
                                                                {
                                                                    "name": "base", 
                                                                    "type": "int"
                                                                }
                                                            ]
                                                        }, 
                                                        {
                                                            "name": "memory_range", 
                                                            "type": "PciMemoryRange", 
                                                            "data": [
                                                                {
                                                                    "name": "limit", 
                                                                    "type": "int"
                                                                },  
                                                                {
                                                                    "name": "base", 
                                                                    "type": "int"
                                                                }
                                                            ]
                                                        }, 
                                                        {
                                                            "name": "secondary", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "io_range", 
                                                            "type": "PciMemoryRange", 
                                                            "data": [
                                                                {
                                                                    "name": "limit", 
                                                                    "type": "int"
                                                                }, 
                                                                {
                                                                    "name": "base", 
                                                                    "type": "int"
                                                                }
                                                            ]
                                                        }, 
                                                        {
                                                            "name": "number", 
                                                            "type": "int"
                                                        }, 
                                                         {
                                                            "name": "subordinate", 
                                                            "type": "int"
                                                        }
                                                    ]
                                                }, 
                                                {
                                                    "name": "*devices", 
                                                    "data": [
                                                        {
                                                            "type": "PciDeviceInfo"
                                                        }
                                                    ]
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "class_info", 
                                            "data": [
                                                {
                                                    "name": "*desc", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "class", 
                                                    "type": "int"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "id", 
                                            "data": [
                                                {
                                                    "name": "device", 
                                                    "type": "int"
                                                 }, 
                                                {
                                                    "name": "vendor", 
                                                    "type": "int"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "function", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "regions", 
                                            "data": [
                                                {
                                                    "type": "PciMemoryRegion", 
                                                    "data": [
                                                        {
                                                            "name": "*prefetch", 
                                                            "type": "bool"
                                                        }, 
                                                        {
                                                            "name": "bar", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "size", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "*mem_type_64", 
                                                            "type": "bool"
                                                        }, 
                                                         {
                                                            "name": "address", 
                                                            "type": "int"
                                                        }, 
                                                        {
                                                            "name": "type", 
                                                            "type": "str"
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-block-jobs", 
            "type": "Command", 
            "returns": [
                {
                    "type": "BlockJobInfo", 
                    "data": [
                        {
                            "name": "io-status", 
                            "type": "BlockDeviceIoStatus", 
                            "data": [
                                {
                                    "type": "ok"
                                }, 
                                {
                                    "type": "failed"
                                }, 
                                {
                                    "type": "nospace"
                                }
                            ]
                        }, 
                        {
                            "name": "device", 
                            "type": "str"
                        }, 
                        {
                            "name": "busy", 
                            "type": "bool"
                         }, 
                        {
                            "name": "len", 
                            "type": "int"
                        }, 
                        {
                            "name": "offset", 
                            "type": "int"
                        }, 
                        {
                            "name": "paused", 
                            "type": "bool"
                        }, 
                        {
                            "name": "speed", 
                            "type": "int"
                        }, 
                        {
                            "name": "type", 
                            "type": "str"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "quit", 
            "type": "Command"
        }, 
        {
            "name": "stop", 
            "type": "Command"
        }, 
        {
            "name": "system_reset", 
            "type": "Command"
        }, 
        {
            "name": "system_powerdown", 
            "type": "Command"
        }, 
        {
            "name": "cpu", 
            "type": "Command", 
            "data": [
                {
                    "name": "index", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "cpu-add", 
            "type": "Command", 
            "data": [
                {
                    "name": "id", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "memsave", 
            "type": "Command", 
            "data": [
                {
                    "name": "filename", 
                    "type": "str"
                }, 
                {
                    "name": "size", 
                    "type": "int"
                }, 
                {
                    "name": "val", 
                    "type ": "int"
                }, 
                {
                    "name": "*cpu-index", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "pmemsave", 
            "type": "Command", 
            "data": [
                {
                    "name": "filename", 
                    "type": "str"
                }, 
                {
                    "name": "size", 
                    "type": "int"
                }, 
                {
                    "name": "val", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "cont", 
            "type": "Command"
        }, 
        {
            "name": "system_wakeup", 
            "type": "Command"
        }, 
        {
            "name": "inject-nmi", 
            "type": "Command"
        }, 
        {
            "name": "set_link", 
            "type": "Command", 
            "data": [
                {
                    "name": "name", 
                    "type": "str"
                }, 
                {
                    "name": "up", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "block_passwd", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "password", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "balloon", 
            "type": "Command", 
            "data": [
                {
                    "name": "value", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "block_resize", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                     "type": "str"
                }, 
                {
                    "name": "size", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "transaction", 
            "type": "Command", 
            "data": [
                {
                    "name": "actions", 
                    "data": [
                        {
                            "type": "TransactionAction", 
                            "data": [
                                {
                                    "name": "blockdev-snapshot-sync", 
                                    "type": "BlockdevSnapshot", 
                                    "data": [
                                        {
                                            "name": "device", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*mode", 
                                            "type": "NewImageMode", 
                                            "data": [
                                                {
                                                    "type": "existing"
                                                }, 
                                                {
                                                    "type": "absolute-paths"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "*format", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "snapshot-file", 
                                            "type": "str"
                                        }
                                     ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "blockdev-snapshot-sync", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*mode", 
                    "type": "NewImageMode", 
                    "data": [
                        {
                            "type": "existing"
                        }, 
                        {
                            "type": "absolute-paths"
                        }
                    ]
                }, 
                {
                    "name": "*format", 
                    "type": "str"
                }, 
                {
                    "name": "snapshot-file", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "human-monitor-command", 
            "type": "Command", 
            "returns": [
                {
                    "type": "str"
                }
            ], 
            "data": [
                {
                    "name": "command-line", 
                    "type": "str"
                }, 
                {
                    "name": "*cpu-index", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "block-commit", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*speed", 
                    "type": "int"
                }, 
                {
                    "name": "*base", 
                    "type": "str"
                }, 
                {
                     "name": "top", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "drive-mirror", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*speed", 
                    "type": "int"
                }, 
                {
                    "name": "*mode", 
                    "type": "NewImageMode", 
                    "data": [
                        {
                            "type": "existing"
                        }, 
                        {
                            "type": "absolute-paths"
                        }
                    ]
                }, 
                {
                    "name": "*buf-size", 
                    "type": "int"
                }, 
                {
                    "name": "*format", 
                    "type": "str"
                }, 
                {
                    "name": "*on-source-error", 
                    "type": "BlockdevOnError", 
                    "data": [
                        {
                            "type": "report"
                        }, 
                        {
                            "type": "ignore"
                        }, 
                        {
                            "type": "enospc"
                        }, 
                        {
                            "type": "stop"
                        }
                    ]
                }, 
                {
                    "name": "*on-target-error", 
                    "type": "BlockdevOnError", 
                    "data": [
                        {
                            "type": "report"
                        }, 
                        {
                            "type": "ignore"
                        }, 
                        { 
                            "type": "enospc"
                        }, 
                        {
                            "type": "stop"
                        }
                    ]
                }, 
                {
                    "name": "sync", 
                    "type": "MirrorSyncMode", 
                    "data": [
                        {
                            "type": "top"
                        }, 
                        {
                            "type": "full"
                        }, 
                        {
                            "type": "none"
                        }
                    ]
                }, 
                {
                    "name": "*granularity", 
                    "type": "uint32"
                }, 
                {
                    "name": "target", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "migrate_cancel", 
            "type": "Command"
        }, 
        {
            "name": "migrate_set_downtime", 
            "type": "Command", 
            "data": [
                {
                    "name": "value", 
                    "type": "number"
                }
            ]
        }, 
        {
            "name": "migrate_set_speed", 
            "type": "Command", 
            "data": [
                {
                    "name": "value", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "migrate-set-cache-size", 
            "type": "Command", 
            "data": [
                {
                    "name": "value", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "query-migrate-cache-size", 
            "type": "Command", 
            "returns": [
                {
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "qom-list", 
            "type": "Command", 
            "returns": [
                {
                    "type": "ObjectPropertyInfo", 
                    "data": [
                        {
                            "name": "name", 
                            "type": "str"
                        }, 
                        {
                            "name": "type", 
                            "type": "str"
                        }
                    ]
                }
            ], 
            "data": [
                {
                    "name": "path", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "qom-get", 
            "type": "Command", 
            "returns": [
                {
                    "type": "visitor"
                }
            ], 
            "data": [
                {
                    "name": "path", 
                    "type": "str"
                }, 
                {
                    "name": "property", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "qom-set", 
            "type": "Command", 
            "data": [
                {
                    "name": "path", 
                    "type": "str"
                }, 
                {
                    "name": "property", 
                    "type": "str"
                }, 
                {
                    "name": "value", 
                    "type": "visitor"
                }
            ]
        }, 
        {
            "name": "set_password", 
            "type": "Command", 
            "data": [
                {
                    "name": "*connected", 
                    "type": "str"
                }, 
                {
                    "name": "protocol", 
                    "type": "str"
                }, 
                {
                    "name": "pass word", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "expire_password", 
            "type": "Command", 
            "data": [
                {
                    "name": "protocol", 
                    "type": "str"
                }, 
                {
                    "name": "time", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "eject", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*force", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "change-vnc-password", 
            "type": "Command", 
            "data": [
                {
                    "name": "password", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "change", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*arg", 
                    "type": "str"
                }, 
                {
                    "name": "target", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "block_set_io_throttle", 
            "type": "Command", 
            "data": [
                {
                    "name": "iops_rd", 
                    "type": "int"
                }, 
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "iops_wr", 
                    "type": "int"
                }, 
                {
                    "name": "iops",  
                    "type": "int"
                }, 
                {
                    "name": "bps_wr", 
                    "type": "int"
                }, 
                {
                    "name": "bps", 
                    "type": "int"
                }, 
                {
                    "name": "bps_rd", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "block-stream", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*speed", 
                    "type": "int"
                }, 
                {
                    "name": "*on-error", 
                    "type": "BlockdevOnError", 
                    "data": [
                        {
                            "type": "report"
                        }, 
                        {
                            "type": "ignore"
                        }, 
                        {
                            "type": "enospc"
                        }, 
                        {
                            "type": "stop"
                        }
                    ]
                }, 
                {
                    "name": "*base", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "block-job-set-speed", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "speed", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "block-job-cancel", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    " type": "str"
                }, 
                {
                    "name": "*force", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "block-job-pause", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "block-job-resume", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "block-job-complete", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "qom-list-types", 
            "type": "Command", 
            "returns": [
                {
                    "type": "ObjectTypeInfo", 
                    "data": [
                        {
                            "name": "name", 
                            "type": "str"
                        }
                    ]
                }
            ], 
            "data": [
                {
                    "name": "*implements", 
                    "type": "str"
                }, 
                {
                    "name": "*abstract", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "device-list-properties", 
            "type": "Command", 
            "returns": [
                {
                    "type": "DevicePropertyInfo", 
                    "data": [
                        {
                            "name": "name", 
                            "type": "str"
                        }, 
                        {
                            "n ame": "type", 
                            "type": "str"
                        }
                    ]
                }
            ], 
            "data": [
                {
                    "name": "typename", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "migrate", 
            "type": "Command", 
            "data": [
                {
                    "name": "uri", 
                    "type": "str"
                }, 
                {
                    "name": "*inc", 
                    "type": "bool"
                }, 
                {
                    "name": "*detach", 
                    "type": "bool"
                }, 
                {
                    "name": "*blk", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "xen-save-devices-state", 
            "type": "Command", 
            "data": [
                {
                    "name": "filename", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "xen-set-global-dirty-log", 
            "type": "Command", 
            "data": [
                {
                    "name": "enable", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "device_del", 
            "type": "Command", 
            "data": [
                {
                    "name": "id", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "dump-guest-memory", 
            "type": "Command", 
            "data": [
                {
                    "name": "*length", 
                    "type": "int"
                }, 
                {
                    "name": "protocol", 
                    "type": "str"
                }, 
                {
                    "name": "*begin ", 
                    "type": "int"
                }, 
                {
                    "name": "paging", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "netdev_add", 
            "type": "Command", 
            "data": [
                {
                    "name": "*props", 
                    "type": "**"
                }, 
                {
                    "name": "type", 
                    "type": "str"
                }, 
                {
                    "name": "id", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "netdev_del", 
            "type": "Command", 
            "data": [
                {
                    "name": "id", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "getfd", 
            "type": "Command", 
            "data": [
                {
                    "name": "fdname", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "closefd", 
            "type": "Command", 
            "data": [
                {
                    "name": "fdname", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-machines", 
            "type": "Command", 
            "returns": [
                {
                    "type": "MachineInfo", 
                    "data": [
                        {
                            "name": "*alias", 
                            "type": "str"
                        }, 
                        {
                            "name": "name", 
                            "type": "str"
                        }, 
                        {
                            "name": "*is-default", 
                            "type": "bool"
                        }, 
                         {
                            "name": "cpu-max", 
                            "type": "int"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-cpu-definitions", 
            "type": "Command", 
            "returns": [
                {
                    "type": "CpuDefinitionInfo", 
                    "data": [
                        {
                            "name": "name", 
                            "type": "str"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "add-fd", 
            "type": "Command", 
            "returns": [
                {
                    "name": "fd", 
                    "type": "int"
                }, 
                {
                    "name": "fdset-id", 
                    "type": "int"
                }
            ], 
            "data": [
                {
                    "name": "*fdset-id", 
                    "type": "int"
                }, 
                {
                    "name": "*opaque", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "remove-fd", 
            "type": "Command", 
            "data": [
                {
                    "name": "*fd", 
                    "type": "int"
                }, 
                {
                    "name": "fdset-id", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "query-fdsets", 
            "type": "Command", 
            "returns": [
                {
                    "type": "FdsetInfo", 
                    "data": [
                        {
                            "name": "fds", 
                            "data": [
                                {
                                    "type": "FdsetFdInfo", 
                                     "data": [
                                        {
                                            "name": "fd", 
                                            "type": "int"
                                        }, 
                                        {
                                            "name": "*opaque", 
                                            "type": "str"
                                        }
                                    ]
                                }
                            ]
                        }, 
                        {
                            "name": "fdset-id", 
                            "type": "int"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-target", 
            "type": "Command", 
            "returns": [
                {
                    "name": "arch", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "send-key", 
            "type": "Command", 
            "data": [
                {
                    "name": "keys", 
                    "data": [
                        {
                            "type": "KeyValue", 
                            "data": [
                                {
                                    "name": "qcode", 
                                    "type": "QKeyCode", 
                                    "data": [
                                        {
                                            "type": "shift"
                                        }, 
                                        {
                                            "type": "shift_r"
                                        }, 
                                        {
                                            "type": "alt"
                                        }, 
                                        {
                                             "type": "alt_r"
                                        }, 
                                        {
                                            "type": "altgr"
                                        }, 
                                        {
                                            "type": "altgr_r"
                                        }, 
                                        {
                                            "type": "ctrl"
                                        }, 
                                        {
                                            "type": "ctrl_r"
                                        }, 
                                        {
                                            "type": "menu"
                                        }, 
                                        {
                                            "type": "esc"
                                        }, 
                                        {
                                            "type": "1"
                                        }, 
                                        {
                                            "type": "2"
                                        }, 
                                        {
                                            "type": "3"
                                        }, 
                                        {
                                            "type": "4"
                                        }, 
                                        {
                                            "type": "5"
                                        }, 
                                        {
                                            "type": "6"
                                        }, 
                                        {
                                            "type": "7"
                                        }, 
                                        {
                                             "type": "8"
                                        }, 
                                        {
                                            "type": "9"
                                        }, 
                                        {
                                            "type": "0"
                                        }, 
                                        {
                                            "type": "minus"
                                        }, 
                                        {
                                            "type": "equal"
                                        }, 
                                        {
                                            "type": "backspace"
                                        }, 
                                        {
                                            "type": "tab"
                                        }, 
                                        {
                                            "type": "q"
                                        }, 
                                        {
                                            "type": "w"
                                        }, 
                                        {
                                            "type": "e"
                                        }, 
                                        {
                                            "type": "r"
                                        }, 
                                        {
                                            "type": "t"
                                        }, 
                                        {
                                            "type": "y"
                                        }, 
                                        {
                                            "type": "u"
                                        }, 
                                        {
                                             "type": "i"
                                        }, 
                                        {
                                            "type": "o"
                                        }, 
                                        {
                                            "type": "p"
                                        }, 
                                        {
                                            "type": "bracket_left"
                                        }, 
                                        {
                                            "type": "bracket_right"
                                        }, 
                                        {
                                            "type": "ret"
                                        }, 
                                        {
                                            "type": "a"
                                        }, 
                                        {
                                            "type": "s"
                                        }, 
                                        {
                                            "type": "d"
                                        }, 
                                        {
                                            "type": "f"
                                        }, 
                                        {
                                            "type": "g"
                                        }, 
                                        {
                                            "type": "h"
                                        }, 
                                        {
                                            "type": "j"
                                        }, 
                                        {
                                            "type": "k"
                                        }, 
                                         {
                                            "type": "l"
                                        }, 
                                        {
                                            "type": "semicolon"
                                        }, 
                                        {
                                            "type": "apostrophe"
                                        }, 
                                        {
                                            "type": "grave_accent"
                                        }, 
                                        {
                                            "type": "backslash"
                                        }, 
                                        {
                                            "type": "z"
                                        }, 
                                        {
                                            "type": "x"
                                        }, 
                                        {
                                            "type": "c"
                                        }, 
                                        {
                                            "type": "v"
                                        }, 
                                        {
                                            "type": "b"
                                        }, 
                                        {
                                            "type": "n"
                                        }, 
                                        {
                                            "type": "m"
                                        }, 
                                        {
                                            "type": "comma"
                                        }, 
                                        {
                                            "type": "dot"
                                        }, 
                                         {
                                            "type": "slash"
                                        }, 
                                        {
                                            "type": "asterisk"
                                        }, 
                                        {
                                            "type": "spc"
                                        }, 
                                        {
                                            "type": "caps_lock"
                                        }, 
                                        {
                                            "type": "f1"
                                        }, 
                                        {
                                            "type": "f2"
                                        }, 
                                        {
                                            "type": "f3"
                                        }, 
                                        {
                                            "type": "f4"
                                        }, 
                                        {
                                            "type": "f5"
                                        }, 
                                        {
                                            "type": "f6"
                                        }, 
                                        {
                                            "type": "f7"
                                        }, 
                                        {
                                            "type": "f8"
                                        }, 
                                        {
                                            "type": "f9"
                                        }, 
                                        {
                                            "type": "f10"
                                        }, 
                                         {
                                            "type": "num_lock"
                                        }, 
                                        {
                                            "type": "scroll_lock"
                                        }, 
                                        {
                                            "type": "kp_divide"
                                        }, 
                                        {
                                            "type": "kp_multiply"
                                        }, 
                                        {
                                            "type": "kp_subtract"
                                        }, 
                                        {
                                            "type": "kp_add"
                                        }, 
                                        {
                                            "type": "kp_enter"
                                        }, 
                                        {
                                            "type": "kp_decimal"
                                        }, 
                                        {
                                            "type": "sysrq"
                                        }, 
                                        {
                                            "type": "kp_0"
                                        }, 
                                        {
                                            "type": "kp_1"
                                        }, 
                                        {
                                            "type": "kp_2"
                                        }, 
                                        {
                                            "type": "kp_3"
                                        }, 
                                        {
                                             "type": "kp_4"
                                        }, 
                                        {
                                            "type": "kp_5"
                                        }, 
                                        {
                                            "type": "kp_6"
                                        }, 
                                        {
                                            "type": "kp_7"
                                        }, 
                                        {
                                            "type": "kp_8"
                                        }, 
                                        {
                                            "type": "kp_9"
                                        }, 
                                        {
                                            "type": "less"
                                        }, 
                                        {
                                            "type": "f11"
                                        }, 
                                        {
                                            "type": "f12"
                                        }, 
                                        {
                                            "type": "print"
                                        }, 
                                        {
                                            "type": "home"
                                        }, 
                                        {
                                            "type": "pgup"
                                        }, 
                                        {
                                            "type": "pgdn"
                                        }, 
                                        {
                                            "type": "end"
                                        }, 
                                        {
                                            "type": "left"
                                        }, 
                                        {
                                            "type": "up"
                                        }, 
                                        {
                                            "type": "down"
                                        }, 
                                        {
                                            "type": "right"
                                        }, 
                                        {
                                            "type": "insert"
                                        }, 
                                        {
                                            "type": "delete"
                                        }, 
                                        {
                                            "type": "stop"
                                        }, 
                                        {
                                            "type": "again"
                                        }, 
                                         {
                                            "type": "props"
                                        }, 
                                        {
                                            "type": "undo"
                                        }, 
                                        {
                                            "type": "front"
                                        }, 
                                        {
                                            "type": "copy"
                                        }, 
                                        {
                                            "type": "open"
                                        }, 
                                        {
                                            "type": "paste"
                                        }, 
                                        {
                                            "type": "find"
                                        }, 
                                        {
                                            "type": "cut"
                                        }, 
                                        {
                                            "type": "lf"
                                        }, 
                                        {
                                            "type": "help"
                                        }, 
                                        {
                                            "type": "meta_l"
                                        }, 
                                        {
                                            "type": "meta_r"
                                        }, 
                                        {
                                            "type": "compose"
                                        }
                                    ]
                                }, 
                                {
                                     "name": "number", 
                                    "type": "int"
                                }
                            ]
                        }
                    ]
                }, 
                {
                    "name": "*hold-time", 
                    "type": "int"
                }
            ]
        }, 
        {
            "name": "screendump", 
            "type": "Command", 
            "data": [
                {
                    "name": "filename", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "nbd-server-start", 
            "type": "Command", 
            "data": [
                {
                    "name": "addr", 
                    "type": "SocketAddress", 
                    "data": [
                        {
                            "name": "fd", 
                            "type": "String", 
                            "data": [
                                {
                                    "name": "str", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "unix", 
                            "type": "UnixSocketAddress", 
                            "data": [
                                {
                                    "name": "path", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "inet", 
                            "type": "InetSocketAddress", 
                            "data": [
                                {
                                    "name": "port", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "*ipv6", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "*ipv4", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "host", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "*to", 
                                    "type": "uint16"
                                }
                            ]
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "nbd-server-add", 
            "type": "Command", 
            "data": [
                {
                    "name": "device", 
                    "type": "str"
                }, 
                {
                    "name": "*writable", 
                    "type": "bool"
                }
            ]
        }, 
        {
            "name": "nbd-server-stop", 
            "type": "Command"
        }, 
        {
            "name": "chardev-add", 
            "type": "Command", 
            "returns": [
                {
                    "name": "*pty", 
                    "type": "str"
                }
            ], 
            "data": [
                {
                    "name": "backend", 
                    "type": "ChardevBackend", 
                    "data": [
                        {
                            "name": "serial", 
                            "type": "ChardevHostdev", 
                            "data": [
                                {
                                    "name": "device", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "spiceport", 
                            "type": "ChardevSpicePort", 
                            "data": [
                                {
                                    "name": "fqdn", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "stdio", 
                            "type": "ChardevStdio", 
                            "data": [
                                {
                                    "name": "*signal", 
                                    "type": "bool"
                                }
                            ]
                        }, 
                        {
                            "name": "memory", 
                            "type": "ChardevMemory", 
                            "data": [
                                {
                                    "name": "*size", 
                                    "type": "int"
                                }
                            ]
                        }, 
                        {
                            "name": "socket", 
                            "type": "ChardevSocket", 
                            "data": [
                                {
                                    "name": "*wait", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "*server", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "addr", 
                                    "type": "SocketAddress", 
                                    "data": [
                                        {
                                            "name": "fd", 
                                            "type": "String", 
                                            "data": [
                                                {
                                                    "name": "str", 
                                                    "type": "str"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "unix", 
                                            "type": "UnixSocketAddress", 
                                            "data": [
                                                {
                                                    "name": "path", 
                                                    "type": "str"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "inet", 
                                            "type": "InetSocketAddress", 
                                            "data": [
                                                {
                                                    "name": "port", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "*ipv6", 
                                                    "type": "bool"
                                                }, 
                                                {
                                                    "name": "*ipv4", 
                                                    "type": "bool"
                                                }, 
                                                {
                                                    "name": "host", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "*to", 
                                                    "type": "uint16"
                                                }
                                            ]
                                        }
                                    ]
                                }, 
                                {
                                    "name": "*nodelay", 
                                    "type": "bool"
                                }, 
                                {
                                    "name": "*telnet", 
                                    "type": "bool"
                                }
                            ]
                        }, 
                        {
                            "name": "msmouse", 
                            "type": "ChardevDummy", 
                            "data": [
                            ]
                        }, 
                        {
                            "name": "pty", 
                            "type": "ChardevDummy", 
                            "data": [
                            ]
                        }, 
                        {
                            "name": "braille", 
                            "type": "ChardevDummy", 
                            "data": [
                            ]
                        }, 
                        {
                            "name": "udp", 
                            "type": "ChardevUdp", 
                            "data": [
                                {
                                    "name": "remote", 
                                    "type": "SocketAddress", 
                                    "data": [
                                        {
                                            "name": "fd", 
                                            "type": "String", 
                                            "data": [
                                                {
                                                    "name": "str", 
                                                    "type": "str"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "unix", 
                                            "type": "UnixSocketAddress", 
                                            "data": [
                                                {
                                                    "name": "path", 
                                                    "type": "str"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "inet", 
                                            "type": "InetSocketAddress", 
                                            "data": [
                                                {
                                                    "name": "port", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "*ipv6", 
                                                    "type": "bool"
                                                }, 
                                                {
                                                    "name": "*ipv4", 
                                                    "type": "bool"
                                                }, 
                                                {
                                                    "name": "host", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "*to", 
                                                    "type": "uint16"
                                                }
                                            ]
                                        }
                                    ]
                                }, 
                                {
                                    "name": "*local", 
                                    "type": "SocketAddress", 
                                    "data": [
                                        {
                                            "name": "fd", 
                                            "type": "String", 
                                            "data": [
                                                {
                                                    "name": "str", 
                                                    "type": "str"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "unix", 
                                            "type": "UnixSocketAddress", 
                                            "data": [
                                                {
                                                    "name": "path", 
                                                    "type": "str"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "inet", 
                                            "type": "InetSocketAddress", 
                                            "data": [
                                                {
                                                    "name": "port", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "*ipv6", 
                                                    "type": "bool"
                                                }, 
                                                {
                                                    "name": "*ipv4", 
                                                    "type": "bool"
                                                }, 
                                                {
                                                    "name": "host", 
                                                    "type": "str"
                                                }, 
                                                {
                                                    "name": "*to", 
                                                    "type": "uint16"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }, 
                        {
                            "name": "mux", 
                            "type": "ChardevMux", 
                            "data": [
                                {
                                    "name": "chardev", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "console", 
                            "type": "ChardevDummy", 
                            "data": [
                            ]
                        }, 
                        {
                            "name": "parallel", 
                            "type": "ChardevHostdev", 
                            "data": [
                                {
                                    "name": "device", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "null", 
                            "type": "ChardevDummy", 
                            "data": [
                            ]
                        }, 
                        {
                            "name": "file", 
                            "type": "ChardevFile", 
                            "data": [
                                {
                                    "name": "*in", 
                                    "type": "str"
                                }, 
                                {
                                    "name": "out", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "spicevmc", 
                            "type": "ChardevSpiceChannel", 
                            "data": [
                                {
                                    "name": "type", 
                                    "type": "str"
                                }
                            ]
                        }, 
                        {
                            "name": "vc", 
                            "type": "ChardevVC", 
                            "data": [
                                {
                                    "name": "*cols", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "*width", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "*rows", 
                                    "type": "int"
                                }, 
                                {
                                    "name": "*height", 
                                    "type": "int"
                                }
                            ]
                        }, 
                        {
                            "name": "pipe", 
                            "type": "ChardevHostdev", 
                            "data": [
                                {
                                    "name": "device", 
                                    "type": "str"
                                }
                            ]
                        }
                    ]
                }, 
                {
                    "name": "id", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "chardev-remove", 
            "type": "Command", 
            "data": [
                {
                    "name": "id", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-tpm-models", 
            "type": "Command", 
            "returns": [
                {
                    "type": "TpmModel", 
                    "data": [
                        {
                            "type": "tpm-tis"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-tpm-types", 
            "type": "Command", 
            "returns": [
                {
                    "type": "TpmType", 
                    "data": [
                        {
                            "type": "passthrough"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-tpm", 
            "type": "Command", 
            "returns": [
                {
                    "type": "TPMInfo", 
                    "data": [
                        {
                            "name": "model", 
                            "type": "TpmModel", 
                            "data": [
                                {
                                    "type": "tpm-tis"
                                }
                            ]
                        }, 
                        {
                            "name": "options", 
                            "type": "TpmTypeOptions", 
                            "data": [
                                {
                                    "name": "passthrough", 
                                    "type": "TPMPassthroughOptions", 
                                    "data": [
                                        {
                                            "name": "*path", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*cancel-path", 
                                            "type": "str"
                                        }
                                    ]
                                }
                            ]
                        }, 
                        {
                            "name": "id", 
                            "type": "str"
                        }
                    ]
                }
            ]
        }, 
        {
            "name": "query-command-line-options", 
            "type": "Command", 
            "returns": [
                {
                    "type": "CommandLineOptionInfo", 
                    "data": [
                        {
                            "name": "parameters", 
                            "data": [
                                {
                                    "type": "CommandLineParameterInfo", 
                                    "data": [
                                        {
                                            "name": "name", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*help", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "type", 
                                            "type": "CommandLineParameterType", 
                                            "data": [
                                                {
                                                    "type": "string"
                                                }, 
                                                {
                                                    "type": "boolean"
                                                }, 
                                                {
                                                    "type": "number"
                                                }, 
                                                {
                                                    "type": "size"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }, 
                        {
                            "name": "option", 
                            "type": "str"
                        }
                    ]
                }
            ], 
            "data": [
                {
                    "name": "*option", 
                    "type": "str"
                }
            ]
        }, 
        {
            "name": "query-qmp-schema", 
            "type": "Command", 
            "returns": [
                {
                    "type": "SchemaData", 
                    "data": [
                        {
                            "name": "*data", 
                            "data": [
                                {
                                    "type": "DataObject", 
                                    "data": [
                                        {
                                            "name": "*data", 
                                            "data": [
                                                {
                                                    "type": "DataObject"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "*type", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*name", 
                                            "type": "str"
                                        }
                                    ]
                                }
                            ]
                        }, 
                        {
                            "name": "name", 
                            "type": "str"
                        }, 
                        {
                            "name": "*returns", 
                            "data": [
                                {
                                    "type": "DataObject", 
                                    "data": [
                                        {
                                            "name": "*data", 
                                            "data": [
                                                {
                                                    "type": "DataObject"
                                                }
                                            ]
                                        }, 
                                        {
                                            "name": "*type", 
                                            "type": "str"
                                        }, 
                                        {
                                            "name": "*name", 
                                            "type": "str"
                                        }
                                    ]
                                }
                            ]
                        }, 
                        {
                            "name": "type", 
                            "type": "SchemaMetatype", 
                            "data": [
                                {
                                    "type": "Command"
                                }, 
                                {
                                    "type": "Type"
                                }, 
                                {
                                    "type": "Enumeration"
                                }, 
                                {
                                    "type": "Union"
                                }, 
                                {
                                    "type": "Event"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

  reply	other threads:[~2013-06-20 10:16 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-19 12:24 [Qemu-devel] [PATCH] full introspection support for QMP Amos Kong
2013-06-19 12:49 ` Amos Kong
2013-06-20 10:16   ` Amos Kong [this message]
2013-07-02 16:39   ` Eric Blake
2013-06-21  3:20 ` Luiz Capitulino
2013-07-02  8:37   ` Amos Kong
2013-07-02 14:20     ` Luiz Capitulino
2013-07-16 10:52       ` Amos Kong
2013-07-02 14:51 ` Anthony Liguori
2013-07-02 15:28   ` Eric Blake
2013-07-02 15:39     ` Daniel P. Berrange
2013-07-02 16:44       ` Eric Blake
2013-07-02 17:01         ` Paolo Bonzini
2013-07-02 17:06           ` Eric Blake
2013-07-02 18:27             ` Anthony Liguori
2013-07-04  3:54               ` Amos Kong
2013-07-02 18:21         ` Anthony Liguori
2013-07-02 20:00           ` Paolo Bonzini
2013-07-02 20:08             ` Eric Blake
2013-07-02 20:58             ` Anthony Liguori
2013-07-03  5:52               ` Paolo Bonzini
2013-07-03 12:54                 ` Anthony Liguori
2013-07-03 14:45                   ` Paolo Bonzini
2013-07-03 16:06                     ` Anthony Liguori
2013-07-04  7:53                       ` Paolo Bonzini
2013-07-11 13:37                   ` Amos Kong
2013-07-02 17:06     ` Anthony Liguori
2013-07-02 17:11       ` Eric Blake
2013-07-02 18:28         ` Anthony Liguori
2013-07-03 15:08       ` Kevin Wolf
2013-07-03 15:59         ` Anthony Liguori
2013-07-04  7:42           ` Kevin Wolf
2013-07-04  7:55           ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130620101614.GA9587@amosk.info \
    --to=akong@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=armbru@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qiaonuohan@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.