MonitorProtocol: Difference between revisions

From KVM
No edit summary
No edit summary
Line 122: Line 122:
|do_balloon()
|do_balloon()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 132: Line 132:
|do_change()
|do_change()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_closefd()
|do_closefd()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 147: Line 147:
|do_cont()
|do_cont()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
Line 172: Line 172:
|do_eject()
|do_eject()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 182: Line 182:
|do_getfd()
|do_getfd()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 192: Line 192:
|do_info()
|do_info()
|merged
|merged
|0.13
|0.12
|as 'query-' commands
|as 'query-' commands
|-
|-
Line 237: Line 237:
|do_memory_save()
|do_memory_save()
|partial
|partial
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_migrate()
|do_migrate()
|partial
|partial
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_migrate_cancel()
|do_migrate_cancel()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
Line 257: Line 257:
|do_migrate_set_speed()
|do_migrate_set_speed()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 277: Line 277:
|do_pci_device_hot_remove()
|do_pci_device_hot_remove()
|partial
|partial
|0.13
|0.12
|
|
|-
|-
Line 287: Line 287:
|do_physical_memory_save()
|do_physical_memory_save()
|partial
|partial
|0.13
|0.12
|
|
|-
|-
Line 297: Line 297:
|do_quit()
|do_quit()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 327: Line 327:
|do_stop()
|do_stop()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 342: Line 342:
|do_system_powerdown()
|do_system_powerdown()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
|do_system_reset()
|do_system_reset()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
Line 397: Line 397:
|pci_device_hot_add()
|pci_device_hot_add()
|partial
|partial
|0.13
|0.12
|
|
|-
|-
Line 412: Line 412:
|bdrv_info()
|bdrv_info()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|bdrv_info_stats()
|bdrv_info_stats()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_info_balloon()
|do_info_balloon()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 432: Line 432:
|do_info_cpus()
|do_info_cpus()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 447: Line 447:
|do_info_hpet()
|do_info_hpet()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 457: Line 457:
|do_info_kvm()
|do_info_kvm()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
|do_info_mice()
|do_info_mice()
|merged
|merged
|0.13
|0.12
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_info_migrate()
|do_info_migrate()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
|do_info_name()
|do_info_name()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 517: Line 517:
|do_info_status()
|do_info_status()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 527: Line 527:
|do_info_uuid()
|do_info_uuid()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
|do_info_version()
|do_info_version()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
|do_info_vnc()
|do_info_vnc()
|merged
|merged
|0.13
|0.12
|
|
|-
|-
Line 567: Line 567:
|qemu_chr_info()
|qemu_chr_info()
|merged
|merged
|0.13
|0.12
|
|
|-
|-

Revision as of 15:31, 18 December 2009

QEMU Monitor Protocol

The QEMU Monitor Protocol (QMP) allows applications to communicate with QEMU's Monitor.

QMP is JSON-based, its main features are:

  • Lightweight
  • Text-based, easy to parse data format
  • Asynchronous events support

The README file explains how to use it and its full specification can be found here.

General Status

A preview version of QMP is available in QEMU version 0.12.

However, QMP is under heavy development being still considered unstable and incomplete. For more information about converted handlers, please check #Conversion Status.

Examples

In the following examples, 'C' stands for 'Client' and 'S' stands for 'Server'.

Server Greeting

S: {"QMP": {"capabilities": []}}

Query version

C: { "execute": "query-version" }
S: {"return": {"qemu": "0.11.50", "package": ""}}

Eject a device

C: { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
S: {"return": "OK"}

Development

Primary contact is Luiz Capitulino, but most QMP-related discussions happen on the qemu-devel mailing list.

Next features, hot fixes and other patches are stored in the QMP unstable repository:

http://repo.or.cz/w/qemu/qmp-unstable.git

NOTE: all branches in this repository are constantly rebased.

TODO

  • High-level documentation
  • Convert all commands
  • Proper error handling support
  • Asynchronous commands support
  • Better QObjects and QMP debug support
  • Libqmp

Conversion Status

UPDATED: 2009-12-16

Command Info
Handlers 62 36
Converted 19 15
Percentage 30% 41%

The following tables have a per-function status. There is one table for command handlers and another one for info handlers.

Status can be:

  • merged: already merged upstream
  • converted: converted but not merged yet
  • partial: merged, but error handling is incomplete

NOTE: Handlers used by Libvirt are marked with yellow.

Command handlers

Handler name Status Version Comments
do_acl_add()
do_acl_policy()
do_acl_remove()
do_acl_reset()
do_acl_show()
do_balloon() merged 0.12
do_boot_set()
do_change() merged 0.12
do_closefd() merged 0.12
do_commit()
do_cont() merged 0.12
do_cpu_set()
do_delvm()
do_device_add()
do_device_del()
do_eject() merged 0.12
do_gdbserver()
do_getfd() merged 0.12
do_help_cmd()
do_info() merged 0.12 as 'query-' commands
do_inject_mce()
do_inject_nmi()
do_ioport_read()
do_ioport_write()
do_loadvm()
do_log()
do_logfile()
do_memory_dump()
do_memory_save() partial 0.12
do_migrate() partial 0.12
do_migrate_cancel() merged 0.12
do_migrate_set_downtime()
do_migrate_set_speed() merged 0.12
do_mouse_button()
do_mouse_move()
do_mouse_set()
do_pci_device_hot_remove() partial 0.12
do_physical_memory_dump()
do_physical_memory_save() partial 0.12
do_print()
do_quit() merged 0.12
do_savevm()
do_screen_dump()
do_sendkey()
do_set_link()
do_singlestep()
do_stop() merged 0.12
do_stop_capture()
do_sum()
do_system_powerdown() merged 0.12
do_system_reset() merged 0.12
do_usb_add()
do_usb_del()
do_watchdog_action()
do_wav_capture()
drive_hot_add()
net_host_device_add()
net_host_device_remove()
net_slirp_hostfwd_add()
net_slirp_hostfwd_remove()
pci_device_hot_add() partial 0.12

Info handlers

Handler name Status Version Comments
bdrv_info() merged 0.12
bdrv_info_stats() merged 0.12
do_info_balloon() merged 0.12
do_info_capture()
do_info_cpus() merged 0.12
do_info_cpu_stats()
do_info_history()
do_info_hpet() merged 0.12
do_info_jit()
do_info_kvm() merged 0.12
do_info_mice() merged 0.12
do_info_migrate() merged 0.12
do_info_name() merged 0.12
do_info_network()
do_info_numa()
do_info_profile()
do_info_qdm()
do_info_qtree()
do_info_registers()
do_info_roms()
do_info_snapshots()
do_info_status() merged 0.12
do_info_usernet()
do_info_uuid() merged 0.12
do_info_version() merged 0.12
do_info_vnc() merged 0.12
irq_info()
mem_info()
pci_info()
pcmcia_info()
pic_info()
qemu_chr_info() merged 0.12
tlb_info()
usb_host_info()
usb_info()

History

This was the fourth proposal for a Monitor protocol, past discussions can be found in the following links: