master
json 215 lines 4.76 KB
Raw
1 # -*- Mode: Python -*-
2 # vim: filetype=python
3 #
4
5 ##
6 # *******************
7 # QMP monitor control
8 # *******************
9 ##
10
11 ##
12 # @qmp_capabilities:
13 #
14 # Enable QMP capabilities.
15 #
16 # @enable: An optional list of `QMPCapability` values to enable. The
17 # client must not enable any capability that is not mentioned in
18 # the QMP greeting message. If the field is not provided, it
19 # means no QMP capabilities will be enabled. (since 2.12)
20 #
21 # .. qmp-example::
22 #
23 # -> { "execute": "qmp_capabilities",
24 # "arguments": { "enable": [ "oob" ] } }
25 # <- { "return": {} }
26 #
27 # .. note:: This command is valid exactly when first connecting: it
28 # must be issued before any other command will be accepted, and
29 # will fail once the monitor is accepting other commands. (see
30 # :doc:`/interop/qmp-spec`)
31 #
32 # .. note:: The QMP client needs to explicitly enable QMP
33 # capabilities, otherwise all the QMP capabilities will be turned
34 # off by default.
35 #
36 # Since: 0.13
37 ##
38 { 'command': 'qmp_capabilities',
39 'data': { '*enable': [ 'QMPCapability' ] },
40 'allow-preconfig': true }
41
42 ##
43 # @QMPCapability:
44 #
45 # Enumeration of capabilities to be advertised during initial client
46 # connection, used for agreeing on particular QMP extension behaviors.
47 #
48 # @oob: QMP ability to support out-of-band requests. (Please refer to
49 # qmp-spec.rst for more information on OOB)
50 #
51 # Since: 2.12
52 ##
53 { 'enum': 'QMPCapability',
54 'data': [ 'oob' ] }
55
56 ##
57 # @VersionTriple:
58 #
59 # A three-part version number.
60 #
61 # @major: The major version number.
62 #
63 # @minor: The minor version number.
64 #
65 # @micro: The micro version number.
66 #
67 # Since: 2.4
68 ##
69 { 'struct': 'VersionTriple',
70 'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} }
71
72 ##
73 # @VersionInfo:
74 #
75 # A description of QEMU's version.
76 #
77 # @qemu: The version of QEMU. By current convention, a micro version
78 # of 50 signifies a development branch. A micro version greater
79 # than or equal to 90 signifies a release candidate for the next
80 # minor version. A micro version of less than 50 signifies a
81 # stable release.
82 #
83 # @package: QEMU will always set this field to an empty string.
84 # Downstream versions of QEMU should set this to a non-empty
85 # string. The exact format depends on the downstream however it
86 # highly recommended that a unique name is used.
87 #
88 # Since: 0.14
89 ##
90 { 'struct': 'VersionInfo',
91 'data': {'qemu': 'VersionTriple', 'package': 'str'} }
92
93 ##
94 # @query-version:
95 #
96 # Return the current version of QEMU.
97 #
98 # Returns: An object describing the current version of QEMU.
99 #
100 # Since: 0.14
101 #
102 # .. qmp-example::
103 #
104 # -> { "execute": "query-version" }
105 # <- {
106 # "return":{
107 # "qemu":{
108 # "major":0,
109 # "minor":11,
110 # "micro":5
111 # },
112 # "package":""
113 # }
114 # }
115 ##
116 { 'command': 'query-version', 'returns': 'VersionInfo',
117 'allow-preconfig': true }
118
119 ##
120 # @CommandInfo:
121 #
122 # Information about a QMP command
123 #
124 # @name: The command name
125 #
126 # Since: 0.14
127 ##
128 { 'struct': 'CommandInfo', 'data': {'name': 'str'} }
129
130 ##
131 # @query-commands:
132 #
133 # Return a list of supported QMP commands by this server
134 #
135 # Returns: A list of all supported commands
136 #
137 # Since: 0.14
138 #
139 # .. qmp-example::
140 #
141 # -> { "execute": "query-commands" }
142 # <- {
143 # "return":[
144 # {
145 # "name":"query-balloon"
146 # },
147 # {
148 # "name":"system_powerdown"
149 # },
150 # ...
151 # ]
152 # }
153 #
154 # This example has been shortened as the real response is too long.
155 ##
156 { 'command': 'query-commands', 'returns': ['CommandInfo'],
157 'allow-preconfig': true }
158
159 ##
160 # @quit:
161 #
162 # Request graceful QEMU process termination.
163 #
164 # While every attempt is made to send the QMP response before
165 # terminating, this is not guaranteed. When using this interface, a
166 # premature EOF would not be unexpected.
167 #
168 # Since: 0.14
169 #
170 # .. qmp-example::
171 #
172 # -> { "execute": "quit" }
173 # <- { "return": {} }
174 ##
175 { 'command': 'quit',
176 'allow-preconfig': true }
177
178 ##
179 # @MonitorMode:
180 #
181 # An enumeration of monitor modes.
182 #
183 # @readline: HMP monitor (human-oriented command line interface)
184 #
185 # @control: QMP monitor (JSON-based machine interface)
186 #
187 # Since: 5.0
188 ##
189 { 'enum': 'MonitorMode', 'data': [
190 { 'name': 'readline', 'if': 'CONFIG_HMP' },
191 'control' ] }
192
193 ##
194 # @MonitorOptions:
195 #
196 # Options to be used for adding a new monitor.
197 #
198 # @id: Name of the monitor
199 #
200 # @mode: Selects the monitor mode (default: readline in the system
201 # emulator, control in qemu-storage-daemon)
202 #
203 # @pretty: Enables pretty printing (QMP only)
204 #
205 # @chardev: Name of a character device to expose the monitor on
206 #
207 # Since: 5.0
208 ##
209 { 'struct': 'MonitorOptions',
210 'data': {
211 '*id': 'str',
212 '*mode': 'MonitorMode',
213 '*pretty': 'bool',
214 'chardev': 'str'
215 } }