MonitorProtocol: Difference between revisions

From KVM
No edit summary
No edit summary
Line 79: Line 79:
* merged: already merged upstream
* merged: already merged upstream
* converted: converted but not merged yet
* converted: converted but not merged yet
* never fails: does not need error handling
* partial: error handling not converted yet


'''NOTE:''' Handlers used by [http://libvirt.org Libvirt] are marked with yellow.
'''NOTE:''' Handlers used by [http://libvirt.org Libvirt] are marked with yellow.
Line 87: Line 87:
{| border="1"
{| border="1"
|'''Handler name'''
|'''Handler name'''
|'''Output in QObject'''
|'''Status'''
|'''Error handling'''
|'''Version'''
|'''Comments'''
|'''Comments'''
|-
|-
Line 118: Line 118:
|do_balloon()
|do_balloon()
|merged
|merged
|never fails
|0.13
|
|
|-
|-
Line 127: Line 127:
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_change()
|do_change()
|
|merged
|
|0.13
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_closefd()
|do_closefd()
|merged
|merged
|
|0.13
|
|
|-
|-
Line 143: Line 143:
|do_cont()
|do_cont()
|merged
|merged
|never fails
|0.13
|TODO: encrypted images
|
|-
|-
|do_cpu_set()
|do_cpu_set()
Line 168: Line 168:
|do_eject()
|do_eject()
|merged
|merged
|
|0.13
|
|
|-
|-
Line 178: Line 178:
|do_getfd()
|do_getfd()
|merged
|merged
|
|0.13
|
|
|-
|-
Line 188: Line 188:
|do_info()
|do_info()
|merged
|merged
|
|0.13
|
|as 'query-' commands
|-
|-
|do_inject_mce()
|do_inject_mce()
Line 232: Line 232:
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_memory_save()
|do_memory_save()
|merged
|partial
|
|0.13
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_migrate()
|do_migrate()
|merged
|partial
|
|0.13
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_migrate_cancel()
|do_migrate_cancel()
|merged
|merged
|never fails
|0.13
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
Line 253: Line 253:
|do_migrate_set_speed()
|do_migrate_set_speed()
|merged
|merged
|never fails
|0.13
|
|
|-
|-
Line 272: Line 272:
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_pci_device_hot_remove()
|do_pci_device_hot_remove()
|merged
|partial
|
|0.13
|
|
|-
|-
Line 282: Line 282:
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|do_physical_memory_save()
|do_physical_memory_save()
|merged
|partial
|
|0.13
|
|
|-
|-
Line 293: Line 293:
|do_quit()
|do_quit()
|merged
|merged
|
|0.13
|
|
|-
|-
Line 323: Line 323:
|do_stop()
|do_stop()
|merged
|merged
|never fails
|0.13
|
|
|-
|-
Line 338: Line 338:
|do_system_powerdown()
|do_system_powerdown()
|merged
|merged
|nerver fails
|0.13
|
|
|-
|-
|do_system_reset()
|do_system_reset()
|merged
|merged
|never fails
|0.13
|
|
|- style="background-color:yellow;"
|- style="background-color:yellow;"
Line 392: Line 392:
|- style="background-color:yellow;"
|- style="background-color:yellow;"
|pci_device_hot_add()
|pci_device_hot_add()
|converted
|partial
|
|0.13
|
|
|-
|-

Revision as of 12:08, 16 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

Its full specification can be found here and the README file explains how to use it.

General Status

QMP is available in QEMU since version 0.13.

However, it is still under development and not all Monitor commands are currently available.

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
  • Libqmp

Conversion status (2009-12-07)

Command Info
Handlers 61 36
Fully Converted 7 15
Percentage 11% 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: error handling not converted yet

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.13
do_boot_set()
do_change() merged 0.13
do_closefd() merged 0.13
do_commit()
do_cont() merged 0.13
do_cpu_set()
do_delvm()
do_device_add()
do_device_del()
do_eject() merged 0.13
do_gdbserver()
do_getfd() merged 0.13
do_help_cmd()
do_info() merged 0.13 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.13
do_migrate() partial 0.13
do_migrate_cancel() merged 0.13
do_migrate_set_downtime()
do_migrate_set_speed() merged 0.13
do_mouse_button()
do_mouse_move()
do_mouse_set()
do_pci_device_hot_remove() partial 0.13
do_physical_memory_dump()
do_physical_memory_save() partial 0.13
do_print()
do_quit() merged 0.13
do_savevm()
do_screen_dump()
do_sendkey()
do_set_link()
do_singlestep()
do_stop() merged 0.13
do_stop_capture()
do_sum()
do_system_powerdown() merged 0.13
do_system_reset() merged 0.13
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.13

Info handlers

Handler name Status Version Comments
bdrv_info() merged 0.13
bdrv_info_stats() merged 0.13
do_info_balloon() merged 0.13
do_info_capture()
do_info_cpus() merged 0.13
do_info_cpu_stats()
do_info_history()
do_info_hpet() merged 0.13
do_info_jit()
do_info_kvm() merged 0.13
do_info_mice() merged 0.13
do_info_migrate() merged 0.13
do_info_name() merged 0.13
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.13
do_info_usernet()
do_info_uuid() merged 0.13
do_info_version() merged 0.13
do_info_vnc() merged 0.13
irq_info()
mem_info()
pci_info()
pcmcia_info()
pic_info()
qemu_chr_info() merged 0.13
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: