qapi: Use anonymous bases in QMP flat unions
Now that the generator supports it, we might as well use an anonymous base rather than breaking out a single-use Base structure, for all three of our current QMP flat unions. Oddly enough, this change does not affect the resulting introspection output (because we already inline the members of a base type into an object, and had no independent use of the base type reachable from a command). The case_whitelist now has to list the name of an implicit type; which is not too bad (consider it a feature if it makes it harder for developers to make the whitelist grow :) Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1458254921-17042-16-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
ac4338f8eb
commit
3666a97f78
|
@ -753,9 +753,9 @@
|
||||||
'data': ['x86', 'sparc', 'ppc', 'mips', 'tricore', 'other' ] }
|
'data': ['x86', 'sparc', 'ppc', 'mips', 'tricore', 'other' ] }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @CpuInfoBase:
|
# @CpuInfo:
|
||||||
#
|
#
|
||||||
# Common information about a virtual CPU
|
# Information about a virtual CPU
|
||||||
#
|
#
|
||||||
# @CPU: the index of the virtual CPU
|
# @CPU: the index of the virtual CPU
|
||||||
#
|
#
|
||||||
|
@ -776,18 +776,10 @@
|
||||||
# Notes: @halted is a transient state that changes frequently. By the time the
|
# Notes: @halted is a transient state that changes frequently. By the time the
|
||||||
# data is sent to the client, the guest may no longer be halted.
|
# data is sent to the client, the guest may no longer be halted.
|
||||||
##
|
##
|
||||||
{ 'struct': 'CpuInfoBase',
|
{ 'union': 'CpuInfo',
|
||||||
'data': {'CPU': 'int', 'current': 'bool', 'halted': 'bool',
|
'base': {'CPU': 'int', 'current': 'bool', 'halted': 'bool',
|
||||||
'qom_path': 'str', 'thread_id': 'int', 'arch': 'CpuInfoArch' } }
|
'qom_path': 'str', 'thread_id': 'int', 'arch': 'CpuInfoArch' },
|
||||||
|
'discriminator': 'arch',
|
||||||
##
|
|
||||||
# @CpuInfo:
|
|
||||||
#
|
|
||||||
# Information about a virtual CPU
|
|
||||||
#
|
|
||||||
# Since: 0.14.0
|
|
||||||
##
|
|
||||||
{ 'union': 'CpuInfo', 'base': 'CpuInfoBase', 'discriminator': 'arch',
|
|
||||||
'data': { 'x86': 'CpuInfoX86',
|
'data': { 'x86': 'CpuInfoX86',
|
||||||
'sparc': 'CpuInfoSPARC',
|
'sparc': 'CpuInfoSPARC',
|
||||||
'ppc': 'CpuInfoPPC',
|
'ppc': 'CpuInfoPPC',
|
||||||
|
|
|
@ -1643,57 +1643,6 @@
|
||||||
'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'tftp', 'vdi', 'vhdx',
|
'qcow', 'qcow2', 'qed', 'quorum', 'raw', 'tftp', 'vdi', 'vhdx',
|
||||||
'vmdk', 'vpc', 'vvfat' ] }
|
'vmdk', 'vpc', 'vvfat' ] }
|
||||||
|
|
||||||
##
|
|
||||||
# @BlockdevOptionsBase
|
|
||||||
#
|
|
||||||
# Options that are available for all block devices, independent of the block
|
|
||||||
# driver.
|
|
||||||
#
|
|
||||||
# @driver: block driver name
|
|
||||||
# @id: #optional id by which the new block device can be referred to.
|
|
||||||
# This option is only allowed on the top level of blockdev-add.
|
|
||||||
# A BlockBackend will be created by blockdev-add if and only if
|
|
||||||
# this option is given.
|
|
||||||
# @node-name: #optional the name of a block driver state node (Since 2.0).
|
|
||||||
# This option is required on the top level of blockdev-add if
|
|
||||||
# the @id option is not given there.
|
|
||||||
# @discard: #optional discard-related options (default: ignore)
|
|
||||||
# @cache: #optional cache-related options
|
|
||||||
# @aio: #optional AIO backend (default: threads)
|
|
||||||
# @rerror: #optional how to handle read errors on the device
|
|
||||||
# (default: report)
|
|
||||||
# @werror: #optional how to handle write errors on the device
|
|
||||||
# (default: enospc)
|
|
||||||
# @read-only: #optional whether the block device should be read-only
|
|
||||||
# (default: false)
|
|
||||||
# @stats-account-invalid: #optional whether to include invalid
|
|
||||||
# operations when computing last access statistics
|
|
||||||
# (default: true) (Since 2.5)
|
|
||||||
# @stats-account-failed: #optional whether to include failed
|
|
||||||
# operations when computing latency and last
|
|
||||||
# access statistics (default: true) (Since 2.5)
|
|
||||||
# @stats-intervals: #optional list of intervals for collecting I/O
|
|
||||||
# statistics, in seconds (default: none) (Since 2.5)
|
|
||||||
# @detect-zeroes: #optional detect and optimize zero writes (Since 2.1)
|
|
||||||
# (default: off)
|
|
||||||
#
|
|
||||||
# Since: 1.7
|
|
||||||
##
|
|
||||||
{ 'struct': 'BlockdevOptionsBase',
|
|
||||||
'data': { 'driver': 'BlockdevDriver',
|
|
||||||
'*id': 'str',
|
|
||||||
'*node-name': 'str',
|
|
||||||
'*discard': 'BlockdevDiscardOptions',
|
|
||||||
'*cache': 'BlockdevCacheOptions',
|
|
||||||
'*aio': 'BlockdevAioOptions',
|
|
||||||
'*rerror': 'BlockdevOnError',
|
|
||||||
'*werror': 'BlockdevOnError',
|
|
||||||
'*read-only': 'bool',
|
|
||||||
'*stats-account-invalid': 'bool',
|
|
||||||
'*stats-account-failed': 'bool',
|
|
||||||
'*stats-intervals': ['int'],
|
|
||||||
'*detect-zeroes': 'BlockdevDetectZeroesOptions' } }
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# @BlockdevOptionsFile
|
# @BlockdevOptionsFile
|
||||||
#
|
#
|
||||||
|
@ -2070,12 +2019,55 @@
|
||||||
##
|
##
|
||||||
# @BlockdevOptions
|
# @BlockdevOptions
|
||||||
#
|
#
|
||||||
# Options for creating a block device.
|
# Options for creating a block device. Many options are available for all
|
||||||
|
# block devices, independent of the block driver:
|
||||||
|
#
|
||||||
|
# @driver: block driver name
|
||||||
|
# @id: #optional id by which the new block device can be referred to.
|
||||||
|
# This option is only allowed on the top level of blockdev-add.
|
||||||
|
# A BlockBackend will be created by blockdev-add if and only if
|
||||||
|
# this option is given.
|
||||||
|
# @node-name: #optional the name of a block driver state node (Since 2.0).
|
||||||
|
# This option is required on the top level of blockdev-add if
|
||||||
|
# the @id option is not given there.
|
||||||
|
# @discard: #optional discard-related options (default: ignore)
|
||||||
|
# @cache: #optional cache-related options
|
||||||
|
# @aio: #optional AIO backend (default: threads)
|
||||||
|
# @rerror: #optional how to handle read errors on the device
|
||||||
|
# (default: report)
|
||||||
|
# @werror: #optional how to handle write errors on the device
|
||||||
|
# (default: enospc)
|
||||||
|
# @read-only: #optional whether the block device should be read-only
|
||||||
|
# (default: false)
|
||||||
|
# @stats-account-invalid: #optional whether to include invalid
|
||||||
|
# operations when computing last access statistics
|
||||||
|
# (default: true) (Since 2.5)
|
||||||
|
# @stats-account-failed: #optional whether to include failed
|
||||||
|
# operations when computing latency and last
|
||||||
|
# access statistics (default: true) (Since 2.5)
|
||||||
|
# @stats-intervals: #optional list of intervals for collecting I/O
|
||||||
|
# statistics, in seconds (default: none) (Since 2.5)
|
||||||
|
# @detect-zeroes: #optional detect and optimize zero writes (Since 2.1)
|
||||||
|
# (default: off)
|
||||||
|
#
|
||||||
|
# Remaining options are determined by the block driver.
|
||||||
#
|
#
|
||||||
# Since: 1.7
|
# Since: 1.7
|
||||||
##
|
##
|
||||||
{ 'union': 'BlockdevOptions',
|
{ 'union': 'BlockdevOptions',
|
||||||
'base': 'BlockdevOptionsBase',
|
'base': { 'driver': 'BlockdevDriver',
|
||||||
|
'*id': 'str',
|
||||||
|
'*node-name': 'str',
|
||||||
|
'*discard': 'BlockdevDiscardOptions',
|
||||||
|
'*cache': 'BlockdevCacheOptions',
|
||||||
|
'*aio': 'BlockdevAioOptions',
|
||||||
|
'*rerror': 'BlockdevOnError',
|
||||||
|
'*werror': 'BlockdevOnError',
|
||||||
|
'*read-only': 'bool',
|
||||||
|
'*stats-account-invalid': 'bool',
|
||||||
|
'*stats-account-failed': 'bool',
|
||||||
|
'*stats-intervals': ['int'],
|
||||||
|
'*detect-zeroes': 'BlockdevDetectZeroesOptions' },
|
||||||
'discriminator': 'driver',
|
'discriminator': 'driver',
|
||||||
'data': {
|
'data': {
|
||||||
'archipelago':'BlockdevOptionsArchipelago',
|
'archipelago':'BlockdevOptionsArchipelago',
|
||||||
|
|
|
@ -74,16 +74,6 @@
|
||||||
'data': [ 'builtin', 'enum', 'array', 'object', 'alternate',
|
'data': [ 'builtin', 'enum', 'array', 'object', 'alternate',
|
||||||
'command', 'event' ] }
|
'command', 'event' ] }
|
||||||
|
|
||||||
##
|
|
||||||
# @SchemaInfoBase
|
|
||||||
#
|
|
||||||
# Members common to any @SchemaInfo.
|
|
||||||
#
|
|
||||||
# Since: 2.5
|
|
||||||
##
|
|
||||||
{ 'struct': 'SchemaInfoBase',
|
|
||||||
'data': { 'name': 'str', 'meta-type': 'SchemaMetaType' } }
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# @SchemaInfo
|
# @SchemaInfo
|
||||||
#
|
#
|
||||||
|
@ -103,7 +93,7 @@
|
||||||
# Since: 2.5
|
# Since: 2.5
|
||||||
##
|
##
|
||||||
{ 'union': 'SchemaInfo',
|
{ 'union': 'SchemaInfo',
|
||||||
'base': 'SchemaInfoBase',
|
'base': { 'name': 'str', 'meta-type': 'SchemaMetaType' },
|
||||||
'discriminator': 'meta-type',
|
'discriminator': 'meta-type',
|
||||||
'data': {
|
'data': {
|
||||||
'builtin': 'SchemaInfoBuiltin',
|
'builtin': 'SchemaInfoBuiltin',
|
||||||
|
|
|
@ -63,12 +63,12 @@ returns_whitelist = [
|
||||||
case_whitelist = [
|
case_whitelist = [
|
||||||
# From QMP:
|
# From QMP:
|
||||||
'ACPISlotType', # DIMM, visible through query-acpi-ospm-status
|
'ACPISlotType', # DIMM, visible through query-acpi-ospm-status
|
||||||
'CpuInfoBase', # CPU, visible through query-cpu
|
|
||||||
'CpuInfoMIPS', # PC, visible through query-cpu
|
'CpuInfoMIPS', # PC, visible through query-cpu
|
||||||
'CpuInfoTricore', # PC, visible through query-cpu
|
'CpuInfoTricore', # PC, visible through query-cpu
|
||||||
'QapiErrorClass', # all members, visible through errors
|
'QapiErrorClass', # all members, visible through errors
|
||||||
'UuidInfo', # UUID, visible through query-uuid
|
'UuidInfo', # UUID, visible through query-uuid
|
||||||
'X86CPURegister32', # all members, visible indirectly through qom-get
|
'X86CPURegister32', # all members, visible indirectly through qom-get
|
||||||
|
'q_obj_CpuInfo-base', # CPU, visible through query-cpu
|
||||||
]
|
]
|
||||||
|
|
||||||
enum_types = []
|
enum_types = []
|
||||||
|
|
Loading…
Reference in New Issue