tests: Add a tester for HMP commands
[qemu.git] / qapi / event.json
1 # -*- Mode: Python -*-
2
3 ##
4 # = Other events
5 ##
6
7 ##
8 # @SHUTDOWN:
9 #
10 # Emitted when the virtual machine has shut down, indicating that qemu is
11 # about to exit.
12 #
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
15 #
16 # Since: 0.12.0
17 #
18 # Example:
19 #
20 # <- { "event": "SHUTDOWN",
21 #      "timestamp": { "seconds": 1267040730, "microseconds": 682951 } }
22 #
23 ##
24 { 'event': 'SHUTDOWN' }
25
26 ##
27 # @POWERDOWN:
28 #
29 # Emitted when the virtual machine is powered down through the power control
30 # system, such as via ACPI.
31 #
32 # Since: 0.12.0
33 #
34 # Example:
35 #
36 # <- { "event": "POWERDOWN",
37 #      "timestamp": { "seconds": 1267040730, "microseconds": 682951 } }
38 #
39 ##
40 { 'event': 'POWERDOWN' }
41
42 ##
43 # @RESET:
44 #
45 # Emitted when the virtual machine is reset
46 #
47 # Since: 0.12.0
48 #
49 # Example:
50 #
51 # <- { "event": "RESET",
52 #      "timestamp": { "seconds": 1267041653, "microseconds": 9518 } }
53 #
54 ##
55 { 'event': 'RESET' }
56
57 ##
58 # @STOP:
59 #
60 # Emitted when the virtual machine is stopped
61 #
62 # Since: 0.12.0
63 #
64 # Example:
65 #
66 # <- { "event": "STOP",
67 #      "timestamp": { "seconds": 1267041730, "microseconds": 281295 } }
68 #
69 ##
70 { 'event': 'STOP' }
71
72 ##
73 # @RESUME:
74 #
75 # Emitted when the virtual machine resumes execution
76 #
77 # Since: 0.12.0
78 #
79 # Example:
80 #
81 # <- { "event": "RESUME",
82 #      "timestamp": { "seconds": 1271770767, "microseconds": 582542 } }
83 #
84 ##
85 { 'event': 'RESUME' }
86
87 ##
88 # @SUSPEND:
89 #
90 # Emitted when guest enters a hardware suspension state, for example, S3 state,
91 # which is sometimes called standby state
92 #
93 # Since: 1.1
94 #
95 # Example:
96 #
97 # <- { "event": "SUSPEND",
98 #      "timestamp": { "seconds": 1344456160, "microseconds": 309119 } }
99 #
100 ##
101 { 'event': 'SUSPEND' }
102
103 ##
104 # @SUSPEND_DISK:
105 #
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
108 #
109 # Note: QEMU shuts down (similar to event @SHUTDOWN) when entering this state
110 #
111 # Since: 1.2
112 #
113 # Example:
114 #
115 # <-   { "event": "SUSPEND_DISK",
116 #        "timestamp": { "seconds": 1344456160, "microseconds": 309119 } }
117 #
118 ##
119 { 'event': 'SUSPEND_DISK' }
120
121 ##
122 # @WAKEUP:
123 #
124 # Emitted when the guest has woken up from suspend state and is running
125 #
126 # Since: 1.1
127 #
128 # Example:
129 #
130 # <- { "event": "WAKEUP",
131 #      "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
132 #
133 ##
134 { 'event': 'WAKEUP' }
135
136 ##
137 # @RTC_CHANGE:
138 #
139 # Emitted when the guest changes the RTC time.
140 #
141 # @offset: offset between base RTC clock (as specified by -rtc base), and
142 #          new RTC clock value
143 #
144 # Note: This event is rate-limited.
145 #
146 # Since: 0.13.0
147 #
148 # Example:
149 #
150 # <-   { "event": "RTC_CHANGE",
151 #        "data": { "offset": 78 },
152 #        "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
153 #
154 ##
155 { 'event': 'RTC_CHANGE',
156   'data': { 'offset': 'int' } }
157
158 ##
159 # @WATCHDOG:
160 #
161 # Emitted when the watchdog device's timer is expired
162 #
163 # @action: action that has been taken
164 #
165 # Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is
166 # followed respectively by the RESET, SHUTDOWN, or STOP events
167 #
168 # Note: This event is rate-limited.
169 #
170 # Since: 0.13.0
171 #
172 # Example:
173 #
174 # <- { "event": "WATCHDOG",
175 #      "data": { "action": "reset" },
176 #      "timestamp": { "seconds": 1267061043, "microseconds": 959568 } }
177 #
178 ##
179 { 'event': 'WATCHDOG',
180   'data': { 'action': 'WatchdogExpirationAction' } }
181
182 ##
183 # @DEVICE_DELETED:
184 #
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.
188 #
189 # @device: device name
190 #
191 # @path: device path
192 #
193 # Since: 1.5
194 #
195 # Example:
196 #
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 } }
201 #
202 ##
203 { 'event': 'DEVICE_DELETED',
204   'data': { '*device': 'str', 'path': 'str' } }
205
206 ##
207 # @NIC_RX_FILTER_CHANGED:
208 #
209 # Emitted once until the 'query-rx-filter' command is executed, the first event
210 # will always be emitted
211 #
212 # @name: net client name
213 #
214 # @path: device path
215 #
216 # Since: 1.6
217 #
218 # Example:
219 #
220 # <- { "event": "NIC_RX_FILTER_CHANGED",
221 #      "data": { "name": "vnet0",
222 #                "path": "/machine/peripheral/vnet0/virtio-backend" },
223 #      "timestamp": { "seconds": 1368697518, "microseconds": 326866 } }
224 #    }
225 #
226 ##
227 { 'event': 'NIC_RX_FILTER_CHANGED',
228   'data': { '*name': 'str', 'path': 'str' } }
229
230 ##
231 # @VNC_CONNECTED:
232 #
233 # Emitted when a VNC client establishes a connection
234 #
235 # @server: server information
236 #
237 # @client: client information
238 #
239 # Note: This event is emitted before any authentication takes place, thus
240 # the authentication ID is not provided
241 #
242 # Since: 0.13.0
243 #
244 # Example:
245 #
246 # <- { "event": "VNC_CONNECTED",
247 #      "data": {
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 } }
253 #
254 ##
255 { 'event': 'VNC_CONNECTED',
256   'data': { 'server': 'VncServerInfo',
257             'client': 'VncBasicInfo' } }
258
259 ##
260 # @VNC_INITIALIZED:
261 #
262 # Emitted after authentication takes place (if any) and the VNC session is
263 # made active
264 #
265 # @server: server information
266 #
267 # @client: client information
268 #
269 # Since: 0.13.0
270 #
271 # Example:
272 #
273 # <-  { "event": "VNC_INITIALIZED",
274 #       "data": {
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 } }
280 #
281 ##
282 { 'event': 'VNC_INITIALIZED',
283   'data': { 'server': 'VncServerInfo',
284             'client': 'VncClientInfo' } }
285
286 ##
287 # @VNC_DISCONNECTED:
288 #
289 # Emitted when the connection is closed
290 #
291 # @server: server information
292 #
293 # @client: client information
294 #
295 # Since: 0.13.0
296 #
297 # Example:
298 #
299 # <- { "event": "VNC_DISCONNECTED",
300 #      "data": {
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 } }
306 #
307 ##
308 { 'event': 'VNC_DISCONNECTED',
309   'data': { 'server': 'VncServerInfo',
310             'client': 'VncClientInfo' } }
311
312 ##
313 # @SPICE_CONNECTED:
314 #
315 # Emitted when a SPICE client establishes a connection
316 #
317 # @server: server information
318 #
319 # @client: client information
320 #
321 # Since: 0.14.0
322 #
323 # Example:
324 #
325 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
326 #      "event": "SPICE_CONNECTED",
327 #      "data": {
328 #        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
329 #        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
330 #    }}
331 #
332 ##
333 { 'event': 'SPICE_CONNECTED',
334   'data': { 'server': 'SpiceBasicInfo',
335             'client': 'SpiceBasicInfo' } }
336
337 ##
338 # @SPICE_INITIALIZED:
339 #
340 # Emitted after initial handshake and authentication takes place (if any)
341 # and the SPICE channel is up and running
342 #
343 # @server: server information
344 #
345 # @client: client information
346 #
347 # Since: 0.14.0
348 #
349 # Example:
350 #
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}
358 #    }}
359 #
360 ##
361 { 'event': 'SPICE_INITIALIZED',
362   'data': { 'server': 'SpiceServerInfo',
363             'client': 'SpiceChannel' } }
364
365 ##
366 # @SPICE_DISCONNECTED:
367 #
368 # Emitted when the SPICE connection is closed
369 #
370 # @server: server information
371 #
372 # @client: client information
373 #
374 # Since: 0.14.0
375 #
376 # Example:
377 #
378 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
379 #      "event": "SPICE_DISCONNECTED",
380 #      "data": {
381 #        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
382 #        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
383 #    }}
384 #
385 ##
386 { 'event': 'SPICE_DISCONNECTED',
387   'data': { 'server': 'SpiceBasicInfo',
388             'client': 'SpiceBasicInfo' } }
389
390 ##
391 # @SPICE_MIGRATE_COMPLETED:
392 #
393 # Emitted when SPICE migration has completed
394 #
395 # Since: 1.3
396 #
397 # Example:
398 #
399 # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
400 #      "event": "SPICE_MIGRATE_COMPLETED" }
401 #
402 ##
403 { 'event': 'SPICE_MIGRATE_COMPLETED' }
404
405 ##
406 # @MIGRATION:
407 #
408 # Emitted when a migration event happens
409 #
410 # @status: @MigrationStatus describing the current migration status.
411 #
412 # Since: 2.4
413 #
414 # Example:
415 #
416 # <- {"timestamp": {"seconds": 1432121972, "microseconds": 744001},
417 #     "event": "MIGRATION",
418 #     "data": {"status": "completed"} }
419 #
420 ##
421 { 'event': 'MIGRATION',
422   'data': {'status': 'MigrationStatus'}}
423
424 ##
425 # @MIGRATION_PASS:
426 #
427 # Emitted from the source side of a migration at the start of each pass
428 # (when it syncs the dirty bitmap)
429 #
430 # @pass: An incrementing count (starting at 1 on the first pass)
431 #
432 # Since: 2.6
433 #
434 # Example:
435 #
436 # { "timestamp": {"seconds": 1449669631, "microseconds": 239225},
437 #   "event": "MIGRATION_PASS", "data": {"pass": 2} }
438 #
439 ##
440 { 'event': 'MIGRATION_PASS',
441   'data': { 'pass': 'int' } }
442
443 ##
444 # @ACPI_DEVICE_OST:
445 #
446 # Emitted when guest executes ACPI _OST method.
447 #
448 # @info: ACPIOSTInfo type as described in qapi-schema.json
449 #
450 # Since: 2.1
451 #
452 # Example:
453 #
454 # <- { "event": "ACPI_DEVICE_OST",
455 #      "data": { "device": "d1", "slot": "0",
456 #                "slot-type": "DIMM", "source": 1, "status": 0 } }
457 #
458 ##
459 { 'event': 'ACPI_DEVICE_OST',
460      'data': { 'info': 'ACPIOSTInfo' } }
461
462 ##
463 # @BALLOON_CHANGE:
464 #
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
467 #
468 # @actual: actual level of the guest memory balloon in bytes
469 #
470 # Note: this event is rate-limited.
471 #
472 # Since: 1.2
473 #
474 # Example:
475 #
476 # <- { "event": "BALLOON_CHANGE",
477 #      "data": { "actual": 944766976 },
478 #      "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
479 #
480 ##
481 { 'event': 'BALLOON_CHANGE',
482   'data': { 'actual': 'int' } }
483
484 ##
485 # @GUEST_PANICKED:
486 #
487 # Emitted when guest OS panic is detected
488 #
489 # @action: action that has been taken, currently always "pause"
490 #
491 # @info: information about a panic (since 2.9)
492 #
493 # Since: 1.5
494 #
495 # Example:
496 #
497 # <- { "event": "GUEST_PANICKED",
498 #      "data": { "action": "pause" } }
499 #
500 ##
501 { 'event': 'GUEST_PANICKED',
502   'data': { 'action': 'GuestPanicAction', '*info': 'GuestPanicInformation' } }
503
504 ##
505 # @QUORUM_FAILURE:
506 #
507 # Emitted by the Quorum block driver if it fails to establish a quorum
508 #
509 # @reference: device name if defined else node name
510 #
511 # @sector-num: number of the first sector of the failed read operation
512 #
513 # @sectors-count: failed read operation sector count
514 #
515 # Note: This event is rate-limited.
516 #
517 # Since: 2.0
518 #
519 # Example:
520 #
521 # <- { "event": "QUORUM_FAILURE",
522 #      "data": { "reference": "usr1", "sector-num": 345435, "sectors-count": 5 },
523 #      "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
524 #
525 ##
526 { 'event': 'QUORUM_FAILURE',
527   'data': { 'reference': 'str', 'sector-num': 'int', 'sectors-count': 'int' } }
528
529 ##
530 # @QUORUM_REPORT_BAD:
531 #
532 # Emitted to report a corruption of a Quorum file
533 #
534 # @type: quorum operation type (Since 2.6)
535 #
536 # @error: 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.
540 #
541 # @node-name: the graph node name of the block driver state
542 #
543 # @sector-num: number of the first sector of the failed read operation
544 #
545 # @sectors-count: failed read operation sector count
546 #
547 # Note: This event is rate-limited.
548 #
549 # Since: 2.0
550 #
551 # Example:
552 #
553 # 1. Read operation
554 #
555 # { "event": "QUORUM_REPORT_BAD",
556 #      "data": { "node-name": "node0", "sector-num": 345435, "sectors-count": 5,
557 #                "type": "read" },
558 #      "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }
559 #
560 # 2. Flush operation
561 #
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 } }
566 #
567 ##
568 { 'event': 'QUORUM_REPORT_BAD',
569   'data': { 'type': 'QuorumOpType', '*error': 'str', 'node-name': 'str',
570             'sector-num': 'int', 'sectors-count': 'int' } }
571
572 ##
573 # @VSERPORT_CHANGE:
574 #
575 # Emitted when the guest opens or closes a virtio-serial port.
576 #
577 # @id: device identifier of the virtio-serial port
578 #
579 # @open: true if the guest has opened the virtio-serial port
580 #
581 # Since: 2.1
582 #
583 # Example:
584 #
585 # <- { "event": "VSERPORT_CHANGE",
586 #      "data": { "id": "channel0", "open": true },
587 #      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
588 #
589 ##
590 { 'event': 'VSERPORT_CHANGE',
591   'data': { 'id': 'str', 'open': 'bool' } }
592
593 ##
594 # @MEM_UNPLUG_ERROR:
595 #
596 # Emitted when memory hot unplug error occurs.
597 #
598 # @device: device name
599 #
600 # @msg: Informative message
601 #
602 # Since: 2.4
603 #
604 # Example:
605 #
606 # <- { "event": "MEM_UNPLUG_ERROR"
607 #      "data": { "device": "dimm1",
608 #                "msg": "acpi: device unplug for unsupported device"
609 #      },
610 #      "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
611 #
612 ##
613 { 'event': 'MEM_UNPLUG_ERROR',
614   'data': { 'device': 'str', 'msg': 'str' } }
615
616 ##
617 # @DUMP_COMPLETED:
618 #
619 # Emitted when background dump has completed
620 #
621 # @result: DumpQueryResult type described in qapi-schema.json.
622 #
623 # @error: 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.
626 #
627 # Since: 2.6
628 #
629 # Example:
630 #
631 # { "event": "DUMP_COMPLETED",
632 #   "data": {"result": {"total": 1090650112, "status": "completed",
633 #                       "completed": 1090650112} } }
634 #
635 ##
636 { 'event': 'DUMP_COMPLETED' ,
637   'data': { 'result': 'DumpQueryResult', '*error': 'str' } }