| QEMU Machine Protocol Events |
| ============================ |
| |
| ACPI_DEVICE_OST |
| --------------- |
| |
| Emitted when guest executes ACPI _OST method. |
| |
| - data: ACPIOSTInfo type as described in qapi-schema.json |
| |
| { "event": "ACPI_DEVICE_OST", |
| "data": { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0 } } |
| |
| BALLOON_CHANGE |
| -------------- |
| |
| Emitted when the guest changes the actual BALLOON level. This |
| value is equivalent to the 'actual' field return by the |
| 'query-balloon' command |
| |
| Data: |
| |
| - "actual": actual level of the guest memory balloon in bytes (json-number) |
| |
| Example: |
| |
| { "event": "BALLOON_CHANGE", |
| "data": { "actual": 944766976 }, |
| "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } |
| |
| BLOCK_IMAGE_CORRUPTED |
| --------------------- |
| |
| Emitted when a disk image is being marked corrupt. The image can be |
| identified by its device or node name. The 'device' field is always |
| present for compatibility reasons, but it can be empty ("") if the |
| image does not have a device name associated. |
| |
| Data: |
| |
| - "device": Device name (json-string) |
| - "node-name": Node name (json-string, optional) |
| - "msg": Informative message (e.g., reason for the corruption) |
| (json-string) |
| - "offset": If the corruption resulted from an image access, this |
| is the host's access offset into the image |
| (json-int, optional) |
| - "size": If the corruption resulted from an image access, this |
| is the access size (json-int, optional) |
| |
| Example: |
| |
| { "event": "BLOCK_IMAGE_CORRUPTED", |
| "data": { "device": "ide0-hd0", "node-name": "node0", |
| "msg": "Prevented active L1 table overwrite", "offset": 196608, |
| "size": 65536 }, |
| "timestamp": { "seconds": 1378126126, "microseconds": 966463 } } |
| |
| BLOCK_IO_ERROR |
| -------------- |
| |
| Emitted when a disk I/O error occurs. |
| |
| Data: |
| |
| - "device": device name (json-string) |
| - "operation": I/O operation (json-string, "read" or "write") |
| - "action": action that has been taken, it's one of the following (json-string): |
| "ignore": error has been ignored |
| "report": error has been reported to the device |
| "stop": the VM is going to stop because of the error |
| |
| Example: |
| |
| { "event": "BLOCK_IO_ERROR", |
| "data": { "device": "ide0-hd1", |
| "operation": "write", |
| "action": "stop" }, |
| "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } |
| |
| Note: If action is "stop", a STOP event will eventually follow the |
| BLOCK_IO_ERROR event. |
| |
| BLOCK_JOB_CANCELLED |
| ------------------- |
| |
| Emitted when a block job has been cancelled. |
| |
| Data: |
| |
| - "type": Job type (json-string; "stream" for image streaming |
| "commit" for block commit) |
| - "device": Device name (json-string) |
| - "len": Maximum progress value (json-int) |
| - "offset": Current progress value (json-int) |
| On success this is equal to len. |
| On failure this is less than len. |
| - "speed": Rate limit, bytes per second (json-int) |
| |
| Example: |
| |
| { "event": "BLOCK_JOB_CANCELLED", |
| "data": { "type": "stream", "device": "virtio-disk0", |
| "len": 10737418240, "offset": 134217728, |
| "speed": 0 }, |
| "timestamp": { "seconds": 1267061043, "microseconds": 959568 } } |
| |
| BLOCK_JOB_COMPLETED |
| ------------------- |
| |
| Emitted when a block job has completed. |
| |
| Data: |
| |
| - "type": Job type (json-string; "stream" for image streaming |
| "commit" for block commit) |
| - "device": Device name (json-string) |
| - "len": Maximum progress value (json-int) |
| - "offset": Current progress value (json-int) |
| On success this is equal to len. |
| On failure this is less than len. |
| - "speed": Rate limit, bytes per second (json-int) |
| - "error": Error message (json-string, optional) |
| Only present on failure. This field contains a human-readable |
| error message. There are no semantics other than that streaming |
| has failed and clients should not try to interpret the error |
| string. |
| |
| Example: |
| |
| { "event": "BLOCK_JOB_COMPLETED", |
| "data": { "type": "stream", "device": "virtio-disk0", |
| "len": 10737418240, "offset": 10737418240, |
| "speed": 0 }, |
| "timestamp": { "seconds": 1267061043, "microseconds": 959568 } } |
| |
| BLOCK_JOB_ERROR |
| --------------- |
| |
| Emitted when a block job encounters an error. |
| |
| Data: |
| |
| - "device": device name (json-string) |
| - "operation": I/O operation (json-string, "read" or "write") |
| - "action": action that has been taken, it's one of the following (json-string): |
| "ignore": error has been ignored, the job may fail later |
| "report": error will be reported and the job canceled |
| "stop": error caused job to be paused |
| |
| Example: |
| |
| { "event": "BLOCK_JOB_ERROR", |
| "data": { "device": "ide0-hd1", |
| "operation": "write", |
| "action": "stop" }, |
| "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } |
| |
| BLOCK_JOB_READY |
| --------------- |
| |
| Emitted when a block job is ready to complete. |
| |
| Data: |
| |
| - "type": Job type (json-string; "stream" for image streaming |
| "commit" for block commit) |
| - "device": Device name (json-string) |
| - "len": Maximum progress value (json-int) |
| - "offset": Current progress value (json-int) |
| On success this is equal to len. |
| On failure this is less than len. |
| - "speed": Rate limit, bytes per second (json-int) |
| |
| Example: |
| |
| { "event": "BLOCK_JOB_READY", |
| "data": { "device": "drive0", "type": "mirror", "speed": 0, |
| "len": 2097152, "offset": 2097152 } |
| "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } |
| |
| Note: The "ready to complete" status is always reset by a BLOCK_JOB_ERROR |
| event. |
| |
| DEVICE_DELETED |
| -------------- |
| |
| Emitted whenever the device removal completion is acknowledged |
| by the guest. |
| At this point, it's safe to reuse the specified device ID. |
| Device removal can be initiated by the guest or by HMP/QMP commands. |
| |
| Data: |
| |
| - "device": device name (json-string, optional) |
| - "path": device path (json-string) |
| |
| { "event": "DEVICE_DELETED", |
| "data": { "device": "virtio-net-pci-0", |
| "path": "/machine/peripheral/virtio-net-pci-0" }, |
| "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } |
| |
| DEVICE_TRAY_MOVED |
| ----------------- |
| |
| It's emitted whenever the tray of a removable device is moved by the guest |
| or by HMP/QMP commands. |
| |
| Data: |
| |
| - "device": device name (json-string) |
| - "tray-open": true if the tray has been opened or false if it has been closed |
| (json-bool) |
| |
| { "event": "DEVICE_TRAY_MOVED", |
| "data": { "device": "ide1-cd0", |
| "tray-open": true |
| }, |
| "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } |
| |
| GUEST_PANICKED |
| -------------- |
| |
| Emitted when guest OS panic is detected. |
| |
| Data: |
| |
| - "action": Action that has been taken (json-string, currently always "pause"). |
| |
| Example: |
| |
| { "event": "GUEST_PANICKED", |
| "data": { "action": "pause" } } |
| |
| MEM_UNPLUG_ERROR |
| -------------------- |
| Emitted when memory hot unplug error occurs. |
| |
| Data: |
| |
| - "device": device name (json-string) |
| - "msg": Informative message (e.g., reason for the error) (json-string) |
| |
| Example: |
| |
| { "event": "MEM_UNPLUG_ERROR" |
| "data": { "device": "dimm1", |
| "msg": "acpi: device unplug for unsupported device" |
| }, |
| "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } |
| |
| NIC_RX_FILTER_CHANGED |
| --------------------- |
| |
| The event is emitted once until the query command is executed, |
| the first event will always be emitted. |
| |
| Data: |
| |
| - "name": net client name (json-string) |
| - "path": device path (json-string) |
| |
| { "event": "NIC_RX_FILTER_CHANGED", |
| "data": { "name": "vnet0", |
| "path": "/machine/peripheral/vnet0/virtio-backend" }, |
| "timestamp": { "seconds": 1368697518, "microseconds": 326866 } } |
| } |
| |
| POWERDOWN |
| --------- |
| |
| Emitted when the Virtual Machine is powered down through the power |
| control system, such as via ACPI. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "POWERDOWN", |
| "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } |
| |
| QUORUM_FAILURE |
| -------------- |
| |
| Emitted by the Quorum block driver if it fails to establish a quorum. |
| |
| Data: |
| |
| - "reference": device name if defined else node name. |
| - "sector-num": Number of the first sector of the failed read operation. |
| - "sectors-count": Failed read operation sector count. |
| |
| Example: |
| |
| { "event": "QUORUM_FAILURE", |
| "data": { "reference": "usr1", "sector-num": 345435, "sectors-count": 5 }, |
| "timestamp": { "seconds": 1344522075, "microseconds": 745528 } } |
| |
| QUORUM_REPORT_BAD |
| ----------------- |
| |
| Emitted to report a corruption of a Quorum file. |
| |
| Data: |
| |
| - "error": Error message (json-string, optional) |
| Only present on failure. This field contains a human-readable |
| error message. There are no semantics other than that the |
| block layer reported an error and clients should not try to |
| interpret the error string. |
| - "node-name": The graph node name of the block driver state. |
| - "sector-num": Number of the first sector of the failed read operation. |
| - "sectors-count": Failed read operation sector count. |
| |
| Example: |
| |
| { "event": "QUORUM_REPORT_BAD", |
| "data": { "node-name": "1.raw", "sector-num": 345435, "sectors-count": 5 }, |
| "timestamp": { "seconds": 1344522075, "microseconds": 745528 } } |
| |
| RESET |
| ----- |
| |
| Emitted when the Virtual Machine is reset. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "RESET", |
| "timestamp": { "seconds": 1267041653, "microseconds": 9518 } } |
| |
| RESUME |
| ------ |
| |
| Emitted when the Virtual Machine resumes execution. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "RESUME", |
| "timestamp": { "seconds": 1271770767, "microseconds": 582542 } } |
| |
| RTC_CHANGE |
| ---------- |
| |
| Emitted when the guest changes the RTC time. |
| |
| Data: |
| |
| - "offset": Offset between base RTC clock (as specified by -rtc base), and |
| new RTC clock value (json-number) |
| |
| Example: |
| |
| { "event": "RTC_CHANGE", |
| "data": { "offset": 78 }, |
| "timestamp": { "seconds": 1267020223, "microseconds": 435656 } } |
| |
| SHUTDOWN |
| -------- |
| |
| Emitted when the Virtual Machine has shut down, indicating that qemu |
| is about to exit. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "SHUTDOWN", |
| "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } |
| |
| Note: If the command-line option "-no-shutdown" has been specified, a STOP |
| event will eventually follow the SHUTDOWN event. |
| |
| SPICE_CONNECTED |
| --------------- |
| |
| Emitted when a SPICE client connects. |
| |
| Data: |
| |
| - "server": Server information (json-object) |
| - "host": IP address (json-string) |
| - "port": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "client": Client information (json-object) |
| - "host": IP address (json-string) |
| - "port": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| |
| Example: |
| |
| { "timestamp": {"seconds": 1290688046, "microseconds": 388707}, |
| "event": "SPICE_CONNECTED", |
| "data": { |
| "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"}, |
| "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"} |
| }} |
| |
| SPICE_DISCONNECTED |
| ------------------ |
| |
| Emitted when a SPICE client disconnects. |
| |
| Data: |
| |
| - "server": Server information (json-object) |
| - "host": IP address (json-string) |
| - "port": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "client": Client information (json-object) |
| - "host": IP address (json-string) |
| - "port": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| |
| Example: |
| |
| { "timestamp": {"seconds": 1290688046, "microseconds": 388707}, |
| "event": "SPICE_DISCONNECTED", |
| "data": { |
| "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"}, |
| "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"} |
| }} |
| |
| SPICE_INITIALIZED |
| ----------------- |
| |
| Emitted after initial handshake and authentication takes place (if any) |
| and the SPICE channel is up and running |
| |
| Data: |
| |
| - "server": Server information (json-object) |
| - "host": IP address (json-string) |
| - "port": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "auth": authentication method (json-string, optional) |
| - "client": Client information (json-object) |
| - "host": IP address (json-string) |
| - "port": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "connection-id": spice connection id. All channels with the same id |
| belong to the same spice session (json-int) |
| - "channel-type": channel type. "1" is the main control channel, filter for |
| this one if you want track spice sessions only (json-int) |
| - "channel-id": channel id. Usually "0", might be different needed when |
| multiple channels of the same type exist, such as multiple |
| display channels in a multihead setup (json-int) |
| - "tls": whevener the channel is encrypted (json-bool) |
| |
| Example: |
| |
| { "timestamp": {"seconds": 1290688046, "microseconds": 417172}, |
| "event": "SPICE_INITIALIZED", |
| "data": {"server": {"auth": "spice", "port": "5921", |
| "family": "ipv4", "host": "127.0.0.1"}, |
| "client": {"port": "49004", "family": "ipv4", "channel-type": 3, |
| "connection-id": 1804289383, "host": "127.0.0.1", |
| "channel-id": 0, "tls": true} |
| }} |
| |
| SPICE_MIGRATE_COMPLETED |
| ----------------------- |
| |
| Emitted when SPICE migration has completed |
| |
| Data: None. |
| |
| Example: |
| |
| { "timestamp": {"seconds": 1290688046, "microseconds": 417172}, |
| "event": "SPICE_MIGRATE_COMPLETED" } |
| |
| |
| STOP |
| ---- |
| |
| Emitted when the Virtual Machine is stopped. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "STOP", |
| "timestamp": { "seconds": 1267041730, "microseconds": 281295 } } |
| |
| SUSPEND |
| ------- |
| |
| Emitted when guest enters S3 state. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "SUSPEND", |
| "timestamp": { "seconds": 1344456160, "microseconds": 309119 } } |
| |
| SUSPEND_DISK |
| ------------ |
| |
| Emitted when the guest makes a request to enter S4 state. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "SUSPEND_DISK", |
| "timestamp": { "seconds": 1344456160, "microseconds": 309119 } } |
| |
| Note: QEMU shuts down when entering S4 state. |
| |
| VNC_CONNECTED |
| ------------- |
| |
| Emitted when a VNC client establishes a connection. |
| |
| Data: |
| |
| - "server": Server information (json-object) |
| - "host": IP address (json-string) |
| - "service": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "auth": authentication method (json-string, optional) |
| - "client": Client information (json-object) |
| - "host": IP address (json-string) |
| - "service": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| |
| Example: |
| |
| { "event": "VNC_CONNECTED", |
| "data": { |
| "server": { "auth": "sasl", "family": "ipv4", |
| "service": "5901", "host": "0.0.0.0" }, |
| "client": { "family": "ipv4", "service": "58425", |
| "host": "127.0.0.1" } }, |
| "timestamp": { "seconds": 1262976601, "microseconds": 975795 } } |
| |
| |
| Note: This event is emitted before any authentication takes place, thus |
| the authentication ID is not provided. |
| |
| VNC_DISCONNECTED |
| ---------------- |
| |
| Emitted when the connection is closed. |
| |
| Data: |
| |
| - "server": Server information (json-object) |
| - "host": IP address (json-string) |
| - "service": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "auth": authentication method (json-string, optional) |
| - "client": Client information (json-object) |
| - "host": IP address (json-string) |
| - "service": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "x509_dname": TLS dname (json-string, optional) |
| - "sasl_username": SASL username (json-string, optional) |
| |
| Example: |
| |
| { "event": "VNC_DISCONNECTED", |
| "data": { |
| "server": { "auth": "sasl", "family": "ipv4", |
| "service": "5901", "host": "0.0.0.0" }, |
| "client": { "family": "ipv4", "service": "58425", |
| "host": "127.0.0.1", "sasl_username": "luiz" } }, |
| "timestamp": { "seconds": 1262976601, "microseconds": 975795 } } |
| |
| VNC_INITIALIZED |
| --------------- |
| |
| Emitted after authentication takes place (if any) and the VNC session is |
| made active. |
| |
| Data: |
| |
| - "server": Server information (json-object) |
| - "host": IP address (json-string) |
| - "service": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "auth": authentication method (json-string, optional) |
| - "client": Client information (json-object) |
| - "host": IP address (json-string) |
| - "service": port number (json-string) |
| - "family": address family (json-string, "ipv4" or "ipv6") |
| - "x509_dname": TLS dname (json-string, optional) |
| - "sasl_username": SASL username (json-string, optional) |
| |
| Example: |
| |
| { "event": "VNC_INITIALIZED", |
| "data": { |
| "server": { "auth": "sasl", "family": "ipv4", |
| "service": "5901", "host": "0.0.0.0"}, |
| "client": { "family": "ipv4", "service": "46089", |
| "host": "127.0.0.1", "sasl_username": "luiz" } }, |
| "timestamp": { "seconds": 1263475302, "microseconds": 150772 } } |
| |
| VSERPORT_CHANGE |
| --------------- |
| |
| Emitted when the guest opens or closes a virtio-serial port. |
| |
| Data: |
| |
| - "id": device identifier of the virtio-serial port (json-string) |
| - "open": true if the guest has opened the virtio-serial port (json-bool) |
| |
| Example: |
| |
| { "event": "VSERPORT_CHANGE", |
| "data": { "id": "channel0", "open": true }, |
| "timestamp": { "seconds": 1401385907, "microseconds": 422329 } } |
| |
| WAKEUP |
| ------ |
| |
| Emitted when the guest has woken up from S3 and is running. |
| |
| Data: None. |
| |
| Example: |
| |
| { "event": "WAKEUP", |
| "timestamp": { "seconds": 1344522075, "microseconds": 745528 } } |
| |
| WATCHDOG |
| -------- |
| |
| Emitted when the watchdog device's timer is expired. |
| |
| Data: |
| |
| - "action": Action that has been taken, it's one of the following (json-string): |
| "reset", "shutdown", "poweroff", "pause", "debug", or "none" |
| |
| Example: |
| |
| { "event": "WATCHDOG", |
| "data": { "action": "reset" }, |
| "timestamp": { "seconds": 1267061043, "microseconds": 959568 } } |
| |
| Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is |
| followed respectively by the RESET, SHUTDOWN, or STOP events. |