qapi: convert netdev_add
[qemu.git] / qmp-commands.hx
blobf6550cb9bd9312697be41435a4c7a7df46311589
1 HXCOMM QMP dispatch table and documentation
2 HXCOMM Text between SQMP and EQMP is copied to the QMP documention file and
3 HXCOMM does not show up in the other formats.
5 SQMP
6 QMP Supported Commands
7 ----------------------
9 This document describes all commands currently supported by QMP.
11 Most of the time their usage is exactly the same as in the user Monitor, this
12 means that any other document which also describe commands (the manpage,
13 QEMU's manual, etc) can and should be consulted.
15 QMP has two types of commands: regular and query commands. Regular commands
16 usually change the Virtual Machine's state someway, while query commands just
17 return information. The sections below are divided accordingly.
19 It's important to observe that all communication examples are formatted in
20 a reader-friendly way, so that they're easier to understand. However, in real
21 protocol usage, they're emitted as a single line.
23 Also, the following notation is used to denote data flow:
25 -> data issued by the Client
26 <- Server data response
28 Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29 information on the Server command and response formats.
31 NOTE: This document is temporary and will be replaced soon.
33 1. Stability Considerations
34 ===========================
36 The current QMP command set (described in this file) may be useful for a
37 number of use cases, however it's limited and several commands have bad
38 defined semantics, specially with regard to command completion.
40 These problems are going to be solved incrementally in the next QEMU releases
41 and we're going to establish a deprecation policy for badly defined commands.
43 If you're planning to adopt QMP, please observe the following:
45 1. The deprecation policy will take effect and be documented soon, please
46 check the documentation of each used command as soon as a new release of
47 QEMU is available
49 2. DO NOT rely on anything which is not explicit documented
51 3. Errors, in special, are not documented. Applications should NOT check
52 for specific errors classes or data (it's strongly recommended to only
53 check for the "error" key)
55 2. Regular Commands
56 ===================
58 Server's responses in the examples below are always a success response, please
59 refer to the QMP specification for more details on error responses.
61 EQMP
64 .name = "quit",
65 .args_type = "",
66 .mhandler.cmd_new = qmp_marshal_input_quit,
69 SQMP
70 quit
71 ----
73 Quit the emulator.
75 Arguments: None.
77 Example:
79 -> { "execute": "quit" }
80 <- { "return": {} }
82 EQMP
85 .name = "eject",
86 .args_type = "force:-f,device:B",
87 .mhandler.cmd_new = qmp_marshal_input_eject,
90 SQMP
91 eject
92 -----
94 Eject a removable medium.
96 Arguments:
98 - force: force ejection (json-bool, optional)
99 - device: device name (json-string)
101 Example:
103 -> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
104 <- { "return": {} }
106 Note: The "force" argument defaults to false.
108 EQMP
111 .name = "change",
112 .args_type = "device:B,target:F,arg:s?",
113 .mhandler.cmd_new = qmp_marshal_input_change,
116 SQMP
117 change
118 ------
120 Change a removable medium or VNC configuration.
122 Arguments:
124 - "device": device name (json-string)
125 - "target": filename or item (json-string)
126 - "arg": additional argument (json-string, optional)
128 Examples:
130 1. Change a removable medium
132 -> { "execute": "change",
133 "arguments": { "device": "ide1-cd0",
134 "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
135 <- { "return": {} }
137 2. Change VNC password
139 -> { "execute": "change",
140 "arguments": { "device": "vnc", "target": "password",
141 "arg": "foobar1" } }
142 <- { "return": {} }
144 EQMP
147 .name = "screendump",
148 .args_type = "filename:F",
149 .params = "filename",
150 .help = "save screen into PPM image 'filename'",
151 .user_print = monitor_user_noop,
152 .mhandler.cmd_new = do_screen_dump,
155 SQMP
156 screendump
157 ----------
159 Save screen into PPM image.
161 Arguments:
163 - "filename": file path (json-string)
165 Example:
167 -> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
168 <- { "return": {} }
170 EQMP
173 .name = "stop",
174 .args_type = "",
175 .mhandler.cmd_new = qmp_marshal_input_stop,
178 SQMP
179 stop
180 ----
182 Stop the emulator.
184 Arguments: None.
186 Example:
188 -> { "execute": "stop" }
189 <- { "return": {} }
191 EQMP
194 .name = "cont",
195 .args_type = "",
196 .mhandler.cmd_new = qmp_marshal_input_cont,
199 SQMP
200 cont
201 ----
203 Resume emulation.
205 Arguments: None.
207 Example:
209 -> { "execute": "cont" }
210 <- { "return": {} }
212 EQMP
215 .name = "system_wakeup",
216 .args_type = "",
217 .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
220 SQMP
221 system_wakeup
222 -------------
224 Wakeup guest from suspend.
226 Arguments: None.
228 Example:
230 -> { "execute": "system_wakeup" }
231 <- { "return": {} }
233 EQMP
236 .name = "system_reset",
237 .args_type = "",
238 .mhandler.cmd_new = qmp_marshal_input_system_reset,
241 SQMP
242 system_reset
243 ------------
245 Reset the system.
247 Arguments: None.
249 Example:
251 -> { "execute": "system_reset" }
252 <- { "return": {} }
254 EQMP
257 .name = "system_powerdown",
258 .args_type = "",
259 .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
262 SQMP
263 system_powerdown
264 ----------------
266 Send system power down event.
268 Arguments: None.
270 Example:
272 -> { "execute": "system_powerdown" }
273 <- { "return": {} }
275 EQMP
278 .name = "device_add",
279 .args_type = "device:O",
280 .params = "driver[,prop=value][,...]",
281 .help = "add device, like -device on the command line",
282 .user_print = monitor_user_noop,
283 .mhandler.cmd_new = do_device_add,
286 SQMP
287 device_add
288 ----------
290 Add a device.
292 Arguments:
294 - "driver": the name of the new device's driver (json-string)
295 - "bus": the device's parent bus (device tree path, json-string, optional)
296 - "id": the device's ID, must be unique (json-string)
297 - device properties
299 Example:
301 -> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
302 <- { "return": {} }
304 Notes:
306 (1) For detailed information about this command, please refer to the
307 'docs/qdev-device-use.txt' file.
309 (2) It's possible to list device properties by running QEMU with the
310 "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
312 EQMP
315 .name = "device_del",
316 .args_type = "id:s",
317 .mhandler.cmd_new = qmp_marshal_input_device_del,
320 SQMP
321 device_del
322 ----------
324 Remove a device.
326 Arguments:
328 - "id": the device's ID (json-string)
330 Example:
332 -> { "execute": "device_del", "arguments": { "id": "net1" } }
333 <- { "return": {} }
335 EQMP
338 .name = "cpu",
339 .args_type = "index:i",
340 .mhandler.cmd_new = qmp_marshal_input_cpu,
343 SQMP
347 Set the default CPU.
349 Arguments:
351 - "index": the CPU's index (json-int)
353 Example:
355 -> { "execute": "cpu", "arguments": { "index": 0 } }
356 <- { "return": {} }
358 Note: CPUs' indexes are obtained with the 'query-cpus' command.
360 EQMP
363 .name = "memsave",
364 .args_type = "val:l,size:i,filename:s,cpu:i?",
365 .mhandler.cmd_new = qmp_marshal_input_memsave,
368 SQMP
369 memsave
370 -------
372 Save to disk virtual memory dump starting at 'val' of size 'size'.
374 Arguments:
376 - "val": the starting address (json-int)
377 - "size": the memory size, in bytes (json-int)
378 - "filename": file path (json-string)
379 - "cpu": virtual CPU index (json-int, optional)
381 Example:
383 -> { "execute": "memsave",
384 "arguments": { "val": 10,
385 "size": 100,
386 "filename": "/tmp/virtual-mem-dump" } }
387 <- { "return": {} }
389 EQMP
392 .name = "pmemsave",
393 .args_type = "val:l,size:i,filename:s",
394 .mhandler.cmd_new = qmp_marshal_input_pmemsave,
397 SQMP
398 pmemsave
399 --------
401 Save to disk physical memory dump starting at 'val' of size 'size'.
403 Arguments:
405 - "val": the starting address (json-int)
406 - "size": the memory size, in bytes (json-int)
407 - "filename": file path (json-string)
409 Example:
411 -> { "execute": "pmemsave",
412 "arguments": { "val": 10,
413 "size": 100,
414 "filename": "/tmp/physical-mem-dump" } }
415 <- { "return": {} }
417 EQMP
420 .name = "inject-nmi",
421 .args_type = "",
422 .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
425 SQMP
426 inject-nmi
427 ----------
429 Inject an NMI on guest's CPUs.
431 Arguments: None.
433 Example:
435 -> { "execute": "inject-nmi" }
436 <- { "return": {} }
438 Note: inject-nmi is only supported for x86 guest currently, it will
439 returns "Unsupported" error for non-x86 guest.
441 EQMP
444 .name = "xen-save-devices-state",
445 .args_type = "filename:F",
446 .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state,
449 SQMP
450 xen-save-devices-state
451 -------
453 Save the state of all devices to file. The RAM and the block devices
454 of the VM are not saved by this command.
456 Arguments:
458 - "filename": the file to save the state of the devices to as binary
459 data. See xen-save-devices-state.txt for a description of the binary
460 format.
462 Example:
464 -> { "execute": "xen-save-devices-state",
465 "arguments": { "filename": "/tmp/save" } }
466 <- { "return": {} }
468 EQMP
471 .name = "migrate",
472 .args_type = "detach:-d,blk:-b,inc:-i,uri:s",
473 .mhandler.cmd_new = qmp_marshal_input_migrate,
476 SQMP
477 migrate
478 -------
480 Migrate to URI.
482 Arguments:
484 - "blk": block migration, full disk copy (json-bool, optional)
485 - "inc": incremental disk copy (json-bool, optional)
486 - "uri": Destination URI (json-string)
488 Example:
490 -> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
491 <- { "return": {} }
493 Notes:
495 (1) The 'query-migrate' command should be used to check migration's progress
496 and final result (this information is provided by the 'status' member)
497 (2) All boolean arguments default to false
498 (3) The user Monitor's "detach" argument is invalid in QMP and should not
499 be used
501 EQMP
504 .name = "migrate_cancel",
505 .args_type = "",
506 .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
509 SQMP
510 migrate_cancel
511 --------------
513 Cancel the current migration.
515 Arguments: None.
517 Example:
519 -> { "execute": "migrate_cancel" }
520 <- { "return": {} }
522 EQMP
525 .name = "migrate_set_speed",
526 .args_type = "value:o",
527 .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
530 SQMP
531 migrate_set_speed
532 -----------------
534 Set maximum speed for migrations.
536 Arguments:
538 - "value": maximum speed, in bytes per second (json-int)
540 Example:
542 -> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
543 <- { "return": {} }
545 EQMP
548 .name = "migrate_set_downtime",
549 .args_type = "value:T",
550 .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
553 SQMP
554 migrate_set_downtime
555 --------------------
557 Set maximum tolerated downtime (in seconds) for migrations.
559 Arguments:
561 - "value": maximum downtime (json-number)
563 Example:
565 -> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
566 <- { "return": {} }
568 EQMP
571 .name = "client_migrate_info",
572 .args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
573 .params = "protocol hostname port tls-port cert-subject",
574 .help = "send migration info to spice/vnc client",
575 .user_print = monitor_user_noop,
576 .mhandler.cmd_async = client_migrate_info,
577 .flags = MONITOR_CMD_ASYNC,
580 SQMP
581 client_migrate_info
582 ------------------
584 Set the spice/vnc connection info for the migration target. The spice/vnc
585 server will ask the spice/vnc client to automatically reconnect using the
586 new parameters (if specified) once the vm migration finished successfully.
588 Arguments:
590 - "protocol": protocol: "spice" or "vnc" (json-string)
591 - "hostname": migration target hostname (json-string)
592 - "port": spice/vnc tcp port for plaintext channels (json-int, optional)
593 - "tls-port": spice tcp port for tls-secured channels (json-int, optional)
594 - "cert-subject": server certificate subject (json-string, optional)
596 Example:
598 -> { "execute": "client_migrate_info",
599 "arguments": { "protocol": "spice",
600 "hostname": "virt42.lab.kraxel.org",
601 "port": 1234 } }
602 <- { "return": {} }
604 EQMP
607 .name = "dump-guest-memory",
608 .args_type = "paging:b,protocol:s,begin:i?,end:i?",
609 .params = "-p protocol [begin] [length]",
610 .help = "dump guest memory to file",
611 .user_print = monitor_user_noop,
612 .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory,
615 SQMP
616 dump
619 Dump guest memory to file. The file can be processed with crash or gdb.
621 Arguments:
623 - "paging": do paging to get guest's memory mapping (json-bool)
624 - "protocol": destination file(started with "file:") or destination file
625 descriptor (started with "fd:") (json-string)
626 - "begin": the starting physical address. It's optional, and should be specified
627 with length together (json-int)
628 - "length": the memory size, in bytes. It's optional, and should be specified
629 with begin together (json-int)
631 Example:
633 -> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
634 <- { "return": {} }
636 Notes:
638 (1) All boolean arguments default to false
640 EQMP
643 .name = "netdev_add",
644 .args_type = "netdev:O",
645 .mhandler.cmd_new = qmp_netdev_add,
648 SQMP
649 netdev_add
650 ----------
652 Add host network device.
654 Arguments:
656 - "type": the device type, "tap", "user", ... (json-string)
657 - "id": the device's ID, must be unique (json-string)
658 - device options
660 Example:
662 -> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
663 <- { "return": {} }
665 Note: The supported device options are the same ones supported by the '-net'
666 command-line argument, which are listed in the '-help' output or QEMU's
667 manual
669 EQMP
672 .name = "netdev_del",
673 .args_type = "id:s",
674 .params = "id",
675 .help = "remove host network device",
676 .user_print = monitor_user_noop,
677 .mhandler.cmd_new = do_netdev_del,
680 SQMP
681 netdev_del
682 ----------
684 Remove host network device.
686 Arguments:
688 - "id": the device's ID, must be unique (json-string)
690 Example:
692 -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
693 <- { "return": {} }
696 EQMP
699 .name = "block_resize",
700 .args_type = "device:B,size:o",
701 .mhandler.cmd_new = qmp_marshal_input_block_resize,
704 SQMP
705 block_resize
706 ------------
708 Resize a block image while a guest is running.
710 Arguments:
712 - "device": the device's ID, must be unique (json-string)
713 - "size": new size
715 Example:
717 -> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
718 <- { "return": {} }
720 EQMP
723 .name = "block-stream",
724 .args_type = "device:B,base:s?,speed:o?",
725 .mhandler.cmd_new = qmp_marshal_input_block_stream,
729 .name = "block-job-set-speed",
730 .args_type = "device:B,speed:o",
731 .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
735 .name = "block-job-cancel",
736 .args_type = "device:B",
737 .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
740 .name = "transaction",
741 .args_type = "actions:q",
742 .mhandler.cmd_new = qmp_marshal_input_transaction,
745 SQMP
746 transaction
747 -----------
749 Atomically operate on one or more block devices. The only supported
750 operation for now is snapshotting. If there is any failure performing
751 any of the operations, all snapshots for the group are abandoned, and
752 the original disks pre-snapshot attempt are used.
754 A list of dictionaries is accepted, that contains the actions to be performed.
755 For snapshots this is the device, the file to use for the new snapshot,
756 and the format. The default format, if not specified, is qcow2.
758 Each new snapshot defaults to being created by QEMU (wiping any
759 contents if the file already exists), but it is also possible to reuse
760 an externally-created file. In the latter case, you should ensure that
761 the new image file has the same contents as the current one; QEMU cannot
762 perform any meaningful check. Typically this is achieved by using the
763 current image file as the backing file for the new image.
765 Arguments:
767 actions array:
768 - "type": the operation to perform. The only supported
769 value is "blockdev-snapshot-sync". (json-string)
770 - "data": a dictionary. The contents depend on the value
771 of "type". When "type" is "blockdev-snapshot-sync":
772 - "device": device name to snapshot (json-string)
773 - "snapshot-file": name of new image file (json-string)
774 - "format": format of new image (json-string, optional)
775 - "mode": whether and how QEMU should create the snapshot file
776 (NewImageMode, optional, default "absolute-paths")
778 Example:
780 -> { "execute": "transaction",
781 "arguments": { "actions": [
782 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
783 "snapshot-file": "/some/place/my-image",
784 "format": "qcow2" } },
785 { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
786 "snapshot-file": "/some/place/my-image2",
787 "mode": "existing",
788 "format": "qcow2" } } ] } }
789 <- { "return": {} }
791 EQMP
794 .name = "blockdev-snapshot-sync",
795 .args_type = "device:B,snapshot-file:s,format:s?,mode:s?",
796 .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
799 SQMP
800 blockdev-snapshot-sync
801 ----------------------
803 Synchronous snapshot of a block device. snapshot-file specifies the
804 target of the new image. If the file exists, or if it is a device, the
805 snapshot will be created in the existing file/device. If does not
806 exist, a new file will be created. format specifies the format of the
807 snapshot image, default is qcow2.
809 Arguments:
811 - "device": device name to snapshot (json-string)
812 - "snapshot-file": name of new image file (json-string)
813 - "mode": whether and how QEMU should create the snapshot file
814 (NewImageMode, optional, default "absolute-paths")
815 - "format": format of new image (json-string, optional)
817 Example:
819 -> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
820 "snapshot-file":
821 "/some/place/my-image",
822 "format": "qcow2" } }
823 <- { "return": {} }
825 EQMP
828 .name = "balloon",
829 .args_type = "value:M",
830 .mhandler.cmd_new = qmp_marshal_input_balloon,
833 SQMP
834 balloon
835 -------
837 Request VM to change its memory allocation (in bytes).
839 Arguments:
841 - "value": New memory allocation (json-int)
843 Example:
845 -> { "execute": "balloon", "arguments": { "value": 536870912 } }
846 <- { "return": {} }
848 EQMP
851 .name = "set_link",
852 .args_type = "name:s,up:b",
853 .mhandler.cmd_new = qmp_marshal_input_set_link,
856 SQMP
857 set_link
858 --------
860 Change the link status of a network adapter.
862 Arguments:
864 - "name": network device name (json-string)
865 - "up": status is up (json-bool)
867 Example:
869 -> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
870 <- { "return": {} }
872 EQMP
875 .name = "getfd",
876 .args_type = "fdname:s",
877 .params = "getfd name",
878 .help = "receive a file descriptor via SCM rights and assign it a name",
879 .user_print = monitor_user_noop,
880 .mhandler.cmd_new = do_getfd,
883 SQMP
884 getfd
885 -----
887 Receive a file descriptor via SCM rights and assign it a name.
889 Arguments:
891 - "fdname": file descriptor name (json-string)
893 Example:
895 -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
896 <- { "return": {} }
898 EQMP
901 .name = "closefd",
902 .args_type = "fdname:s",
903 .params = "closefd name",
904 .help = "close a file descriptor previously passed via SCM rights",
905 .user_print = monitor_user_noop,
906 .mhandler.cmd_new = do_closefd,
909 SQMP
910 closefd
911 -------
913 Close a file descriptor previously passed via SCM rights.
915 Arguments:
917 - "fdname": file descriptor name (json-string)
919 Example:
921 -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
922 <- { "return": {} }
924 EQMP
927 .name = "block_passwd",
928 .args_type = "device:B,password:s",
929 .mhandler.cmd_new = qmp_marshal_input_block_passwd,
932 SQMP
933 block_passwd
934 ------------
936 Set the password of encrypted block devices.
938 Arguments:
940 - "device": device name (json-string)
941 - "password": password (json-string)
943 Example:
945 -> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
946 "password": "12345" } }
947 <- { "return": {} }
949 EQMP
952 .name = "block_set_io_throttle",
953 .args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
954 .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
957 SQMP
958 block_set_io_throttle
959 ------------
961 Change I/O throttle limits for a block drive.
963 Arguments:
965 - "device": device name (json-string)
966 - "bps": total throughput limit in bytes per second(json-int)
967 - "bps_rd": read throughput limit in bytes per second(json-int)
968 - "bps_wr": read throughput limit in bytes per second(json-int)
969 - "iops": total I/O operations per second(json-int)
970 - "iops_rd": read I/O operations per second(json-int)
971 - "iops_wr": write I/O operations per second(json-int)
973 Example:
975 -> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
976 "bps": "1000000",
977 "bps_rd": "0",
978 "bps_wr": "0",
979 "iops": "0",
980 "iops_rd": "0",
981 "iops_wr": "0" } }
982 <- { "return": {} }
984 EQMP
987 .name = "set_password",
988 .args_type = "protocol:s,password:s,connected:s?",
989 .mhandler.cmd_new = qmp_marshal_input_set_password,
992 SQMP
993 set_password
994 ------------
996 Set the password for vnc/spice protocols.
998 Arguments:
1000 - "protocol": protocol name (json-string)
1001 - "password": password (json-string)
1002 - "connected": [ keep | disconnect | fail ] (josn-string, optional)
1004 Example:
1006 -> { "execute": "set_password", "arguments": { "protocol": "vnc",
1007 "password": "secret" } }
1008 <- { "return": {} }
1010 EQMP
1013 .name = "expire_password",
1014 .args_type = "protocol:s,time:s",
1015 .mhandler.cmd_new = qmp_marshal_input_expire_password,
1018 SQMP
1019 expire_password
1020 ---------------
1022 Set the password expire time for vnc/spice protocols.
1024 Arguments:
1026 - "protocol": protocol name (json-string)
1027 - "time": [ now | never | +secs | secs ] (json-string)
1029 Example:
1031 -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1032 "time": "+60" } }
1033 <- { "return": {} }
1035 EQMP
1038 .name = "add_client",
1039 .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1040 .params = "protocol fdname skipauth tls",
1041 .help = "add a graphics client",
1042 .user_print = monitor_user_noop,
1043 .mhandler.cmd_new = add_graphics_client,
1046 SQMP
1047 add_client
1048 ----------
1050 Add a graphics client
1052 Arguments:
1054 - "protocol": protocol name (json-string)
1055 - "fdname": file descriptor name (json-string)
1056 - "skipauth": whether to skip authentication (json-bool, optional)
1057 - "tls": whether to perform TLS (json-bool, optional)
1059 Example:
1061 -> { "execute": "add_client", "arguments": { "protocol": "vnc",
1062 "fdname": "myclient" } }
1063 <- { "return": {} }
1065 EQMP
1067 .name = "qmp_capabilities",
1068 .args_type = "",
1069 .params = "",
1070 .help = "enable QMP capabilities",
1071 .user_print = monitor_user_noop,
1072 .mhandler.cmd_new = do_qmp_capabilities,
1075 SQMP
1076 qmp_capabilities
1077 ----------------
1079 Enable QMP capabilities.
1081 Arguments: None.
1083 Example:
1085 -> { "execute": "qmp_capabilities" }
1086 <- { "return": {} }
1088 Note: This command must be issued before issuing any other command.
1090 EQMP
1093 .name = "human-monitor-command",
1094 .args_type = "command-line:s,cpu-index:i?",
1095 .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1098 SQMP
1099 human-monitor-command
1100 ---------------------
1102 Execute a Human Monitor command.
1104 Arguments:
1106 - command-line: the command name and its arguments, just like the
1107 Human Monitor's shell (json-string)
1108 - cpu-index: select the CPU number to be used by commands which access CPU
1109 data, like 'info registers'. The Monitor selects CPU 0 if this
1110 argument is not provided (json-int, optional)
1112 Example:
1114 -> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1115 <- { "return": "kvm support: enabled\r\n" }
1117 Notes:
1119 (1) The Human Monitor is NOT an stable interface, this means that command
1120 names, arguments and responses can change or be removed at ANY time.
1121 Applications that rely on long term stability guarantees should NOT
1122 use this command
1124 (2) Limitations:
1126 o This command is stateless, this means that commands that depend
1127 on state information (such as getfd) might not work
1129 o Commands that prompt the user for data (eg. 'cont' when the block
1130 device is encrypted) don't currently work
1132 3. Query Commands
1133 =================
1135 HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1136 HXCOMM this! We will possibly move query commands definitions inside those
1137 HXCOMM sections, just like regular commands.
1139 EQMP
1141 SQMP
1142 query-version
1143 -------------
1145 Show QEMU version.
1147 Return a json-object with the following information:
1149 - "qemu": A json-object containing three integer values:
1150 - "major": QEMU's major version (json-int)
1151 - "minor": QEMU's minor version (json-int)
1152 - "micro": QEMU's micro version (json-int)
1153 - "package": package's version (json-string)
1155 Example:
1157 -> { "execute": "query-version" }
1158 <- {
1159 "return":{
1160 "qemu":{
1161 "major":0,
1162 "minor":11,
1163 "micro":5
1165 "package":""
1169 EQMP
1172 .name = "query-version",
1173 .args_type = "",
1174 .mhandler.cmd_new = qmp_marshal_input_query_version,
1177 SQMP
1178 query-commands
1179 --------------
1181 List QMP available commands.
1183 Each command is represented by a json-object, the returned value is a json-array
1184 of all commands.
1186 Each json-object contain:
1188 - "name": command's name (json-string)
1190 Example:
1192 -> { "execute": "query-commands" }
1193 <- {
1194 "return":[
1196 "name":"query-balloon"
1199 "name":"system_powerdown"
1204 Note: This example has been shortened as the real response is too long.
1206 EQMP
1209 .name = "query-commands",
1210 .args_type = "",
1211 .mhandler.cmd_new = qmp_marshal_input_query_commands,
1214 SQMP
1215 query-chardev
1216 -------------
1218 Each device is represented by a json-object. The returned value is a json-array
1219 of all devices.
1221 Each json-object contain the following:
1223 - "label": device's label (json-string)
1224 - "filename": device's file (json-string)
1226 Example:
1228 -> { "execute": "query-chardev" }
1229 <- {
1230 "return":[
1232 "label":"monitor",
1233 "filename":"stdio"
1236 "label":"serial0",
1237 "filename":"vc"
1242 EQMP
1245 .name = "query-chardev",
1246 .args_type = "",
1247 .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1250 SQMP
1251 query-block
1252 -----------
1254 Show the block devices.
1256 Each block device information is stored in a json-object and the returned value
1257 is a json-array of all devices.
1259 Each json-object contain the following:
1261 - "device": device name (json-string)
1262 - "type": device type (json-string)
1263 - deprecated, retained for backward compatibility
1264 - Possible values: "unknown"
1265 - "removable": true if the device is removable, false otherwise (json-bool)
1266 - "locked": true if the device is locked, false otherwise (json-bool)
1267 - "tray-open": only present if removable, true if the device has a tray,
1268 and it is open (json-bool)
1269 - "inserted": only present if the device is inserted, it is a json-object
1270 containing the following:
1271 - "file": device file name (json-string)
1272 - "ro": true if read-only, false otherwise (json-bool)
1273 - "drv": driver format name (json-string)
1274 - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1275 "file", "file", "ftp", "ftps", "host_cdrom",
1276 "host_device", "host_floppy", "http", "https",
1277 "nbd", "parallels", "qcow", "qcow2", "raw",
1278 "tftp", "vdi", "vmdk", "vpc", "vvfat"
1279 - "backing_file": backing file name (json-string, optional)
1280 - "encrypted": true if encrypted, false otherwise (json-bool)
1281 - "bps": limit total bytes per second (json-int)
1282 - "bps_rd": limit read bytes per second (json-int)
1283 - "bps_wr": limit write bytes per second (json-int)
1284 - "iops": limit total I/O operations per second (json-int)
1285 - "iops_rd": limit read operations per second (json-int)
1286 - "iops_wr": limit write operations per second (json-int)
1288 - "io-status": I/O operation status, only present if the device supports it
1289 and the VM is configured to stop on errors. It's always reset
1290 to "ok" when the "cont" command is issued (json_string, optional)
1291 - Possible values: "ok", "failed", "nospace"
1293 Example:
1295 -> { "execute": "query-block" }
1296 <- {
1297 "return":[
1299 "io-status": "ok",
1300 "device":"ide0-hd0",
1301 "locked":false,
1302 "removable":false,
1303 "inserted":{
1304 "ro":false,
1305 "drv":"qcow2",
1306 "encrypted":false,
1307 "file":"disks/test.img",
1308 "bps":1000000,
1309 "bps_rd":0,
1310 "bps_wr":0,
1311 "iops":1000000,
1312 "iops_rd":0,
1313 "iops_wr":0,
1315 "type":"unknown"
1318 "io-status": "ok",
1319 "device":"ide1-cd0",
1320 "locked":false,
1321 "removable":true,
1322 "type":"unknown"
1325 "device":"floppy0",
1326 "locked":false,
1327 "removable":true,
1328 "type":"unknown"
1331 "device":"sd0",
1332 "locked":false,
1333 "removable":true,
1334 "type":"unknown"
1339 EQMP
1342 .name = "query-block",
1343 .args_type = "",
1344 .mhandler.cmd_new = qmp_marshal_input_query_block,
1347 SQMP
1348 query-blockstats
1349 ----------------
1351 Show block device statistics.
1353 Each device statistic information is stored in a json-object and the returned
1354 value is a json-array of all devices.
1356 Each json-object contain the following:
1358 - "device": device name (json-string)
1359 - "stats": A json-object with the statistics information, it contains:
1360 - "rd_bytes": bytes read (json-int)
1361 - "wr_bytes": bytes written (json-int)
1362 - "rd_operations": read operations (json-int)
1363 - "wr_operations": write operations (json-int)
1364 - "flush_operations": cache flush operations (json-int)
1365 - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1366 - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1367 - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1368 - "wr_highest_offset": Highest offset of a sector written since the
1369 BlockDriverState has been opened (json-int)
1370 - "parent": Contains recursively the statistics of the underlying
1371 protocol (e.g. the host file for a qcow2 image). If there is
1372 no underlying protocol, this field is omitted
1373 (json-object, optional)
1375 Example:
1377 -> { "execute": "query-blockstats" }
1378 <- {
1379 "return":[
1381 "device":"ide0-hd0",
1382 "parent":{
1383 "stats":{
1384 "wr_highest_offset":3686448128,
1385 "wr_bytes":9786368,
1386 "wr_operations":751,
1387 "rd_bytes":122567168,
1388 "rd_operations":36772
1389 "wr_total_times_ns":313253456
1390 "rd_total_times_ns":3465673657
1391 "flush_total_times_ns":49653
1392 "flush_operations":61,
1395 "stats":{
1396 "wr_highest_offset":2821110784,
1397 "wr_bytes":9786368,
1398 "wr_operations":692,
1399 "rd_bytes":122739200,
1400 "rd_operations":36604
1401 "flush_operations":51,
1402 "wr_total_times_ns":313253456
1403 "rd_total_times_ns":3465673657
1404 "flush_total_times_ns":49653
1408 "device":"ide1-cd0",
1409 "stats":{
1410 "wr_highest_offset":0,
1411 "wr_bytes":0,
1412 "wr_operations":0,
1413 "rd_bytes":0,
1414 "rd_operations":0
1415 "flush_operations":0,
1416 "wr_total_times_ns":0
1417 "rd_total_times_ns":0
1418 "flush_total_times_ns":0
1422 "device":"floppy0",
1423 "stats":{
1424 "wr_highest_offset":0,
1425 "wr_bytes":0,
1426 "wr_operations":0,
1427 "rd_bytes":0,
1428 "rd_operations":0
1429 "flush_operations":0,
1430 "wr_total_times_ns":0
1431 "rd_total_times_ns":0
1432 "flush_total_times_ns":0
1436 "device":"sd0",
1437 "stats":{
1438 "wr_highest_offset":0,
1439 "wr_bytes":0,
1440 "wr_operations":0,
1441 "rd_bytes":0,
1442 "rd_operations":0
1443 "flush_operations":0,
1444 "wr_total_times_ns":0
1445 "rd_total_times_ns":0
1446 "flush_total_times_ns":0
1452 EQMP
1455 .name = "query-blockstats",
1456 .args_type = "",
1457 .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1460 SQMP
1461 query-cpus
1462 ----------
1464 Show CPU information.
1466 Return a json-array. Each CPU is represented by a json-object, which contains:
1468 - "CPU": CPU index (json-int)
1469 - "current": true if this is the current CPU, false otherwise (json-bool)
1470 - "halted": true if the cpu is halted, false otherwise (json-bool)
1471 - Current program counter. The key's name depends on the architecture:
1472 "pc": i386/x86_64 (json-int)
1473 "nip": PPC (json-int)
1474 "pc" and "npc": sparc (json-int)
1475 "PC": mips (json-int)
1476 - "thread_id": ID of the underlying host thread (json-int)
1478 Example:
1480 -> { "execute": "query-cpus" }
1481 <- {
1482 "return":[
1484 "CPU":0,
1485 "current":true,
1486 "halted":false,
1487 "pc":3227107138
1488 "thread_id":3134
1491 "CPU":1,
1492 "current":false,
1493 "halted":true,
1494 "pc":7108165
1495 "thread_id":3135
1500 EQMP
1503 .name = "query-cpus",
1504 .args_type = "",
1505 .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1508 SQMP
1509 query-pci
1510 ---------
1512 PCI buses and devices information.
1514 The returned value is a json-array of all buses. Each bus is represented by
1515 a json-object, which has a key with a json-array of all PCI devices attached
1516 to it. Each device is represented by a json-object.
1518 The bus json-object contains the following:
1520 - "bus": bus number (json-int)
1521 - "devices": a json-array of json-objects, each json-object represents a
1522 PCI device
1524 The PCI device json-object contains the following:
1526 - "bus": identical to the parent's bus number (json-int)
1527 - "slot": slot number (json-int)
1528 - "function": function number (json-int)
1529 - "class_info": a json-object containing:
1530 - "desc": device class description (json-string, optional)
1531 - "class": device class number (json-int)
1532 - "id": a json-object containing:
1533 - "device": device ID (json-int)
1534 - "vendor": vendor ID (json-int)
1535 - "irq": device's IRQ if assigned (json-int, optional)
1536 - "qdev_id": qdev id string (json-string)
1537 - "pci_bridge": It's a json-object, only present if this device is a
1538 PCI bridge, contains:
1539 - "bus": bus number (json-int)
1540 - "secondary": secondary bus number (json-int)
1541 - "subordinate": subordinate bus number (json-int)
1542 - "io_range": I/O memory range information, a json-object with the
1543 following members:
1544 - "base": base address, in bytes (json-int)
1545 - "limit": limit address, in bytes (json-int)
1546 - "memory_range": memory range information, a json-object with the
1547 following members:
1548 - "base": base address, in bytes (json-int)
1549 - "limit": limit address, in bytes (json-int)
1550 - "prefetchable_range": Prefetchable memory range information, a
1551 json-object with the following members:
1552 - "base": base address, in bytes (json-int)
1553 - "limit": limit address, in bytes (json-int)
1554 - "devices": a json-array of PCI devices if there's any attached, each
1555 each element is represented by a json-object, which contains
1556 the same members of the 'PCI device json-object' described
1557 above (optional)
1558 - "regions": a json-array of json-objects, each json-object represents a
1559 memory region of this device
1561 The memory range json-object contains the following:
1563 - "base": base memory address (json-int)
1564 - "limit": limit value (json-int)
1566 The region json-object can be an I/O region or a memory region, an I/O region
1567 json-object contains the following:
1569 - "type": "io" (json-string, fixed)
1570 - "bar": BAR number (json-int)
1571 - "address": memory address (json-int)
1572 - "size": memory size (json-int)
1574 A memory region json-object contains the following:
1576 - "type": "memory" (json-string, fixed)
1577 - "bar": BAR number (json-int)
1578 - "address": memory address (json-int)
1579 - "size": memory size (json-int)
1580 - "mem_type_64": true or false (json-bool)
1581 - "prefetch": true or false (json-bool)
1583 Example:
1585 -> { "execute": "query-pci" }
1586 <- {
1587 "return":[
1589 "bus":0,
1590 "devices":[
1592 "bus":0,
1593 "qdev_id":"",
1594 "slot":0,
1595 "class_info":{
1596 "class":1536,
1597 "desc":"Host bridge"
1599 "id":{
1600 "device":32902,
1601 "vendor":4663
1603 "function":0,
1604 "regions":[
1609 "bus":0,
1610 "qdev_id":"",
1611 "slot":1,
1612 "class_info":{
1613 "class":1537,
1614 "desc":"ISA bridge"
1616 "id":{
1617 "device":32902,
1618 "vendor":28672
1620 "function":0,
1621 "regions":[
1626 "bus":0,
1627 "qdev_id":"",
1628 "slot":1,
1629 "class_info":{
1630 "class":257,
1631 "desc":"IDE controller"
1633 "id":{
1634 "device":32902,
1635 "vendor":28688
1637 "function":1,
1638 "regions":[
1640 "bar":4,
1641 "size":16,
1642 "address":49152,
1643 "type":"io"
1648 "bus":0,
1649 "qdev_id":"",
1650 "slot":2,
1651 "class_info":{
1652 "class":768,
1653 "desc":"VGA controller"
1655 "id":{
1656 "device":4115,
1657 "vendor":184
1659 "function":0,
1660 "regions":[
1662 "prefetch":true,
1663 "mem_type_64":false,
1664 "bar":0,
1665 "size":33554432,
1666 "address":4026531840,
1667 "type":"memory"
1670 "prefetch":false,
1671 "mem_type_64":false,
1672 "bar":1,
1673 "size":4096,
1674 "address":4060086272,
1675 "type":"memory"
1678 "prefetch":false,
1679 "mem_type_64":false,
1680 "bar":6,
1681 "size":65536,
1682 "address":-1,
1683 "type":"memory"
1688 "bus":0,
1689 "qdev_id":"",
1690 "irq":11,
1691 "slot":4,
1692 "class_info":{
1693 "class":1280,
1694 "desc":"RAM controller"
1696 "id":{
1697 "device":6900,
1698 "vendor":4098
1700 "function":0,
1701 "regions":[
1703 "bar":0,
1704 "size":32,
1705 "address":49280,
1706 "type":"io"
1715 Note: This example has been shortened as the real response is too long.
1717 EQMP
1720 .name = "query-pci",
1721 .args_type = "",
1722 .mhandler.cmd_new = qmp_marshal_input_query_pci,
1725 SQMP
1726 query-kvm
1727 ---------
1729 Show KVM information.
1731 Return a json-object with the following information:
1733 - "enabled": true if KVM support is enabled, false otherwise (json-bool)
1734 - "present": true if QEMU has KVM support, false otherwise (json-bool)
1736 Example:
1738 -> { "execute": "query-kvm" }
1739 <- { "return": { "enabled": true, "present": true } }
1741 EQMP
1744 .name = "query-kvm",
1745 .args_type = "",
1746 .mhandler.cmd_new = qmp_marshal_input_query_kvm,
1749 SQMP
1750 query-status
1751 ------------
1753 Return a json-object with the following information:
1755 - "running": true if the VM is running, or false if it is paused (json-bool)
1756 - "singlestep": true if the VM is in single step mode,
1757 false otherwise (json-bool)
1758 - "status": one of the following values (json-string)
1759 "debug" - QEMU is running on a debugger
1760 "inmigrate" - guest is paused waiting for an incoming migration
1761 "internal-error" - An internal error that prevents further guest
1762 execution has occurred
1763 "io-error" - the last IOP has failed and the device is configured
1764 to pause on I/O errors
1765 "paused" - guest has been paused via the 'stop' command
1766 "postmigrate" - guest is paused following a successful 'migrate'
1767 "prelaunch" - QEMU was started with -S and guest has not started
1768 "finish-migrate" - guest is paused to finish the migration process
1769 "restore-vm" - guest is paused to restore VM state
1770 "running" - guest is actively running
1771 "save-vm" - guest is paused to save the VM state
1772 "shutdown" - guest is shut down (and -no-shutdown is in use)
1773 "watchdog" - the watchdog action is configured to pause and
1774 has been triggered
1776 Example:
1778 -> { "execute": "query-status" }
1779 <- { "return": { "running": true, "singlestep": false, "status": "running" } }
1781 EQMP
1784 .name = "query-status",
1785 .args_type = "",
1786 .mhandler.cmd_new = qmp_marshal_input_query_status,
1789 SQMP
1790 query-mice
1791 ----------
1793 Show VM mice information.
1795 Each mouse is represented by a json-object, the returned value is a json-array
1796 of all mice.
1798 The mouse json-object contains the following:
1800 - "name": mouse's name (json-string)
1801 - "index": mouse's index (json-int)
1802 - "current": true if this mouse is receiving events, false otherwise (json-bool)
1803 - "absolute": true if the mouse generates absolute input events (json-bool)
1805 Example:
1807 -> { "execute": "query-mice" }
1808 <- {
1809 "return":[
1811 "name":"QEMU Microsoft Mouse",
1812 "index":0,
1813 "current":false,
1814 "absolute":false
1817 "name":"QEMU PS/2 Mouse",
1818 "index":1,
1819 "current":true,
1820 "absolute":true
1825 EQMP
1828 .name = "query-mice",
1829 .args_type = "",
1830 .mhandler.cmd_new = qmp_marshal_input_query_mice,
1833 SQMP
1834 query-vnc
1835 ---------
1837 Show VNC server information.
1839 Return a json-object with server information. Connected clients are returned
1840 as a json-array of json-objects.
1842 The main json-object contains the following:
1844 - "enabled": true or false (json-bool)
1845 - "host": server's IP address (json-string)
1846 - "family": address family (json-string)
1847 - Possible values: "ipv4", "ipv6", "unix", "unknown"
1848 - "service": server's port number (json-string)
1849 - "auth": authentication method (json-string)
1850 - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
1851 "tls", "ultra", "unknown", "vencrypt", "vencrypt",
1852 "vencrypt+plain", "vencrypt+tls+none",
1853 "vencrypt+tls+plain", "vencrypt+tls+sasl",
1854 "vencrypt+tls+vnc", "vencrypt+x509+none",
1855 "vencrypt+x509+plain", "vencrypt+x509+sasl",
1856 "vencrypt+x509+vnc", "vnc"
1857 - "clients": a json-array of all connected clients
1859 Clients are described by a json-object, each one contain the following:
1861 - "host": client's IP address (json-string)
1862 - "family": address family (json-string)
1863 - Possible values: "ipv4", "ipv6", "unix", "unknown"
1864 - "service": client's port number (json-string)
1865 - "x509_dname": TLS dname (json-string, optional)
1866 - "sasl_username": SASL username (json-string, optional)
1868 Example:
1870 -> { "execute": "query-vnc" }
1871 <- {
1872 "return":{
1873 "enabled":true,
1874 "host":"0.0.0.0",
1875 "service":"50402",
1876 "auth":"vnc",
1877 "family":"ipv4",
1878 "clients":[
1880 "host":"127.0.0.1",
1881 "service":"50401",
1882 "family":"ipv4"
1888 EQMP
1891 .name = "query-vnc",
1892 .args_type = "",
1893 .mhandler.cmd_new = qmp_marshal_input_query_vnc,
1896 SQMP
1897 query-spice
1898 -----------
1900 Show SPICE server information.
1902 Return a json-object with server information. Connected clients are returned
1903 as a json-array of json-objects.
1905 The main json-object contains the following:
1907 - "enabled": true or false (json-bool)
1908 - "host": server's IP address (json-string)
1909 - "port": server's port number (json-int, optional)
1910 - "tls-port": server's port number (json-int, optional)
1911 - "auth": authentication method (json-string)
1912 - Possible values: "none", "spice"
1913 - "channels": a json-array of all active channels clients
1915 Channels are described by a json-object, each one contain the following:
1917 - "host": client's IP address (json-string)
1918 - "family": address family (json-string)
1919 - Possible values: "ipv4", "ipv6", "unix", "unknown"
1920 - "port": client's port number (json-string)
1921 - "connection-id": spice connection id. All channels with the same id
1922 belong to the same spice session (json-int)
1923 - "channel-type": channel type. "1" is the main control channel, filter for
1924 this one if you want track spice sessions only (json-int)
1925 - "channel-id": channel id. Usually "0", might be different needed when
1926 multiple channels of the same type exist, such as multiple
1927 display channels in a multihead setup (json-int)
1928 - "tls": whevener the channel is encrypted (json-bool)
1930 Example:
1932 -> { "execute": "query-spice" }
1933 <- {
1934 "return": {
1935 "enabled": true,
1936 "auth": "spice",
1937 "port": 5920,
1938 "tls-port": 5921,
1939 "host": "0.0.0.0",
1940 "channels": [
1942 "port": "54924",
1943 "family": "ipv4",
1944 "channel-type": 1,
1945 "connection-id": 1804289383,
1946 "host": "127.0.0.1",
1947 "channel-id": 0,
1948 "tls": true
1951 "port": "36710",
1952 "family": "ipv4",
1953 "channel-type": 4,
1954 "connection-id": 1804289383,
1955 "host": "127.0.0.1",
1956 "channel-id": 0,
1957 "tls": false
1959 [ ... more channels follow ... ]
1964 EQMP
1966 #if defined(CONFIG_SPICE)
1968 .name = "query-spice",
1969 .args_type = "",
1970 .mhandler.cmd_new = qmp_marshal_input_query_spice,
1972 #endif
1974 SQMP
1975 query-name
1976 ----------
1978 Show VM name.
1980 Return a json-object with the following information:
1982 - "name": VM's name (json-string, optional)
1984 Example:
1986 -> { "execute": "query-name" }
1987 <- { "return": { "name": "qemu-name" } }
1989 EQMP
1992 .name = "query-name",
1993 .args_type = "",
1994 .mhandler.cmd_new = qmp_marshal_input_query_name,
1997 SQMP
1998 query-uuid
1999 ----------
2001 Show VM UUID.
2003 Return a json-object with the following information:
2005 - "UUID": Universally Unique Identifier (json-string)
2007 Example:
2009 -> { "execute": "query-uuid" }
2010 <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2012 EQMP
2015 .name = "query-uuid",
2016 .args_type = "",
2017 .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2020 SQMP
2021 query-migrate
2022 -------------
2024 Migration status.
2026 Return a json-object. If migration is active there will be another json-object
2027 with RAM migration status and if block migration is active another one with
2028 block migration status.
2030 The main json-object contains the following:
2032 - "status": migration status (json-string)
2033 - Possible values: "active", "completed", "failed", "cancelled"
2034 - "ram": only present if "status" is "active", it is a json-object with the
2035 following RAM information (in bytes):
2036 - "transferred": amount transferred (json-int)
2037 - "remaining": amount remaining (json-int)
2038 - "total": total (json-int)
2039 - "disk": only present if "status" is "active" and it is a block migration,
2040 it is a json-object with the following disk information (in bytes):
2041 - "transferred": amount transferred (json-int)
2042 - "remaining": amount remaining (json-int)
2043 - "total": total (json-int)
2045 Examples:
2047 1. Before the first migration
2049 -> { "execute": "query-migrate" }
2050 <- { "return": {} }
2052 2. Migration is done and has succeeded
2054 -> { "execute": "query-migrate" }
2055 <- { "return": { "status": "completed" } }
2057 3. Migration is done and has failed
2059 -> { "execute": "query-migrate" }
2060 <- { "return": { "status": "failed" } }
2062 4. Migration is being performed and is not a block migration:
2064 -> { "execute": "query-migrate" }
2065 <- {
2066 "return":{
2067 "status":"active",
2068 "ram":{
2069 "transferred":123,
2070 "remaining":123,
2071 "total":246
2076 5. Migration is being performed and is a block migration:
2078 -> { "execute": "query-migrate" }
2079 <- {
2080 "return":{
2081 "status":"active",
2082 "ram":{
2083 "total":1057024,
2084 "remaining":1053304,
2085 "transferred":3720
2087 "disk":{
2088 "total":20971520,
2089 "remaining":20880384,
2090 "transferred":91136
2095 EQMP
2098 .name = "query-migrate",
2099 .args_type = "",
2100 .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2103 SQMP
2104 query-balloon
2105 -------------
2107 Show balloon information.
2109 Make an asynchronous request for balloon info. When the request completes a
2110 json-object will be returned containing the following data:
2112 - "actual": current balloon value in bytes (json-int)
2113 - "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
2114 - "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
2115 - "major_page_faults": Number of major faults (json-int, optional)
2116 - "minor_page_faults": Number of minor faults (json-int, optional)
2117 - "free_mem": Total amount of free and unused memory in
2118 bytes (json-int, optional)
2119 - "total_mem": Total amount of available memory in bytes (json-int, optional)
2121 Example:
2123 -> { "execute": "query-balloon" }
2124 <- {
2125 "return":{
2126 "actual":1073741824,
2127 "mem_swapped_in":0,
2128 "mem_swapped_out":0,
2129 "major_page_faults":142,
2130 "minor_page_faults":239245,
2131 "free_mem":1014185984,
2132 "total_mem":1044668416
2136 EQMP
2139 .name = "query-balloon",
2140 .args_type = "",
2141 .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2145 .name = "query-block-jobs",
2146 .args_type = "",
2147 .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2151 .name = "qom-list",
2152 .args_type = "path:s",
2153 .mhandler.cmd_new = qmp_marshal_input_qom_list,
2157 .name = "qom-set",
2158 .args_type = "path:s,property:s,value:q",
2159 .mhandler.cmd_new = qmp_qom_set,
2163 .name = "qom-get",
2164 .args_type = "path:s,property:s",
2165 .mhandler.cmd_new = qmp_qom_get,
2169 .name = "change-vnc-password",
2170 .args_type = "password:s",
2171 .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2174 .name = "qom-list-types",
2175 .args_type = "implements:s?,abstract:b?",
2176 .mhandler.cmd_new = qmp_marshal_input_qom_list_types,