10 # Emitted when the virtual machine has shut down, indicating that qemu is
13 # Note: If the command-line option "-no-shutdown" has been specified, qemu will
14 # not exit, and a STOP event will eventually follow the SHUTDOWN event
20 # <- { "event": "SHUTDOWN",
21 # "timestamp": { "seconds": 1267040730, "microseconds": 682951 } }
24 { 'event': 'SHUTDOWN' }
29 # Emitted when the virtual machine is powered down through the power control
30 # system, such as via ACPI.
36 # <- { "event": "POWERDOWN",
37 # "timestamp": { "seconds": 1267040730, "microseconds": 682951 } }
40 { 'event': 'POWERDOWN' }
45 # Emitted when the virtual machine is reset
51 # <- { "event": "RESET",
52 # "timestamp": { "seconds": 1267041653, "microseconds": 9518 } }
60 # Emitted when the virtual machine is stopped
66 # <- { "event": "STOP",
67 # "timestamp": { "seconds": 1267041730, "microseconds": 281295 } }
75 # Emitted when the virtual machine resumes execution
81 # <- { "event": "RESUME",
82 # "timestamp": { "seconds": 1271770767, "microseconds": 582542 } }
90 # Emitted when guest enters a hardware suspension state, for example, S3 state,
91 # which is sometimes called standby state
97 # <- { "event": "SUSPEND",
98 # "timestamp": { "seconds": 1344456160, "microseconds": 309119 } }
101 { 'event': 'SUSPEND' }
106 # Emitted when guest enters a hardware suspension state with data saved on
107 # disk, for example, S4 state, which is sometimes called hibernate state
109 # Note: QEMU shuts down (similar to event @SHUTDOWN) when entering this state
115 # <- { "event": "SUSPEND_DISK",
116 # "timestamp": { "seconds": 1344456160, "microseconds": 309119 } }
119 { 'event': 'SUSPEND_DISK' }
124 # Emitted when the guest has woken up from suspend state and is running
130 # <- { "event": "WAKEUP",
131 # "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
134 { 'event': 'WAKEUP' }
139 # Emitted when the guest changes the RTC time.
141 # @offset: offset between base RTC clock (as specified by -rtc base), and
142 # new RTC clock value
144 # Note: This event is rate-limited.
150 # <- { "event": "RTC_CHANGE",
151 # "data": { "offset": 78 },
152 # "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
155 { 'event': 'RTC_CHANGE',
156 'data': { 'offset': 'int' } }
161 # Emitted when the watchdog device's timer is expired
163 # @action: action that has been taken
165 # Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is
166 # followed respectively by the RESET, SHUTDOWN, or STOP events
168 # Note: This event is rate-limited.
174 # <- { "event": "WATCHDOG",
175 # "data": { "action": "reset" },
176 # "timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
179 { 'event': 'WATCHDOG',
180 'data': { 'action': 'WatchdogExpirationAction' } }
185 # Emitted whenever the device removal completion is acknowledged by the guest.
186 # At this point, it's safe to reuse the specified device ID. Device removal can
187 # be initiated by the guest or by HMP/QMP commands.
189 # @device: #optional device name
197 # <- { "event": "DEVICE_DELETED",
198 # "data": { "device": "virtio-net-pci-0",
199 # "path": "/machine/peripheral/virtio-net-pci-0" },
200 # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
203 { 'event': 'DEVICE_DELETED',
204 'data': { '*device': 'str', 'path': 'str' } }
207 # @NIC_RX_FILTER_CHANGED:
209 # Emitted once until the 'query-rx-filter' command is executed, the first event
210 # will always be emitted
212 # @name: #optional net client name
220 # <- { "event": "NIC_RX_FILTER_CHANGED",
221 # "data": { "name": "vnet0",
222 # "path": "/machine/peripheral/vnet0/virtio-backend" },
223 # "timestamp": { "seconds": 1368697518, "microseconds": 326866 } }
227 { 'event': 'NIC_RX_FILTER_CHANGED',
228 'data': { '*name': 'str', 'path': 'str' } }
233 # Emitted when a VNC client establishes a connection
235 # @server: server information
237 # @client: client information
239 # Note: This event is emitted before any authentication takes place, thus
240 # the authentication ID is not provided
246 # <- { "event": "VNC_CONNECTED",
248 # "server": { "auth": "sasl", "family": "ipv4",
249 # "service": "5901", "host": "0.0.0.0" },
250 # "client": { "family": "ipv4", "service": "58425",
251 # "host": "127.0.0.1" } },
252 # "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
255 { 'event': 'VNC_CONNECTED',
256 'data': { 'server': 'VncServerInfo',
257 'client': 'VncBasicInfo' } }
262 # Emitted after authentication takes place (if any) and the VNC session is
265 # @server: server information
267 # @client: client information
273 # <- { "event": "VNC_INITIALIZED",
275 # "server": { "auth": "sasl", "family": "ipv4",
276 # "service": "5901", "host": "0.0.0.0"},
277 # "client": { "family": "ipv4", "service": "46089",
278 # "host": "127.0.0.1", "sasl_username": "luiz" } },
279 # "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
282 { 'event': 'VNC_INITIALIZED',
283 'data': { 'server': 'VncServerInfo',
284 'client': 'VncClientInfo' } }
289 # Emitted when the connection is closed
291 # @server: server information
293 # @client: client information
299 # <- { "event": "VNC_DISCONNECTED",
301 # "server": { "auth": "sasl", "family": "ipv4",
302 # "service": "5901", "host": "0.0.0.0" },
303 # "client": { "family": "ipv4", "service": "58425",
304 # "host": "127.0.0.1", "sasl_username": "luiz" } },
305 # "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
308 { 'event': 'VNC_DISCONNECTED',
309 'data': { 'server': 'VncServerInfo',
310 'client': 'VncClientInfo' } }
315 # Emitted when a SPICE client establishes a connection
317 # @server: server information
319 # @client: client information
325 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
326 # "event": "SPICE_CONNECTED",
328 # "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
329 # "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
333 { 'event': 'SPICE_CONNECTED',
334 'data': { 'server': 'SpiceBasicInfo',
335 'client': 'SpiceBasicInfo' } }
338 # @SPICE_INITIALIZED:
340 # Emitted after initial handshake and authentication takes place (if any)
341 # and the SPICE channel is up and running
343 # @server: server information
345 # @client: client information
351 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
352 # "event": "SPICE_INITIALIZED",
353 # "data": {"server": {"auth": "spice", "port": "5921",
354 # "family": "ipv4", "host": "127.0.0.1"},
355 # "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
356 # "connection-id": 1804289383, "host": "127.0.0.1",
357 # "channel-id": 0, "tls": true}
361 { 'event': 'SPICE_INITIALIZED',
362 'data': { 'server': 'SpiceServerInfo',
363 'client': 'SpiceChannel' } }
366 # @SPICE_DISCONNECTED:
368 # Emitted when the SPICE connection is closed
370 # @server: server information
372 # @client: client information
378 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
379 # "event": "SPICE_DISCONNECTED",
381 # "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
382 # "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
386 { 'event': 'SPICE_DISCONNECTED',
387 'data': { 'server': 'SpiceBasicInfo',
388 'client': 'SpiceBasicInfo' } }
391 # @SPICE_MIGRATE_COMPLETED:
393 # Emitted when SPICE migration has completed
399 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
400 # "event": "SPICE_MIGRATE_COMPLETED" }
403 { 'event': 'SPICE_MIGRATE_COMPLETED' }
408 # Emitted when a migration event happens
410 # @status: @MigrationStatus describing the current migration status.
416 # <- {"timestamp": {"seconds": 1432121972, "microseconds": 744001},
417 # "event": "MIGRATION",
418 # "data": {"status": "completed"} }
421 { 'event': 'MIGRATION',
422 'data': {'status': 'MigrationStatus'}}
427 # Emitted from the source side of a migration at the start of each pass
428 # (when it syncs the dirty bitmap)
430 # @pass: An incrementing count (starting at 1 on the first pass)
436 # { "timestamp": {"seconds": 1449669631, "microseconds": 239225},
437 # "event": "MIGRATION_PASS", "data": {"pass": 2} }
440 { 'event': 'MIGRATION_PASS',
441 'data': { 'pass': 'int' } }
446 # Emitted when guest executes ACPI _OST method.
448 # @info: ACPIOSTInfo type as described in qapi-schema.json
454 # <- { "event": "ACPI_DEVICE_OST",
455 # "data": { "device": "d1", "slot": "0",
456 # "slot-type": "DIMM", "source": 1, "status": 0 } }
459 { 'event': 'ACPI_DEVICE_OST',
460 'data': { 'info': 'ACPIOSTInfo' } }
465 # Emitted when the guest changes the actual BALLOON level. This value is
466 # equivalent to the @actual field return by the 'query-balloon' command
468 # @actual: actual level of the guest memory balloon in bytes
470 # Note: this event is rate-limited.
476 # <- { "event": "BALLOON_CHANGE",
477 # "data": { "actual": 944766976 },
478 # "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
481 { 'event': 'BALLOON_CHANGE',
482 'data': { 'actual': 'int' } }
487 # Emitted when guest OS panic is detected
489 # @action: action that has been taken, currently always "pause"
491 # @info: #optional information about a panic (since 2.9)
497 # <- { "event": "GUEST_PANICKED",
498 # "data": { "action": "pause" } }
501 { 'event': 'GUEST_PANICKED',
502 'data': { 'action': 'GuestPanicAction', '*info': 'GuestPanicInformation' } }
507 # Emitted by the Quorum block driver if it fails to establish a quorum
509 # @reference: device name if defined else node name
511 # @sector-num: number of the first sector of the failed read operation
513 # @sectors-count: failed read operation sector count
515 # Note: This event is rate-limited.
521 # <- { "event": "QUORUM_FAILURE",
522 # "data": { "reference": "usr1", "sector-num": 345435, "sectors-count": 5 },
523 # "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
526 { 'event': 'QUORUM_FAILURE',
527 'data': { 'reference': 'str', 'sector-num': 'int', 'sectors-count': 'int' } }
530 # @QUORUM_REPORT_BAD:
532 # Emitted to report a corruption of a Quorum file
534 # @type: quorum operation type (Since 2.6)
536 # @error: #optional error message. Only present on failure. This field
537 # contains a human-readable error message. There are no semantics other
538 # than that the block layer reported an error and clients should not
539 # try to interpret the error string.
541 # @node-name: the graph node name of the block driver state
543 # @sector-num: number of the first sector of the failed read operation
545 # @sectors-count: failed read operation sector count
547 # Note: This event is rate-limited.
555 # { "event": "QUORUM_REPORT_BAD",
556 # "data": { "node-name": "node0", "sector-num": 345435, "sectors-count": 5,
558 # "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
562 # { "event": "QUORUM_REPORT_BAD",
563 # "data": { "node-name": "node0", "sector-num": 0, "sectors-count": 2097120,
564 # "type": "flush", "error": "Broken pipe" },
565 # "timestamp": { "seconds": 1456406829, "microseconds": 291763 } }
568 { 'event': 'QUORUM_REPORT_BAD',
569 'data': { 'type': 'QuorumOpType', '*error': 'str', 'node-name': 'str',
570 'sector-num': 'int', 'sectors-count': 'int' } }
575 # Emitted when the guest opens or closes a virtio-serial port.
577 # @id: device identifier of the virtio-serial port
579 # @open: true if the guest has opened the virtio-serial port
585 # <- { "event": "VSERPORT_CHANGE",
586 # "data": { "id": "channel0", "open": true },
587 # "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
590 { 'event': 'VSERPORT_CHANGE',
591 'data': { 'id': 'str', 'open': 'bool' } }
596 # Emitted when memory hot unplug error occurs.
598 # @device: device name
600 # @msg: Informative message
606 # <- { "event": "MEM_UNPLUG_ERROR"
607 # "data": { "device": "dimm1",
608 # "msg": "acpi: device unplug for unsupported device"
610 # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
613 { 'event': 'MEM_UNPLUG_ERROR',
614 'data': { 'device': 'str', 'msg': 'str' } }
619 # Emitted when background dump has completed
621 # @result: DumpQueryResult type described in qapi-schema.json.
623 # @error: #optional human-readable error string that provides
624 # hint on why dump failed. Only presents on failure. The
625 # user should not try to interpret the error string.
631 # { "event": "DUMP_COMPLETED",
632 # "data": {"result": {"total": 1090650112, "status": "completed",
633 # "completed": 1090650112} } }
636 { 'event': 'DUMP_COMPLETED' ,
637 'data': { 'result': 'DumpQueryResult', '*error': 'str' } }