|
|
1.1 root 1: # -*- Mode: Python -*-
2: #
3: # QAPI Schema
4:
5: ##
6: # @NameInfo:
7: #
8: # Guest name information.
9: #
10: # @name: #optional The name of the guest
11: #
12: # Since 0.14.0
13: ##
14: { 'type': 'NameInfo', 'data': {'*name': 'str'} }
15:
16: ##
17: # @query-name:
18: #
19: # Return the name information of a guest.
20: #
21: # Returns: @NameInfo of the guest
22: #
23: # Since 0.14.0
24: ##
25: { 'command': 'query-name', 'returns': 'NameInfo' }
26:
27: ##
28: # @VersionInfo:
29: #
30: # A description of QEMU's version.
31: #
32: # @qemu.major: The major version of QEMU
33: #
34: # @qemu.minor: The minor version of QEMU
35: #
36: # @qemu.micro: The micro version of QEMU. By current convention, a micro
37: # version of 50 signifies a development branch. A micro version
38: # greater than or equal to 90 signifies a release candidate for
39: # the next minor version. A micro version of less than 50
40: # signifies a stable release.
41: #
42: # @package: QEMU will always set this field to an empty string. Downstream
43: # versions of QEMU should set this to a non-empty string. The
44: # exact format depends on the downstream however it highly
45: # recommended that a unique name is used.
46: #
47: # Since: 0.14.0
48: ##
49: { 'type': 'VersionInfo',
50: 'data': {'qemu': {'major': 'int', 'minor': 'int', 'micro': 'int'},
51: 'package': 'str'} }
52:
53: ##
54: # @query-version:
55: #
56: # Returns the current version of QEMU.
57: #
58: # Returns: A @VersionInfo object describing the current version of QEMU.
59: #
60: # Since: 0.14.0
61: ##
62: { 'command': 'query-version', 'returns': 'VersionInfo' }
63:
64: ##
65: # @KvmInfo:
66: #
67: # Information about support for KVM acceleration
68: #
69: # @enabled: true if KVM acceleration is active
70: #
71: # @present: true if KVM acceleration is built into this executable
72: #
73: # Since: 0.14.0
74: ##
75: { 'type': 'KvmInfo', 'data': {'enabled': 'bool', 'present': 'bool'} }
76:
77: ##
78: # @query-kvm:
79: #
80: # Returns information about KVM acceleration
81: #
82: # Returns: @KvmInfo
83: #
84: # Since: 0.14.0
85: ##
86: { 'command': 'query-kvm', 'returns': 'KvmInfo' }
87:
88: ##
89: # @RunState
90: #
91: # An enumation of VM run states.
92: #
93: # @debug: QEMU is running on a debugger
94: #
1.1.1.2 ! root 95: # @finish-migrate: guest is paused to finish the migration process
! 96: #
1.1 root 97: # @inmigrate: guest is paused waiting for an incoming migration
98: #
99: # @internal-error: An internal error that prevents further guest execution
100: # has occurred
101: #
102: # @io-error: the last IOP has failed and the device is configured to pause
103: # on I/O errors
104: #
105: # @paused: guest has been paused via the 'stop' command
106: #
107: # @postmigrate: guest is paused following a successful 'migrate'
108: #
109: # @prelaunch: QEMU was started with -S and guest has not started
110: #
111: # @restore-vm: guest is paused to restore VM state
112: #
113: # @running: guest is actively running
114: #
115: # @save-vm: guest is paused to save the VM state
116: #
117: # @shutdown: guest is shut down (and -no-shutdown is in use)
118: #
1.1.1.2 ! root 119: # @suspended: guest is suspended (ACPI S3)
! 120: #
1.1 root 121: # @watchdog: the watchdog action is configured to pause and has been triggered
122: ##
123: { 'enum': 'RunState',
124: 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused',
125: 'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm',
1.1.1.2 ! root 126: 'running', 'save-vm', 'shutdown', 'suspended', 'watchdog' ] }
1.1 root 127:
128: ##
129: # @StatusInfo:
130: #
131: # Information about VCPU run state
132: #
133: # @running: true if all VCPUs are runnable, false if not runnable
134: #
135: # @singlestep: true if VCPUs are in single-step mode
136: #
137: # @status: the virtual machine @RunState
138: #
139: # Since: 0.14.0
140: #
141: # Notes: @singlestep is enabled through the GDB stub
142: ##
143: { 'type': 'StatusInfo',
144: 'data': {'running': 'bool', 'singlestep': 'bool', 'status': 'RunState'} }
145:
146: ##
147: # @query-status:
148: #
149: # Query the run status of all VCPUs
150: #
151: # Returns: @StatusInfo reflecting all VCPUs
152: #
153: # Since: 0.14.0
154: ##
155: { 'command': 'query-status', 'returns': 'StatusInfo' }
156:
157: ##
158: # @UuidInfo:
159: #
160: # Guest UUID information.
161: #
162: # @UUID: the UUID of the guest
163: #
164: # Since: 0.14.0
165: #
166: # Notes: If no UUID was specified for the guest, a null UUID is returned.
167: ##
168: { 'type': 'UuidInfo', 'data': {'UUID': 'str'} }
169:
170: ##
171: # @query-uuid:
172: #
173: # Query the guest UUID information.
174: #
175: # Returns: The @UuidInfo for the guest
176: #
177: # Since 0.14.0
178: ##
179: { 'command': 'query-uuid', 'returns': 'UuidInfo' }
180:
181: ##
182: # @ChardevInfo:
183: #
184: # Information about a character device.
185: #
186: # @label: the label of the character device
187: #
188: # @filename: the filename of the character device
189: #
190: # Notes: @filename is encoded using the QEMU command line character device
191: # encoding. See the QEMU man page for details.
192: #
193: # Since: 0.14.0
194: ##
195: { 'type': 'ChardevInfo', 'data': {'label': 'str', 'filename': 'str'} }
196:
197: ##
198: # @query-chardev:
199: #
200: # Returns information about current character devices.
201: #
202: # Returns: a list of @ChardevInfo
203: #
204: # Since: 0.14.0
205: ##
206: { 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
207:
208: ##
209: # @CommandInfo:
210: #
211: # Information about a QMP command
212: #
213: # @name: The command name
214: #
215: # Since: 0.14.0
216: ##
217: { 'type': 'CommandInfo', 'data': {'name': 'str'} }
218:
219: ##
220: # @query-commands:
221: #
222: # Return a list of supported QMP commands by this server
223: #
224: # Returns: A list of @CommandInfo for all supported commands
225: #
226: # Since: 0.14.0
227: ##
228: { 'command': 'query-commands', 'returns': ['CommandInfo'] }
229:
230: ##
231: # @MigrationStats
232: #
233: # Detailed migration status.
234: #
235: # @transferred: amount of bytes already transferred to the target VM
236: #
237: # @remaining: amount of bytes remaining to be transferred to the target VM
238: #
239: # @total: total amount of bytes involved in the migration process
240: #
241: # Since: 0.14.0.
242: ##
243: { 'type': 'MigrationStats',
244: 'data': {'transferred': 'int', 'remaining': 'int', 'total': 'int' } }
245:
246: ##
247: # @MigrationInfo
248: #
249: # Information about current migration process.
250: #
251: # @status: #optional string describing the current migration status.
252: # As of 0.14.0 this can be 'active', 'completed', 'failed' or
253: # 'cancelled'. If this field is not returned, no migration process
254: # has been initiated
255: #
256: # @ram: #optional @MigrationStats containing detailed migration status,
257: # only returned if status is 'active'
258: #
259: # @disk: #optional @MigrationStats containing detailed disk migration
260: # status, only returned if status is 'active' and it is a block
261: # migration
262: #
263: # Since: 0.14.0
264: ##
265: { 'type': 'MigrationInfo',
266: 'data': {'*status': 'str', '*ram': 'MigrationStats',
267: '*disk': 'MigrationStats'} }
268:
269: ##
270: # @query-migrate
271: #
272: # Returns information about current migration process.
273: #
274: # Returns: @MigrationInfo
275: #
276: # Since: 0.14.0
277: ##
278: { 'command': 'query-migrate', 'returns': 'MigrationInfo' }
279:
280: ##
281: # @MouseInfo:
282: #
283: # Information about a mouse device.
284: #
285: # @name: the name of the mouse device
286: #
287: # @index: the index of the mouse device
288: #
289: # @current: true if this device is currently receiving mouse events
290: #
291: # @absolute: true if this device supports absolute coordinates as input
292: #
293: # Since: 0.14.0
294: ##
295: { 'type': 'MouseInfo',
296: 'data': {'name': 'str', 'index': 'int', 'current': 'bool',
297: 'absolute': 'bool'} }
298:
299: ##
300: # @query-mice:
301: #
302: # Returns information about each active mouse device
303: #
304: # Returns: a list of @MouseInfo for each device
305: #
306: # Since: 0.14.0
307: ##
308: { 'command': 'query-mice', 'returns': ['MouseInfo'] }
309:
310: ##
311: # @CpuInfo:
312: #
313: # Information about a virtual CPU
314: #
315: # @CPU: the index of the virtual CPU
316: #
317: # @current: this only exists for backwards compatible and should be ignored
318: #
319: # @halted: true if the virtual CPU is in the halt state. Halt usually refers
320: # to a processor specific low power mode.
321: #
322: # @pc: #optional If the target is i386 or x86_64, this is the 64-bit instruction
323: # pointer.
324: # If the target is Sparc, this is the PC component of the
325: # instruction pointer.
326: #
327: # @nip: #optional If the target is PPC, the instruction pointer
328: #
329: # @npc: #optional If the target is Sparc, the NPC component of the instruction
330: # pointer
331: #
332: # @PC: #optional If the target is MIPS, the instruction pointer
333: #
334: # @thread_id: ID of the underlying host thread
335: #
336: # Since: 0.14.0
337: #
338: # Notes: @halted is a transient state that changes frequently. By the time the
339: # data is sent to the client, the guest may no longer be halted.
340: ##
341: { 'type': 'CpuInfo',
342: 'data': {'CPU': 'int', 'current': 'bool', 'halted': 'bool', '*pc': 'int',
343: '*nip': 'int', '*npc': 'int', '*PC': 'int', 'thread_id': 'int'} }
344:
345: ##
346: # @query-cpus:
347: #
348: # Returns a list of information about each virtual CPU.
349: #
350: # Returns: a list of @CpuInfo for each virtual CPU
351: #
352: # Since: 0.14.0
353: ##
354: { 'command': 'query-cpus', 'returns': ['CpuInfo'] }
355:
356: ##
357: # @BlockDeviceInfo:
358: #
359: # Information about the backing device for a block device.
360: #
361: # @file: the filename of the backing device
362: #
363: # @ro: true if the backing device was open read-only
364: #
365: # @drv: the name of the block format used to open the backing device. As of
366: # 0.14.0 this can be: 'blkdebug', 'bochs', 'cloop', 'cow', 'dmg',
367: # 'file', 'file', 'ftp', 'ftps', 'host_cdrom', 'host_device',
368: # 'host_floppy', 'http', 'https', 'nbd', 'parallels', 'qcow',
369: # 'qcow2', 'raw', 'tftp', 'vdi', 'vmdk', 'vpc', 'vvfat'
370: #
371: # @backing_file: #optional the name of the backing file (for copy-on-write)
372: #
373: # @encrypted: true if the backing device is encrypted
374: #
1.1.1.2 ! root 375: # @bps: total throughput limit in bytes per second is specified
! 376: #
! 377: # @bps_rd: read throughput limit in bytes per second is specified
! 378: #
! 379: # @bps_wr: write throughput limit in bytes per second is specified
! 380: #
! 381: # @iops: total I/O operations per second is specified
! 382: #
! 383: # @iops_rd: read I/O operations per second is specified
! 384: #
! 385: # @iops_wr: write I/O operations per second is specified
! 386: #
1.1 root 387: # Since: 0.14.0
388: #
389: # Notes: This interface is only found in @BlockInfo.
390: ##
391: { 'type': 'BlockDeviceInfo',
392: 'data': { 'file': 'str', 'ro': 'bool', 'drv': 'str',
1.1.1.2 ! root 393: '*backing_file': 'str', 'encrypted': 'bool',
! 394: 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
! 395: 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int'} }
1.1 root 396:
397: ##
398: # @BlockDeviceIoStatus:
399: #
400: # An enumeration of block device I/O status.
401: #
402: # @ok: The last I/O operation has succeeded
403: #
404: # @failed: The last I/O operation has failed
405: #
406: # @nospace: The last I/O operation has failed due to a no-space condition
407: #
408: # Since: 1.0
409: ##
410: { 'enum': 'BlockDeviceIoStatus', 'data': [ 'ok', 'failed', 'nospace' ] }
411:
412: ##
413: # @BlockInfo:
414: #
415: # Block device information. This structure describes a virtual device and
416: # the backing device associated with it.
417: #
418: # @device: The device name associated with the virtual device.
419: #
420: # @type: This field is returned only for compatibility reasons, it should
421: # not be used (always returns 'unknown')
422: #
423: # @removable: True if the device supports removable media.
424: #
425: # @locked: True if the guest has locked this device from having its media
426: # removed
427: #
428: # @tray_open: #optional True if the device has a tray and it is open
429: # (only present if removable is true)
430: #
431: # @io-status: #optional @BlockDeviceIoStatus. Only present if the device
432: # supports it and the VM is configured to stop on errors
433: #
434: # @inserted: #optional @BlockDeviceInfo describing the device if media is
435: # present
436: #
437: # Since: 0.14.0
438: ##
439: { 'type': 'BlockInfo',
440: 'data': {'device': 'str', 'type': 'str', 'removable': 'bool',
441: 'locked': 'bool', '*inserted': 'BlockDeviceInfo',
442: '*tray_open': 'bool', '*io-status': 'BlockDeviceIoStatus'} }
443:
444: ##
445: # @query-block:
446: #
447: # Get a list of BlockInfo for all virtual block devices.
448: #
449: # Returns: a list of @BlockInfo describing each virtual block device
450: #
451: # Since: 0.14.0
452: ##
453: { 'command': 'query-block', 'returns': ['BlockInfo'] }
454:
455: ##
456: # @BlockDeviceStats:
457: #
458: # Statistics of a virtual block device or a block backing device.
459: #
460: # @rd_bytes: The number of bytes read by the device.
461: #
462: # @wr_bytes: The number of bytes written by the device.
463: #
464: # @rd_operations: The number of read operations performed by the device.
465: #
466: # @wr_operations: The number of write operations performed by the device.
467: #
468: # @flush_operations: The number of cache flush operations performed by the
469: # device (since 0.15.0)
470: #
471: # @flush_total_time_ns: Total time spend on cache flushes in nano-seconds
472: # (since 0.15.0).
473: #
474: # @wr_total_time_ns: Total time spend on writes in nano-seconds (since 0.15.0).
475: #
476: # @rd_total_time_ns: Total_time_spend on reads in nano-seconds (since 0.15.0).
477: #
478: # @wr_highest_offset: The offset after the greatest byte written to the
479: # device. The intended use of this information is for
480: # growable sparse files (like qcow2) that are used on top
481: # of a physical device.
482: #
483: # Since: 0.14.0
484: ##
485: { 'type': 'BlockDeviceStats',
486: 'data': {'rd_bytes': 'int', 'wr_bytes': 'int', 'rd_operations': 'int',
487: 'wr_operations': 'int', 'flush_operations': 'int',
488: 'flush_total_time_ns': 'int', 'wr_total_time_ns': 'int',
489: 'rd_total_time_ns': 'int', 'wr_highest_offset': 'int' } }
490:
491: ##
492: # @BlockStats:
493: #
494: # Statistics of a virtual block device or a block backing device.
495: #
496: # @device: #optional If the stats are for a virtual block device, the name
497: # corresponding to the virtual block device.
498: #
499: # @stats: A @BlockDeviceStats for the device.
500: #
501: # @parent: #optional This may point to the backing block device if this is a
502: # a virtual block device. If it's a backing block, this will point
503: # to the backing file is one is present.
504: #
505: # Since: 0.14.0
506: ##
507: { 'type': 'BlockStats',
508: 'data': {'*device': 'str', 'stats': 'BlockDeviceStats',
509: '*parent': 'BlockStats'} }
510:
511: ##
512: # @query-blockstats:
513: #
514: # Query the @BlockStats for all virtual block devices.
515: #
516: # Returns: A list of @BlockStats for each virtual block devices.
517: #
518: # Since: 0.14.0
519: ##
520: { 'command': 'query-blockstats', 'returns': ['BlockStats'] }
521:
522: ##
523: # @VncClientInfo:
524: #
525: # Information about a connected VNC client.
526: #
527: # @host: The host name of the client. QEMU tries to resolve this to a DNS name
528: # when possible.
529: #
530: # @family: 'ipv6' if the client is connected via IPv6 and TCP
531: # 'ipv4' if the client is connected via IPv4 and TCP
532: # 'unix' if the client is connected via a unix domain socket
533: # 'unknown' otherwise
534: #
535: # @service: The service name of the client's port. This may depends on the
536: # host system's service database so symbolic names should not be
537: # relied on.
538: #
539: # @x509_dname: #optional If x509 authentication is in use, the Distinguished
540: # Name of the client.
541: #
542: # @sasl_username: #optional If SASL authentication is in use, the SASL username
543: # used for authentication.
544: #
545: # Since: 0.14.0
546: ##
547: { 'type': 'VncClientInfo',
548: 'data': {'host': 'str', 'family': 'str', 'service': 'str',
549: '*x509_dname': 'str', '*sasl_username': 'str'} }
550:
551: ##
552: # @VncInfo:
553: #
554: # Information about the VNC session.
555: #
556: # @enabled: true if the VNC server is enabled, false otherwise
557: #
558: # @host: #optional The hostname the VNC server is bound to. This depends on
559: # the name resolution on the host and may be an IP address.
560: #
561: # @family: #optional 'ipv6' if the host is listening for IPv6 connections
562: # 'ipv4' if the host is listening for IPv4 connections
563: # 'unix' if the host is listening on a unix domain socket
564: # 'unknown' otherwise
565: #
566: # @service: #optional The service name of the server's port. This may depends
567: # on the host system's service database so symbolic names should not
568: # be relied on.
569: #
570: # @auth: #optional the current authentication type used by the server
571: # 'none' if no authentication is being used
572: # 'vnc' if VNC authentication is being used
573: # 'vencrypt+plain' if VEncrypt is used with plain text authentication
574: # 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
575: # 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
576: # 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
577: # 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
578: # 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
579: # 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
580: # 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
581: # 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
582: #
583: # @clients: a list of @VncClientInfo of all currently connected clients
584: #
585: # Since: 0.14.0
586: ##
587: { 'type': 'VncInfo',
588: 'data': {'enabled': 'bool', '*host': 'str', '*family': 'str',
589: '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']} }
590:
591: ##
592: # @query-vnc:
593: #
594: # Returns information about the current VNC server
595: #
596: # Returns: @VncInfo
597: # If VNC support is not compiled in, FeatureDisabled
598: #
599: # Since: 0.14.0
600: ##
601: { 'command': 'query-vnc', 'returns': 'VncInfo' }
602:
603: ##
604: # @SpiceChannel
605: #
606: # Information about a SPICE client channel.
607: #
608: # @host: The host name of the client. QEMU tries to resolve this to a DNS name
609: # when possible.
610: #
611: # @family: 'ipv6' if the client is connected via IPv6 and TCP
612: # 'ipv4' if the client is connected via IPv4 and TCP
613: # 'unix' if the client is connected via a unix domain socket
614: # 'unknown' otherwise
615: #
616: # @port: The client's port number.
617: #
618: # @connection-id: SPICE connection id number. All channels with the same id
619: # belong to the same SPICE session.
620: #
1.1.1.2 ! root 621: # @connection-type: SPICE channel type number. "1" is the main control
! 622: # channel, filter for this one if you want to track spice
! 623: # sessions only
1.1 root 624: #
1.1.1.2 ! root 625: # @channel-id: SPICE channel ID number. Usually "0", might be different when
! 626: # multiple channels of the same type exist, such as multiple
1.1 root 627: # display channels in a multihead setup
628: #
629: # @tls: true if the channel is encrypted, false otherwise.
630: #
631: # Since: 0.14.0
632: ##
633: { 'type': 'SpiceChannel',
634: 'data': {'host': 'str', 'family': 'str', 'port': 'str',
635: 'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int',
636: 'tls': 'bool'} }
637:
638: ##
1.1.1.2 ! root 639: # @SpiceQueryMouseMode
! 640: #
! 641: # An enumation of Spice mouse states.
! 642: #
! 643: # @client: Mouse cursor position is determined by the client.
! 644: #
! 645: # @server: Mouse cursor position is determined by the server.
! 646: #
! 647: # @unknown: No information is available about mouse mode used by
! 648: # the spice server.
! 649: #
! 650: # Note: spice/enums.h has a SpiceMouseMode already, hence the name.
! 651: #
! 652: # Since: 1.1
! 653: ##
! 654: { 'enum': 'SpiceQueryMouseMode',
! 655: 'data': [ 'client', 'server', 'unknown' ] }
! 656:
! 657: ##
1.1 root 658: # @SpiceInfo
659: #
660: # Information about the SPICE session.
661: #
662: # @enabled: true if the SPICE server is enabled, false otherwise
663: #
664: # @host: #optional The hostname the SPICE server is bound to. This depends on
665: # the name resolution on the host and may be an IP address.
666: #
667: # @port: #optional The SPICE server's port number.
668: #
669: # @compiled-version: #optional SPICE server version.
670: #
671: # @tls-port: #optional The SPICE server's TLS port number.
672: #
673: # @auth: #optional the current authentication type used by the server
1.1.1.2 ! root 674: # 'none' if no authentication is being used
! 675: # 'spice' uses SASL or direct TLS authentication, depending on command
! 676: # line options
! 677: #
! 678: # @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
! 679: # be determined by the client or the server, or unknown if spice
! 680: # server doesn't provide this information.
! 681: #
! 682: # Since: 1.1
1.1 root 683: #
684: # @channels: a list of @SpiceChannel for each active spice channel
685: #
686: # Since: 0.14.0
687: ##
688: { 'type': 'SpiceInfo',
689: 'data': {'enabled': 'bool', '*host': 'str', '*port': 'int',
690: '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
1.1.1.2 ! root 691: 'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']} }
1.1 root 692:
693: ##
694: # @query-spice
695: #
696: # Returns information about the current SPICE server
697: #
698: # Returns: @SpiceInfo
699: #
700: # Since: 0.14.0
701: ##
702: { 'command': 'query-spice', 'returns': 'SpiceInfo' }
703:
704: ##
705: # @BalloonInfo:
706: #
707: # Information about the guest balloon device.
708: #
709: # @actual: the number of bytes the balloon currently contains
710: #
711: # @mem_swapped_in: #optional number of pages swapped in within the guest
712: #
713: # @mem_swapped_out: #optional number of pages swapped out within the guest
714: #
715: # @major_page_faults: #optional number of major page faults within the guest
716: #
717: # @minor_page_faults: #optional number of minor page faults within the guest
718: #
719: # @free_mem: #optional amount of memory (in bytes) free in the guest
720: #
721: # @total_mem: #optional amount of memory (in bytes) visible to the guest
722: #
723: # Since: 0.14.0
724: #
725: # Notes: all current versions of QEMU do not fill out optional information in
726: # this structure.
727: ##
728: { 'type': 'BalloonInfo',
729: 'data': {'actual': 'int', '*mem_swapped_in': 'int',
730: '*mem_swapped_out': 'int', '*major_page_faults': 'int',
731: '*minor_page_faults': 'int', '*free_mem': 'int',
732: '*total_mem': 'int'} }
733:
734: ##
735: # @query-balloon:
736: #
737: # Return information about the balloon device.
738: #
739: # Returns: @BalloonInfo on success
740: # If the balloon driver is enabled but not functional because the KVM
741: # kernel module cannot support it, KvmMissingCap
742: # If no balloon device is present, DeviceNotActive
743: #
744: # Since: 0.14.0
745: ##
746: { 'command': 'query-balloon', 'returns': 'BalloonInfo' }
747:
748: ##
749: # @PciMemoryRange:
750: #
751: # A PCI device memory region
752: #
753: # @base: the starting address (guest physical)
754: #
755: # @limit: the ending address (guest physical)
756: #
757: # Since: 0.14.0
758: ##
759: { 'type': 'PciMemoryRange', 'data': {'base': 'int', 'limit': 'int'} }
760:
761: ##
762: # @PciMemoryRegion
763: #
764: # Information about a PCI device I/O region.
765: #
766: # @bar: the index of the Base Address Register for this region
767: #
768: # @type: 'io' if the region is a PIO region
769: # 'memory' if the region is a MMIO region
770: #
771: # @prefetch: #optional if @type is 'memory', true if the memory is prefetchable
772: #
773: # @mem_type_64: #optional if @type is 'memory', true if the BAR is 64-bit
774: #
775: # Since: 0.14.0
776: ##
777: { 'type': 'PciMemoryRegion',
778: 'data': {'bar': 'int', 'type': 'str', 'address': 'int', 'size': 'int',
779: '*prefetch': 'bool', '*mem_type_64': 'bool' } }
780:
781: ##
782: # @PciBridgeInfo:
783: #
784: # Information about a PCI Bridge device
785: #
786: # @bus.number: primary bus interface number. This should be the number of the
787: # bus the device resides on.
788: #
789: # @bus.secondary: secondary bus interface number. This is the number of the
790: # main bus for the bridge
791: #
792: # @bus.subordinate: This is the highest number bus that resides below the
793: # bridge.
794: #
795: # @bus.io_range: The PIO range for all devices on this bridge
796: #
797: # @bus.memory_range: The MMIO range for all devices on this bridge
798: #
799: # @bus.prefetchable_range: The range of prefetchable MMIO for all devices on
800: # this bridge
801: #
802: # @devices: a list of @PciDeviceInfo for each device on this bridge
803: #
804: # Since: 0.14.0
805: ##
806: { 'type': 'PciBridgeInfo',
807: 'data': {'bus': { 'number': 'int', 'secondary': 'int', 'subordinate': 'int',
808: 'io_range': 'PciMemoryRange',
809: 'memory_range': 'PciMemoryRange',
810: 'prefetchable_range': 'PciMemoryRange' },
811: '*devices': ['PciDeviceInfo']} }
812:
813: ##
814: # @PciDeviceInfo:
815: #
816: # Information about a PCI device
817: #
818: # @bus: the bus number of the device
819: #
820: # @slot: the slot the device is located in
821: #
822: # @function: the function of the slot used by the device
823: #
824: # @class_info.desc: #optional a string description of the device's class
825: #
826: # @class_info.class: the class code of the device
827: #
828: # @id.device: the PCI device id
829: #
830: # @id.vendor: the PCI vendor id
831: #
832: # @irq: #optional if an IRQ is assigned to the device, the IRQ number
833: #
834: # @qdev_id: the device name of the PCI device
835: #
836: # @pci_bridge: if the device is a PCI bridge, the bridge information
837: #
838: # @regions: a list of the PCI I/O regions associated with the device
839: #
840: # Notes: the contents of @class_info.desc are not stable and should only be
841: # treated as informational.
842: #
843: # Since: 0.14.0
844: ##
845: { 'type': 'PciDeviceInfo',
846: 'data': {'bus': 'int', 'slot': 'int', 'function': 'int',
847: 'class_info': {'*desc': 'str', 'class': 'int'},
848: 'id': {'device': 'int', 'vendor': 'int'},
849: '*irq': 'int', 'qdev_id': 'str', '*pci_bridge': 'PciBridgeInfo',
850: 'regions': ['PciMemoryRegion']} }
851:
852: ##
853: # @PciInfo:
854: #
855: # Information about a PCI bus
856: #
857: # @bus: the bus index
858: #
859: # @devices: a list of devices on this bus
860: #
861: # Since: 0.14.0
862: ##
863: { 'type': 'PciInfo', 'data': {'bus': 'int', 'devices': ['PciDeviceInfo']} }
864:
865: ##
866: # @query-pci:
867: #
868: # Return information about the PCI bus topology of the guest.
869: #
870: # Returns: a list of @PciInfo for each PCI bus
871: #
872: # Since: 0.14.0
873: ##
874: { 'command': 'query-pci', 'returns': ['PciInfo'] }
875:
876: ##
1.1.1.2 ! root 877: # @BlockJobInfo:
! 878: #
! 879: # Information about a long-running block device operation.
! 880: #
! 881: # @type: the job type ('stream' for image streaming)
! 882: #
! 883: # @device: the block device name
! 884: #
! 885: # @len: the maximum progress value
! 886: #
! 887: # @offset: the current progress value
! 888: #
! 889: # @speed: the rate limit, bytes per second
! 890: #
! 891: # Since: 1.1
! 892: ##
! 893: { 'type': 'BlockJobInfo',
! 894: 'data': {'type': 'str', 'device': 'str', 'len': 'int',
! 895: 'offset': 'int', 'speed': 'int'} }
! 896:
! 897: ##
! 898: # @query-block-jobs:
! 899: #
! 900: # Return information about long-running block device operations.
! 901: #
! 902: # Returns: a list of @BlockJobInfo for each active block job
! 903: #
! 904: # Since: 1.1
! 905: ##
! 906: { 'command': 'query-block-jobs', 'returns': ['BlockJobInfo'] }
! 907:
! 908: ##
1.1 root 909: # @quit:
910: #
911: # This command will cause the QEMU process to exit gracefully. While every
912: # attempt is made to send the QMP response before terminating, this is not
913: # guaranteed. When using this interface, a premature EOF would not be
914: # unexpected.
915: #
916: # Since: 0.14.0
917: ##
918: { 'command': 'quit' }
919:
920: ##
921: # @stop:
922: #
923: # Stop all guest VCPU execution.
924: #
925: # Since: 0.14.0
926: #
927: # Notes: This function will succeed even if the guest is already in the stopped
928: # state
929: ##
930: { 'command': 'stop' }
931:
932: ##
933: # @system_reset:
934: #
935: # Performs a hard reset of a guest.
936: #
937: # Since: 0.14.0
938: ##
939: { 'command': 'system_reset' }
940:
941: ##
942: # @system_powerdown:
943: #
944: # Requests that a guest perform a powerdown operation.
945: #
946: # Since: 0.14.0
947: #
948: # Notes: A guest may or may not respond to this command. This command
949: # returning does not indicate that a guest has accepted the request or
950: # that it has shut down. Many guests will respond to this command by
951: # prompting the user in some way.
952: ##
953: { 'command': 'system_powerdown' }
954:
955: ##
956: # @cpu:
957: #
958: # This command is a nop that is only provided for the purposes of compatibility.
959: #
960: # Since: 0.14.0
961: #
962: # Notes: Do not use this command.
963: ##
964: { 'command': 'cpu', 'data': {'index': 'int'} }
1.1.1.2 ! root 965:
! 966: ##
! 967: # @memsave:
! 968: #
! 969: # Save a portion of guest memory to a file.
! 970: #
! 971: # @val: the virtual address of the guest to start from
! 972: #
! 973: # @size: the size of memory region to save
! 974: #
! 975: # @filename: the file to save the memory to as binary data
! 976: #
! 977: # @cpu-index: #optional the index of the virtual CPU to use for translating the
! 978: # virtual address (defaults to CPU 0)
! 979: #
! 980: # Returns: Nothing on success
! 981: # If @cpu is not a valid VCPU, InvalidParameterValue
! 982: # If @filename cannot be opened, OpenFileFailed
! 983: # If an I/O error occurs while writing the file, IOError
! 984: #
! 985: # Since: 0.14.0
! 986: #
! 987: # Notes: Errors were not reliably returned until 1.1
! 988: ##
! 989: { 'command': 'memsave',
! 990: 'data': {'val': 'int', 'size': 'int', 'filename': 'str', '*cpu-index': 'int'} }
! 991:
! 992: ##
! 993: # @pmemsave:
! 994: #
! 995: # Save a portion of guest physical memory to a file.
! 996: #
! 997: # @val: the physical address of the guest to start from
! 998: #
! 999: # @size: the size of memory region to save
! 1000: #
! 1001: # @filename: the file to save the memory to as binary data
! 1002: #
! 1003: # Returns: Nothing on success
! 1004: # If @filename cannot be opened, OpenFileFailed
! 1005: # If an I/O error occurs while writing the file, IOError
! 1006: #
! 1007: # Since: 0.14.0
! 1008: #
! 1009: # Notes: Errors were not reliably returned until 1.1
! 1010: ##
! 1011: { 'command': 'pmemsave',
! 1012: 'data': {'val': 'int', 'size': 'int', 'filename': 'str'} }
! 1013:
! 1014: ##
! 1015: # @cont:
! 1016: #
! 1017: # Resume guest VCPU execution.
! 1018: #
! 1019: # Since: 0.14.0
! 1020: #
! 1021: # Returns: If successful, nothing
! 1022: # If the QEMU is waiting for an incoming migration, MigrationExpected
! 1023: # If QEMU was started with an encrypted block device and a key has
! 1024: # not yet been set, DeviceEncrypted.
! 1025: #
! 1026: # Notes: This command will succeed if the guest is currently running.
! 1027: ##
! 1028: { 'command': 'cont' }
! 1029:
! 1030: ##
! 1031: # @system_wakeup:
! 1032: #
! 1033: # Wakeup guest from suspend. Does nothing in case the guest isn't suspended.
! 1034: #
! 1035: # Since: 1.1
! 1036: #
! 1037: # Returns: nothing.
! 1038: ##
! 1039: { 'command': 'system_wakeup' }
! 1040:
! 1041: ##
! 1042: # @inject-nmi:
! 1043: #
! 1044: # Injects an Non-Maskable Interrupt into all guest's VCPUs.
! 1045: #
! 1046: # Returns: If successful, nothing
! 1047: # If the Virtual Machine doesn't support NMI injection, Unsupported
! 1048: #
! 1049: # Since: 0.14.0
! 1050: #
! 1051: # Notes: Only x86 Virtual Machines support this command.
! 1052: ##
! 1053: { 'command': 'inject-nmi' }
! 1054:
! 1055: ##
! 1056: # @set_link:
! 1057: #
! 1058: # Sets the link status of a virtual network adapter.
! 1059: #
! 1060: # @name: the device name of the virtual network adapter
! 1061: #
! 1062: # @up: true to set the link status to be up
! 1063: #
! 1064: # Returns: Nothing on success
! 1065: # If @name is not a valid network device, DeviceNotFound
! 1066: #
! 1067: # Since: 0.14.0
! 1068: #
! 1069: # Notes: Not all network adapters support setting link status. This command
! 1070: # will succeed even if the network adapter does not support link status
! 1071: # notification.
! 1072: ##
! 1073: { 'command': 'set_link', 'data': {'name': 'str', 'up': 'bool'} }
! 1074:
! 1075: ##
! 1076: # @block_passwd:
! 1077: #
! 1078: # This command sets the password of a block device that has not been open
! 1079: # with a password and requires one.
! 1080: #
! 1081: # The two cases where this can happen are a block device is created through
! 1082: # QEMU's initial command line or a block device is changed through the legacy
! 1083: # @change interface.
! 1084: #
! 1085: # In the event that the block device is created through the initial command
! 1086: # line, the VM will start in the stopped state regardless of whether '-S' is
! 1087: # used. The intention is for a management tool to query the block devices to
! 1088: # determine which ones are encrypted, set the passwords with this command, and
! 1089: # then start the guest with the @cont command.
! 1090: #
! 1091: # @device: the name of the device to set the password on
! 1092: #
! 1093: # @password: the password to use for the device
! 1094: #
! 1095: # Returns: nothing on success
! 1096: # If @device is not a valid block device, DeviceNotFound
! 1097: # If @device is not encrypted, DeviceNotEncrypted
! 1098: # If @password is not valid for this device, InvalidPassword
! 1099: #
! 1100: # Notes: Not all block formats support encryption and some that do are not
! 1101: # able to validate that a password is correct. Disk corruption may
! 1102: # occur if an invalid password is specified.
! 1103: #
! 1104: # Since: 0.14.0
! 1105: ##
! 1106: { 'command': 'block_passwd', 'data': {'device': 'str', 'password': 'str'} }
! 1107:
! 1108: ##
! 1109: # @balloon:
! 1110: #
! 1111: # Request the balloon driver to change its balloon size.
! 1112: #
! 1113: # @value: the target size of the balloon in bytes
! 1114: #
! 1115: # Returns: Nothing on success
! 1116: # If the balloon driver is enabled but not functional because the KVM
! 1117: # kernel module cannot support it, KvmMissingCap
! 1118: # If no balloon device is present, DeviceNotActive
! 1119: #
! 1120: # Notes: This command just issues a request to the guest. When it returns,
! 1121: # the balloon size may not have changed. A guest can change the balloon
! 1122: # size independent of this command.
! 1123: #
! 1124: # Since: 0.14.0
! 1125: ##
! 1126: { 'command': 'balloon', 'data': {'value': 'int'} }
! 1127:
! 1128: ##
! 1129: # @block_resize
! 1130: #
! 1131: # Resize a block image while a guest is running.
! 1132: #
! 1133: # @device: the name of the device to get the image resized
! 1134: #
! 1135: # @size: new image size in bytes
! 1136: #
! 1137: # Returns: nothing on success
! 1138: # If @device is not a valid block device, DeviceNotFound
! 1139: # If @size is negative, InvalidParameterValue
! 1140: # If the block device has no medium inserted, DeviceHasNoMedium
! 1141: # If the block device does not support resize, Unsupported
! 1142: # If the block device is read-only, DeviceIsReadOnly
! 1143: # If a long-running operation is using the device, DeviceInUse
! 1144: #
! 1145: # Since: 0.14.0
! 1146: ##
! 1147: { 'command': 'block_resize', 'data': { 'device': 'str', 'size': 'int' }}
! 1148:
! 1149: ##
! 1150: # @NewImageMode
! 1151: #
! 1152: # An enumeration that tells QEMU how to set the backing file path in
! 1153: # a new image file.
! 1154: #
! 1155: # @existing: QEMU should look for an existing image file.
! 1156: #
! 1157: # @absolute-paths: QEMU should create a new image with absolute paths
! 1158: # for the backing file.
! 1159: #
! 1160: # Since: 1.1
! 1161: ##
! 1162: { 'enum': 'NewImageMode'
! 1163: 'data': [ 'existing', 'absolute-paths' ] }
! 1164:
! 1165: ##
! 1166: # @BlockdevSnapshot
! 1167: #
! 1168: # @device: the name of the device to generate the snapshot from.
! 1169: #
! 1170: # @snapshot-file: the target of the new image. A new file will be created.
! 1171: #
! 1172: # @format: #optional the format of the snapshot image, default is 'qcow2'.
! 1173: #
! 1174: # @mode: #optional whether and how QEMU should create a new image, default is
! 1175: # 'absolute-paths'.
! 1176: ##
! 1177: { 'type': 'BlockdevSnapshot',
! 1178: 'data': { 'device': 'str', 'snapshot-file': 'str', '*format': 'str',
! 1179: '*mode': 'NewImageMode' } }
! 1180:
! 1181: ##
! 1182: # @BlockdevAction
! 1183: #
! 1184: # A discriminated record of operations that can be performed with
! 1185: # @transaction.
! 1186: ##
! 1187: { 'union': 'BlockdevAction',
! 1188: 'data': {
! 1189: 'blockdev-snapshot-sync': 'BlockdevSnapshot',
! 1190: } }
! 1191:
! 1192: ##
! 1193: # @transaction
! 1194: #
! 1195: # Atomically operate on a group of one or more block devices. If
! 1196: # any operation fails, then the entire set of actions will be
! 1197: # abandoned and the appropriate error returned. The only operation
! 1198: # supported is currently blockdev-snapshot-sync.
! 1199: #
! 1200: # List of:
! 1201: # @BlockdevAction: information needed for the device snapshot
! 1202: #
! 1203: # Returns: nothing on success
! 1204: # If @device is not a valid block device, DeviceNotFound
! 1205: # If @device is busy, DeviceInUse will be returned
! 1206: # If @snapshot-file can't be created, OpenFileFailed
! 1207: # If @snapshot-file can't be opened, OpenFileFailed
! 1208: # If @format is invalid, InvalidBlockFormat
! 1209: #
! 1210: # Note: The transaction aborts on the first failure. Therefore, there will
! 1211: # be only one device or snapshot file returned in an error condition, and
! 1212: # subsequent actions will not have been attempted.
! 1213: #
! 1214: # Since 1.1
! 1215: ##
! 1216: { 'command': 'transaction',
! 1217: 'data': { 'actions': [ 'BlockdevAction' ] } }
! 1218:
! 1219: ##
! 1220: # @blockdev-snapshot-sync
! 1221: #
! 1222: # Generates a synchronous snapshot of a block device.
! 1223: #
! 1224: # @device: the name of the device to generate the snapshot from.
! 1225: #
! 1226: # @snapshot-file: the target of the new image. If the file exists, or if it
! 1227: # is a device, the snapshot will be created in the existing
! 1228: # file/device. If does not exist, a new file will be created.
! 1229: #
! 1230: # @format: #optional the format of the snapshot image, default is 'qcow2'.
! 1231: #
! 1232: # @mode: #optional whether and how QEMU should create a new image, default is
! 1233: # 'absolute-paths'.
! 1234: #
! 1235: # Returns: nothing on success
! 1236: # If @device is not a valid block device, DeviceNotFound
! 1237: # If @snapshot-file can't be opened, OpenFileFailed
! 1238: # If @format is invalid, InvalidBlockFormat
! 1239: #
! 1240: # Since 0.14.0
! 1241: ##
! 1242: { 'command': 'blockdev-snapshot-sync',
! 1243: 'data': { 'device': 'str', 'snapshot-file': 'str', '*format': 'str',
! 1244: '*mode': 'NewImageMode'} }
! 1245:
! 1246: ##
! 1247: # @human-monitor-command:
! 1248: #
! 1249: # Execute a command on the human monitor and return the output.
! 1250: #
! 1251: # @command-line: the command to execute in the human monitor
! 1252: #
! 1253: # @cpu-index: #optional The CPU to use for commands that require an implicit CPU
! 1254: #
! 1255: # Returns: the output of the command as a string
! 1256: #
! 1257: # Since: 0.14.0
! 1258: #
! 1259: # Notes: This command only exists as a stop-gap. It's use is highly
! 1260: # discouraged. The semantics of this command are not guaranteed.
! 1261: #
! 1262: # Known limitations:
! 1263: #
! 1264: # o This command is stateless, this means that commands that depend
! 1265: # on state information (such as getfd) might not work
! 1266: #
! 1267: # o Commands that prompt the user for data (eg. 'cont' when the block
! 1268: # device is encrypted) don't currently work
! 1269: ##
! 1270: { 'command': 'human-monitor-command',
! 1271: 'data': {'command-line': 'str', '*cpu-index': 'int'},
! 1272: 'returns': 'str' }
! 1273:
! 1274: ##
! 1275: # @migrate_cancel
! 1276: #
! 1277: # Cancel the current executing migration process.
! 1278: #
! 1279: # Returns: nothing on success
! 1280: #
! 1281: # Notes: This command succeeds even if there is no migration process running.
! 1282: #
! 1283: # Since: 0.14.0
! 1284: ##
! 1285: { 'command': 'migrate_cancel' }
! 1286:
! 1287: ##
! 1288: # @migrate_set_downtime
! 1289: #
! 1290: # Set maximum tolerated downtime for migration.
! 1291: #
! 1292: # @value: maximum downtime in seconds
! 1293: #
! 1294: # Returns: nothing on success
! 1295: #
! 1296: # Since: 0.14.0
! 1297: ##
! 1298: { 'command': 'migrate_set_downtime', 'data': {'value': 'number'} }
! 1299:
! 1300: ##
! 1301: # @migrate_set_speed
! 1302: #
! 1303: # Set maximum speed for migration.
! 1304: #
! 1305: # @value: maximum speed in bytes.
! 1306: #
! 1307: # Returns: nothing on success
! 1308: #
! 1309: # Notes: A value lesser than zero will be automatically round up to zero.
! 1310: #
! 1311: # Since: 0.14.0
! 1312: ##
! 1313: { 'command': 'migrate_set_speed', 'data': {'value': 'int'} }
! 1314:
! 1315: ##
! 1316: # @ObjectPropertyInfo:
! 1317: #
! 1318: # @name: the name of the property
! 1319: #
! 1320: # @type: the type of the property. This will typically come in one of four
! 1321: # forms:
! 1322: #
! 1323: # 1) A primitive type such as 'u8', 'u16', 'bool', 'str', or 'double'.
! 1324: # These types are mapped to the appropriate JSON type.
! 1325: #
! 1326: # 2) A legacy type in the form 'legacy<subtype>' where subtype is the
! 1327: # legacy qdev typename. These types are always treated as strings.
! 1328: #
! 1329: # 3) A child type in the form 'child<subtype>' where subtype is a qdev
! 1330: # device type name. Child properties create the composition tree.
! 1331: #
! 1332: # 4) A link type in the form 'link<subtype>' where subtype is a qdev
! 1333: # device type name. Link properties form the device model graph.
! 1334: #
! 1335: # Since: 1.1
! 1336: #
! 1337: # Notes: This type is experimental. Its syntax may change in future releases.
! 1338: ##
! 1339: { 'type': 'ObjectPropertyInfo',
! 1340: 'data': { 'name': 'str', 'type': 'str' } }
! 1341:
! 1342: ##
! 1343: # @qom-list:
! 1344: #
! 1345: # This command will list any properties of a object given a path in the object
! 1346: # model.
! 1347: #
! 1348: # @path: the path within the object model. See @qom-get for a description of
! 1349: # this parameter.
! 1350: #
! 1351: # Returns: a list of @ObjectPropertyInfo that describe the properties of the
! 1352: # object.
! 1353: #
! 1354: # Since: 1.1
! 1355: #
! 1356: # Notes: This command is experimental. It's syntax may change in future
! 1357: # releases.
! 1358: ##
! 1359: { 'command': 'qom-list',
! 1360: 'data': { 'path': 'str' },
! 1361: 'returns': [ 'ObjectPropertyInfo' ] }
! 1362:
! 1363: ##
! 1364: # @qom-get:
! 1365: #
! 1366: # This command will get a property from a object model path and return the
! 1367: # value.
! 1368: #
! 1369: # @path: The path within the object model. There are two forms of supported
! 1370: # paths--absolute and partial paths.
! 1371: #
! 1372: # Absolute paths are derived from the root object and can follow child<>
! 1373: # or link<> properties. Since they can follow link<> properties, they
! 1374: # can be arbitrarily long. Absolute paths look like absolute filenames
! 1375: # and are prefixed with a leading slash.
! 1376: #
! 1377: # Partial paths look like relative filenames. They do not begin
! 1378: # with a prefix. The matching rules for partial paths are subtle but
! 1379: # designed to make specifying objects easy. At each level of the
! 1380: # composition tree, the partial path is matched as an absolute path.
! 1381: # The first match is not returned. At least two matches are searched
! 1382: # for. A successful result is only returned if only one match is
! 1383: # found. If more than one match is found, a flag is return to
! 1384: # indicate that the match was ambiguous.
! 1385: #
! 1386: # @property: The property name to read
! 1387: #
! 1388: # Returns: The property value. The type depends on the property type. legacy<>
! 1389: # properties are returned as #str. child<> and link<> properties are
! 1390: # returns as #str pathnames. All integer property types (u8, u16, etc)
! 1391: # are returned as #int.
! 1392: #
! 1393: # Since: 1.1
! 1394: #
! 1395: # Notes: This command is experimental and may change syntax in future releases.
! 1396: ##
! 1397: { 'command': 'qom-get',
! 1398: 'data': { 'path': 'str', 'property': 'str' },
! 1399: 'returns': 'visitor',
! 1400: 'gen': 'no' }
! 1401:
! 1402: ##
! 1403: # @qom-set:
! 1404: #
! 1405: # This command will set a property from a object model path.
! 1406: #
! 1407: # @path: see @qom-get for a description of this parameter
! 1408: #
! 1409: # @property: the property name to set
! 1410: #
! 1411: # @value: a value who's type is appropriate for the property type. See @qom-get
! 1412: # for a description of type mapping.
! 1413: #
! 1414: # Since: 1.1
! 1415: #
! 1416: # Notes: This command is experimental and may change syntax in future releases.
! 1417: ##
! 1418: { 'command': 'qom-set',
! 1419: 'data': { 'path': 'str', 'property': 'str', 'value': 'visitor' },
! 1420: 'gen': 'no' }
! 1421:
! 1422: ##
! 1423: # @set_password:
! 1424: #
! 1425: # Sets the password of a remote display session.
! 1426: #
! 1427: # @protocol: `vnc' to modify the VNC server password
! 1428: # `spice' to modify the Spice server password
! 1429: #
! 1430: # @password: the new password
! 1431: #
! 1432: # @connected: #optional how to handle existing clients when changing the
! 1433: # password. If nothing is specified, defaults to `keep'
! 1434: # `fail' to fail the command if clients are connected
! 1435: # `disconnect' to disconnect existing clients
! 1436: # `keep' to maintain existing clients
! 1437: #
! 1438: # Returns: Nothing on success
! 1439: # If Spice is not enabled, DeviceNotFound
! 1440: # If @protocol does not support connected, InvalidParameter
! 1441: # If @protocol is invalid, InvalidParameter
! 1442: # If any other error occurs, SetPasswdFailed
! 1443: #
! 1444: # Notes: If VNC is not enabled, SetPasswdFailed is returned.
! 1445: #
! 1446: # Since: 0.14.0
! 1447: ##
! 1448: { 'command': 'set_password',
! 1449: 'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} }
! 1450:
! 1451: ##
! 1452: # @expire_password:
! 1453: #
! 1454: # Expire the password of a remote display server.
! 1455: #
! 1456: # @protocol: the name of the remote display protocol `vnc' or `spice'
! 1457: #
! 1458: # @time: when to expire the password.
! 1459: # `now' to expire the password immediately
! 1460: # `never' to cancel password expiration
! 1461: # `+INT' where INT is the number of seconds from now (integer)
! 1462: # `INT' where INT is the absolute time in seconds
! 1463: #
! 1464: # Returns: Nothing on success
! 1465: # If @protocol is `spice' and Spice is not active, DeviceNotFound
! 1466: # If an error occurs setting password expiration, SetPasswdFailed
! 1467: # If @protocol is not `spice' or 'vnc', InvalidParameter
! 1468: #
! 1469: # Since: 0.14.0
! 1470: #
! 1471: # Notes: Time is relative to the server and currently there is no way to
! 1472: # coordinate server time with client time. It is not recommended to
! 1473: # use the absolute time version of the @time parameter unless you're
! 1474: # sure you are on the same machine as the QEMU instance.
! 1475: ##
! 1476: { 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
! 1477:
! 1478: ##
! 1479: # @eject:
! 1480: #
! 1481: # Ejects a device from a removable drive.
! 1482: #
! 1483: # @device: The name of the device
! 1484: #
! 1485: # @force: @optional If true, eject regardless of whether the drive is locked.
! 1486: # If not specified, the default value is false.
! 1487: #
! 1488: # Returns: Nothing on success
! 1489: # If @device is not a valid block device, DeviceNotFound
! 1490: # If @device is not removable and @force is false, DeviceNotRemovable
! 1491: # If @force is false and @device is locked, DeviceLocked
! 1492: #
! 1493: # Notes: Ejecting a device will no media results in success
! 1494: #
! 1495: # Since: 0.14.0
! 1496: ##
! 1497: { 'command': 'eject', 'data': {'device': 'str', '*force': 'bool'} }
! 1498:
! 1499: ##
! 1500: # @change-vnc-password:
! 1501: #
! 1502: # Change the VNC server password.
! 1503: #
! 1504: # @target: the new password to use with VNC authentication
! 1505: #
! 1506: # Since: 1.1
! 1507: #
! 1508: # Notes: An empty password in this command will set the password to the empty
! 1509: # string. Existing clients are unaffected by executing this command.
! 1510: ##
! 1511: { 'command': 'change-vnc-password', 'data': {'password': 'str'} }
! 1512:
! 1513: ##
! 1514: # @change:
! 1515: #
! 1516: # This command is multiple commands multiplexed together.
! 1517: #
! 1518: # @device: This is normally the name of a block device but it may also be 'vnc'.
! 1519: # when it's 'vnc', then sub command depends on @target
! 1520: #
! 1521: # @target: If @device is a block device, then this is the new filename.
! 1522: # If @device is 'vnc', then if the value 'password' selects the vnc
! 1523: # change password command. Otherwise, this specifies a new server URI
! 1524: # address to listen to for VNC connections.
! 1525: #
! 1526: # @arg: If @device is a block device, then this is an optional format to open
! 1527: # the device with.
! 1528: # If @device is 'vnc' and @target is 'password', this is the new VNC
! 1529: # password to set. If this argument is an empty string, then no future
! 1530: # logins will be allowed.
! 1531: #
! 1532: # Returns: Nothing on success.
! 1533: # If @device is not a valid block device, DeviceNotFound
! 1534: # If @format is not a valid block format, InvalidBlockFormat
! 1535: # If the new block device is encrypted, DeviceEncrypted. Note that
! 1536: # if this error is returned, the device has been opened successfully
! 1537: # and an additional call to @block_passwd is required to set the
! 1538: # device's password. The behavior of reads and writes to the block
! 1539: # device between when these calls are executed is undefined.
! 1540: #
! 1541: # Notes: It is strongly recommended that this interface is not used especially
! 1542: # for changing block devices.
! 1543: #
! 1544: # Since: 0.14.0
! 1545: ##
! 1546: { 'command': 'change',
! 1547: 'data': {'device': 'str', 'target': 'str', '*arg': 'str'} }
! 1548:
! 1549: ##
! 1550: # @block_set_io_throttle:
! 1551: #
! 1552: # Change I/O throttle limits for a block drive.
! 1553: #
! 1554: # @device: The name of the device
! 1555: #
! 1556: # @bps: total throughput limit in bytes per second
! 1557: #
! 1558: # @bps_rd: read throughput limit in bytes per second
! 1559: #
! 1560: # @bps_wr: write throughput limit in bytes per second
! 1561: #
! 1562: # @iops: total I/O operations per second
! 1563: #
! 1564: # @ops_rd: read I/O operations per second
! 1565: #
! 1566: # @iops_wr: write I/O operations per second
! 1567: #
! 1568: # Returns: Nothing on success
! 1569: # If @device is not a valid block device, DeviceNotFound
! 1570: # If the argument combination is invalid, InvalidParameterCombination
! 1571: #
! 1572: # Since: 1.1
! 1573: ##
! 1574: { 'command': 'block_set_io_throttle',
! 1575: 'data': { 'device': 'str', 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
! 1576: 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } }
! 1577:
! 1578: ##
! 1579: # @block-stream:
! 1580: #
! 1581: # Copy data from a backing file into a block device.
! 1582: #
! 1583: # The block streaming operation is performed in the background until the entire
! 1584: # backing file has been copied. This command returns immediately once streaming
! 1585: # has started. The status of ongoing block streaming operations can be checked
! 1586: # with query-block-jobs. The operation can be stopped before it has completed
! 1587: # using the block-job-cancel command.
! 1588: #
! 1589: # If a base file is specified then sectors are not copied from that base file and
! 1590: # its backing chain. When streaming completes the image file will have the base
! 1591: # file as its backing file. This can be used to stream a subset of the backing
! 1592: # file chain instead of flattening the entire image.
! 1593: #
! 1594: # On successful completion the image file is updated to drop the backing file
! 1595: # and the BLOCK_JOB_COMPLETED event is emitted.
! 1596: #
! 1597: # @device: the device name
! 1598: #
! 1599: # @base: #optional the common backing file name
! 1600: #
! 1601: # @speed: #optional the maximum speed, in bytes per second
! 1602: #
! 1603: # Returns: Nothing on success
! 1604: # If streaming is already active on this device, DeviceInUse
! 1605: # If @device does not exist, DeviceNotFound
! 1606: # If image streaming is not supported by this device, NotSupported
! 1607: # If @base does not exist, BaseNotFound
! 1608: # If @speed is invalid, InvalidParameter
! 1609: #
! 1610: # Since: 1.1
! 1611: ##
! 1612: { 'command': 'block-stream', 'data': { 'device': 'str', '*base': 'str',
! 1613: '*speed': 'int' } }
! 1614:
! 1615: ##
! 1616: # @block-job-set-speed:
! 1617: #
! 1618: # Set maximum speed for a background block operation.
! 1619: #
! 1620: # This command can only be issued when there is an active block job.
! 1621: #
! 1622: # Throttling can be disabled by setting the speed to 0.
! 1623: #
! 1624: # @device: the device name
! 1625: #
! 1626: # @speed: the maximum speed, in bytes per second, or 0 for unlimited.
! 1627: # Defaults to 0.
! 1628: #
! 1629: # Returns: Nothing on success
! 1630: # If the job type does not support throttling, NotSupported
! 1631: # If the speed value is invalid, InvalidParameter
! 1632: # If streaming is not active on this device, DeviceNotActive
! 1633: #
! 1634: # Since: 1.1
! 1635: ##
! 1636: { 'command': 'block-job-set-speed',
! 1637: 'data': { 'device': 'str', 'speed': 'int' } }
! 1638:
! 1639: ##
! 1640: # @block-job-cancel:
! 1641: #
! 1642: # Stop an active block streaming operation.
! 1643: #
! 1644: # This command returns immediately after marking the active block streaming
! 1645: # operation for cancellation. It is an error to call this command if no
! 1646: # operation is in progress.
! 1647: #
! 1648: # The operation will cancel as soon as possible and then emit the
! 1649: # BLOCK_JOB_CANCELLED event. Before that happens the job is still visible when
! 1650: # enumerated using query-block-jobs.
! 1651: #
! 1652: # The image file retains its backing file unless the streaming operation happens
! 1653: # to complete just as it is being cancelled.
! 1654: #
! 1655: # A new block streaming operation can be started at a later time to finish
! 1656: # copying all data from the backing file.
! 1657: #
! 1658: # @device: the device name
! 1659: #
! 1660: # Returns: Nothing on success
! 1661: # If streaming is not active on this device, DeviceNotActive
! 1662: # If cancellation already in progress, DeviceInUse
! 1663: #
! 1664: # Since: 1.1
! 1665: ##
! 1666: { 'command': 'block-job-cancel', 'data': { 'device': 'str' } }
! 1667:
! 1668: ##
! 1669: # @ObjectTypeInfo:
! 1670: #
! 1671: # This structure describes a search result from @qom-list-types
! 1672: #
! 1673: # @name: the type name found in the search
! 1674: #
! 1675: # Since: 1.1
! 1676: #
! 1677: # Notes: This command is experimental and may change syntax in future releases.
! 1678: ##
! 1679: { 'type': 'ObjectTypeInfo',
! 1680: 'data': { 'name': 'str' } }
! 1681:
! 1682: ##
! 1683: # @qom-list-types:
! 1684: #
! 1685: # This command will return a list of types given search parameters
! 1686: #
! 1687: # @implements: if specified, only return types that implement this type name
! 1688: #
! 1689: # @abstract: if true, include abstract types in the results
! 1690: #
! 1691: # Returns: a list of @ObjectTypeInfo or an empty list if no results are found
! 1692: #
! 1693: # Since: 1.1
! 1694: #
! 1695: # Notes: This command is experimental and may change syntax in future releases.
! 1696: ##
! 1697: { 'command': 'qom-list-types',
! 1698: 'data': { '*implements': 'str', '*abstract': 'bool' },
! 1699: 'returns': [ 'ObjectTypeInfo' ] }
! 1700:
! 1701: ##
! 1702: # @migrate
! 1703: #
! 1704: # Migrates the current running guest to another Virtual Machine.
! 1705: #
! 1706: # @uri: the Uniform Resource Identifier of the destination VM
! 1707: #
! 1708: # @blk: #optional do block migration (full disk copy)
! 1709: #
! 1710: # @inc: #optional incremental disk copy migration
! 1711: #
! 1712: # @detach: this argument exists only for compatibility reasons and
! 1713: # is ignored by QEMU
! 1714: #
! 1715: # Returns: nothing on success
! 1716: #
! 1717: # Since: 0.14.0
! 1718: ##
! 1719: { 'command': 'migrate',
! 1720: 'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' } }
! 1721:
! 1722: # @xen-save-devices-state:
! 1723: #
! 1724: # Save the state of all devices to file. The RAM and the block devices
! 1725: # of the VM are not saved by this command.
! 1726: #
! 1727: # @filename: the file to save the state of the devices to as binary
! 1728: # data. See xen-save-devices-state.txt for a description of the binary
! 1729: # format.
! 1730: #
! 1731: # Returns: Nothing on success
! 1732: # If @filename cannot be opened, OpenFileFailed
! 1733: # If an I/O error occurs while writing the file, IOError
! 1734: #
! 1735: # Since: 1.1
! 1736: ##
! 1737: { 'command': 'xen-save-devices-state', 'data': {'filename': 'str'} }
! 1738:
! 1739: ##
! 1740: # @device_del:
! 1741: #
! 1742: # Remove a device from a guest
! 1743: #
! 1744: # @id: the name of the device
! 1745: #
! 1746: # Returns: Nothing on success
! 1747: # If @id is not a valid device, DeviceNotFound
! 1748: # If the device does not support unplug, BusNoHotplug
! 1749: #
! 1750: # Notes: When this command completes, the device may not be removed from the
! 1751: # guest. Hot removal is an operation that requires guest cooperation.
! 1752: # This command merely requests that the guest begin the hot removal
! 1753: # process.
! 1754: #
! 1755: # Since: 0.14.0
! 1756: ##
! 1757: { 'command': 'device_del', 'data': {'id': 'str'} }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.