Statistics
| Branch: | Revision:

root / qmp-commands.hx @ 48a32bed

History | View | Annotate | Download (47.6 kB)

1
HXCOMM QMP dispatch table and documentation
2
HXCOMM Text between SQMP and EQMP is copied to the QMP documention file and
3
HXCOMM does not show up in the other formats.
4

    
5
SQMP
6
                        QMP Supported Commands
7
                        ----------------------
8

    
9
This document describes all commands currently supported by QMP.
10

    
11
Most of the time their usage is exactly the same as in the user Monitor, this
12
means that any other document which also describe commands (the manpage,
13
QEMU's manual, etc) can and should be consulted.
14

    
15
QMP has two types of commands: regular and query commands. Regular commands
16
usually change the Virtual Machine's state someway, while query commands just
17
return information. The sections below are divided accordingly.
18

    
19
It's important to observe that all communication examples are formatted in
20
a reader-friendly way, so that they're easier to understand. However, in real
21
protocol usage, they're emitted as a single line.
22

    
23
Also, the following notation is used to denote data flow:
24

    
25
-> data issued by the Client
26
<- Server data response
27

    
28
Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29
information on the Server command and response formats.
30

    
31
NOTE: This document is temporary and will be replaced soon.
32

    
33
1. Stability Considerations
34
===========================
35

    
36
The current QMP command set (described in this file) may be useful for a
37
number of use cases, however it's limited and several commands have bad
38
defined semantics, specially with regard to command completion.
39

    
40
These problems are going to be solved incrementally in the next QEMU releases
41
and we're going to establish a deprecation policy for badly defined commands.
42

    
43
If you're planning to adopt QMP, please observe the following:
44

    
45
    1. The deprecation policy will take effect and be documented soon, please
46
       check the documentation of each used command as soon as a new release of
47
       QEMU is available
48

    
49
    2. DO NOT rely on anything which is not explicit documented
50

    
51
    3. Errors, in special, are not documented. Applications should NOT check
52
       for specific errors classes or data (it's strongly recommended to only
53
       check for the "error" key)
54

    
55
2. Regular Commands
56
===================
57

    
58
Server's responses in the examples below are always a success response, please
59
refer to the QMP specification for more details on error responses.
60

    
61
EQMP
62

    
63
    {
64
        .name       = "quit",
65
        .args_type  = "",
66
        .params     = "",
67
        .help       = "quit the emulator",
68
        .user_print = monitor_user_noop,
69
        .mhandler.cmd_new = do_quit,
70
    },
71

    
72
SQMP
73
quit
74
----
75

    
76
Quit the emulator.
77

    
78
Arguments: None.
79

    
80
Example:
81

    
82
-> { "execute": "quit" }
83
<- { "return": {} }
84

    
85
EQMP
86

    
87
    {
88
        .name       = "eject",
89
        .args_type  = "force:-f,device:B",
90
        .params     = "[-f] device",
91
        .help       = "eject a removable medium (use -f to force it)",
92
        .user_print = monitor_user_noop,
93
        .mhandler.cmd_new = do_eject,
94
    },
95

    
96
SQMP
97
eject
98
-----
99

    
100
Eject a removable medium.
101

    
102
Arguments: 
103

    
104
- force: force ejection (json-bool, optional)
105
- device: device name (json-string)
106

    
107
Example:
108

    
109
-> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
110
<- { "return": {} }
111

    
112
Note: The "force" argument defaults to false.
113

    
114
EQMP
115

    
116
    {
117
        .name       = "change",
118
        .args_type  = "device:B,target:F,arg:s?",
119
        .params     = "device filename [format]",
120
        .help       = "change a removable medium, optional format",
121
        .user_print = monitor_user_noop,
122
        .mhandler.cmd_new = do_change,
123
    },
124

    
125
SQMP
126
change
127
------
128

    
129
Change a removable medium or VNC configuration.
130

    
131
Arguments:
132

    
133
- "device": device name (json-string)
134
- "target": filename or item (json-string)
135
- "arg": additional argument (json-string, optional)
136

    
137
Examples:
138

    
139
1. Change a removable medium
140

    
141
-> { "execute": "change",
142
             "arguments": { "device": "ide1-cd0",
143
                            "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
144
<- { "return": {} }
145

    
146
2. Change VNC password
147

    
148
-> { "execute": "change",
149
             "arguments": { "device": "vnc", "target": "password",
150
                            "arg": "foobar1" } }
151
<- { "return": {} }
152

    
153
EQMP
154

    
155
    {
156
        .name       = "screendump",
157
        .args_type  = "filename:F",
158
        .params     = "filename",
159
        .help       = "save screen into PPM image 'filename'",
160
        .user_print = monitor_user_noop,
161
        .mhandler.cmd_new = do_screen_dump,
162
    },
163

    
164
SQMP
165
screendump
166
----------
167

    
168
Save screen into PPM image.
169

    
170
Arguments:
171

    
172
- "filename": file path (json-string)
173

    
174
Example:
175

    
176
-> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
177
<- { "return": {} }
178

    
179
EQMP
180

    
181
    {
182
        .name       = "stop",
183
        .args_type  = "",
184
        .params     = "",
185
        .help       = "stop emulation",
186
        .user_print = monitor_user_noop,
187
        .mhandler.cmd_new = do_stop,
188
    },
189

    
190
SQMP
191
stop
192
----
193

    
194
Stop the emulator.
195

    
196
Arguments: None.
197

    
198
Example:
199

    
200
-> { "execute": "stop" }
201
<- { "return": {} }
202

    
203
EQMP
204

    
205
    {
206
        .name       = "cont",
207
        .args_type  = "",
208
        .params     = "",
209
        .help       = "resume emulation",
210
        .user_print = monitor_user_noop,
211
        .mhandler.cmd_new = do_cont,
212
    },
213

    
214
SQMP
215
cont
216
----
217

    
218
Resume emulation.
219

    
220
Arguments: None.
221

    
222
Example:
223

    
224
-> { "execute": "cont" }
225
<- { "return": {} }
226

    
227
EQMP
228

    
229
    {
230
        .name       = "system_reset",
231
        .args_type  = "",
232
        .params     = "",
233
        .help       = "reset the system",
234
        .user_print = monitor_user_noop,
235
        .mhandler.cmd_new = do_system_reset,
236
    },
237

    
238
SQMP
239
system_reset
240
------------
241

    
242
Reset the system.
243

    
244
Arguments: None.
245

    
246
Example:
247

    
248
-> { "execute": "system_reset" }
249
<- { "return": {} }
250

    
251
EQMP
252

    
253
    {
254
        .name       = "system_powerdown",
255
        .args_type  = "",
256
        .params     = "",
257
        .help       = "send system power down event",
258
        .user_print = monitor_user_noop,
259
        .mhandler.cmd_new = do_system_powerdown,
260
    },
261

    
262
SQMP
263
system_powerdown
264
----------------
265

    
266
Send system power down event.
267

    
268
Arguments: None.
269

    
270
Example:
271

    
272
-> { "execute": "system_powerdown" }
273
<- { "return": {} }
274

    
275
EQMP
276

    
277
    {
278
        .name       = "device_add",
279
        .args_type  = "device:O",
280
        .params     = "driver[,prop=value][,...]",
281
        .help       = "add device, like -device on the command line",
282
        .user_print = monitor_user_noop,
283
        .mhandler.cmd_new = do_device_add,
284
    },
285

    
286
SQMP
287
device_add
288
----------
289

    
290
Add a device.
291

    
292
Arguments:
293

    
294
- "driver": the name of the new device's driver (json-string)
295
- "bus": the device's parent bus (device tree path, json-string, optional)
296
- "id": the device's ID, must be unique (json-string)
297
- device properties
298

    
299
Example:
300

    
301
-> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
302
<- { "return": {} }
303

    
304
Notes:
305

    
306
(1) For detailed information about this command, please refer to the
307
    'docs/qdev-device-use.txt' file.
308

    
309
(2) It's possible to list device properties by running QEMU with the
310
    "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
311

    
312
EQMP
313

    
314
    {
315
        .name       = "device_del",
316
        .args_type  = "id:s",
317
        .params     = "device",
318
        .help       = "remove device",
319
        .user_print = monitor_user_noop,
320
        .mhandler.cmd_new = do_device_del,
321
    },
322

    
323
SQMP
324
device_del
325
----------
326

    
327
Remove a device.
328

    
329
Arguments:
330

    
331
- "id": the device's ID (json-string)
332

    
333
Example:
334

    
335
-> { "execute": "device_del", "arguments": { "id": "net1" } }
336
<- { "return": {} }
337

    
338
EQMP
339

    
340
    {
341
        .name       = "cpu",
342
        .args_type  = "index:i",
343
        .params     = "index",
344
        .help       = "set the default CPU",
345
        .user_print = monitor_user_noop,
346
        .mhandler.cmd_new = do_cpu_set,
347
    },
348

    
349
SQMP
350
cpu
351
---
352

    
353
Set the default CPU.
354

    
355
Arguments:
356

    
357
- "index": the CPU's index (json-int)
358

    
359
Example:
360

    
361
-> { "execute": "cpu", "arguments": { "index": 0 } }
362
<- { "return": {} }
363

    
364
Note: CPUs' indexes are obtained with the 'query-cpus' command.
365

    
366
EQMP
367

    
368
    {
369
        .name       = "memsave",
370
        .args_type  = "val:l,size:i,filename:s",
371
        .params     = "addr size file",
372
        .help       = "save to disk virtual memory dump starting at 'addr' of size 'size'",
373
        .user_print = monitor_user_noop,
374
        .mhandler.cmd_new = do_memory_save,
375
    },
376

    
377
SQMP
378
memsave
379
-------
380

    
381
Save to disk virtual memory dump starting at 'val' of size 'size'.
382

    
383
Arguments:
384

    
385
- "val": the starting address (json-int)
386
- "size": the memory size, in bytes (json-int)
387
- "filename": file path (json-string)
388

    
389
Example:
390

    
391
-> { "execute": "memsave",
392
             "arguments": { "val": 10,
393
                            "size": 100,
394
                            "filename": "/tmp/virtual-mem-dump" } }
395
<- { "return": {} }
396

    
397
Note: Depends on the current CPU.
398

    
399
EQMP
400

    
401
    {
402
        .name       = "pmemsave",
403
        .args_type  = "val:l,size:i,filename:s",
404
        .params     = "addr size file",
405
        .help       = "save to disk physical memory dump starting at 'addr' of size 'size'",
406
        .user_print = monitor_user_noop,
407
        .mhandler.cmd_new = do_physical_memory_save,
408
    },
409

    
410
SQMP
411
pmemsave
412
--------
413

    
414
Save to disk physical memory dump starting at 'val' of size 'size'.
415

    
416
Arguments:
417

    
418
- "val": the starting address (json-int)
419
- "size": the memory size, in bytes (json-int)
420
- "filename": file path (json-string)
421

    
422
Example:
423

    
424
-> { "execute": "pmemsave",
425
             "arguments": { "val": 10,
426
                            "size": 100,
427
                            "filename": "/tmp/physical-mem-dump" } }
428
<- { "return": {} }
429

    
430
EQMP
431

    
432
    {
433
        .name       = "inject-nmi",
434
        .args_type  = "",
435
        .params     = "",
436
        .help       = "",
437
        .user_print = monitor_user_noop,
438
        .mhandler.cmd_new = do_inject_nmi,
439
    },
440

    
441
SQMP
442
inject-nmi
443
----------
444

    
445
Inject an NMI on guest's CPUs.
446

    
447
Arguments: None.
448

    
449
Example:
450

    
451
-> { "execute": "inject-nmi" }
452
<- { "return": {} }
453

    
454
Note: inject-nmi is only supported for x86 guest currently, it will
455
      returns "Unsupported" error for non-x86 guest.
456

    
457
EQMP
458

    
459
    {
460
        .name       = "migrate",
461
        .args_type  = "detach:-d,blk:-b,inc:-i,uri:s",
462
        .params     = "[-d] [-b] [-i] uri",
463
        .help       = "migrate to URI (using -d to not wait for completion)"
464
		      "\n\t\t\t -b for migration without shared storage with"
465
		      " full copy of disk\n\t\t\t -i for migration without "
466
		      "shared storage with incremental copy of disk "
467
		      "(base image shared between src and destination)",
468
        .user_print = monitor_user_noop,	
469
	.mhandler.cmd_new = do_migrate,
470
    },
471

    
472
SQMP
473
migrate
474
-------
475

    
476
Migrate to URI.
477

    
478
Arguments:
479

    
480
- "blk": block migration, full disk copy (json-bool, optional)
481
- "inc": incremental disk copy (json-bool, optional)
482
- "uri": Destination URI (json-string)
483

    
484
Example:
485

    
486
-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
487
<- { "return": {} }
488

    
489
Notes:
490

    
491
(1) The 'query-migrate' command should be used to check migration's progress
492
    and final result (this information is provided by the 'status' member)
493
(2) All boolean arguments default to false
494
(3) The user Monitor's "detach" argument is invalid in QMP and should not
495
    be used
496

    
497
EQMP
498

    
499
    {
500
        .name       = "migrate_cancel",
501
        .args_type  = "",
502
        .params     = "",
503
        .help       = "cancel the current VM migration",
504
        .user_print = monitor_user_noop,
505
        .mhandler.cmd_new = do_migrate_cancel,
506
    },
507

    
508
SQMP
509
migrate_cancel
510
--------------
511

    
512
Cancel the current migration.
513

    
514
Arguments: None.
515

    
516
Example:
517

    
518
-> { "execute": "migrate_cancel" }
519
<- { "return": {} }
520

    
521
EQMP
522

    
523
    {
524
        .name       = "migrate_set_speed",
525
        .args_type  = "value:o",
526
        .params     = "value",
527
        .help       = "set maximum speed (in bytes) for migrations",
528
        .user_print = monitor_user_noop,
529
        .mhandler.cmd_new = do_migrate_set_speed,
530
    },
531

    
532
SQMP
533
migrate_set_speed
534
-----------------
535

    
536
Set maximum speed for migrations.
537

    
538
Arguments:
539

    
540
- "value": maximum speed, in bytes per second (json-int)
541

    
542
Example:
543

    
544
-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
545
<- { "return": {} }
546

    
547
EQMP
548

    
549
    {
550
        .name       = "migrate_set_downtime",
551
        .args_type  = "value:T",
552
        .params     = "value",
553
        .help       = "set maximum tolerated downtime (in seconds) for migrations",
554
        .user_print = monitor_user_noop,
555
        .mhandler.cmd_new = do_migrate_set_downtime,
556
    },
557

    
558
SQMP
559
migrate_set_downtime
560
--------------------
561

    
562
Set maximum tolerated downtime (in seconds) for migrations.
563

    
564
Arguments:
565

    
566
- "value": maximum downtime (json-number)
567

    
568
Example:
569

    
570
-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
571
<- { "return": {} }
572

    
573
EQMP
574

    
575
    {
576
        .name       = "client_migrate_info",
577
        .args_type  = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
578
        .params     = "protocol hostname port tls-port cert-subject",
579
        .help       = "send migration info to spice/vnc client",
580
        .user_print = monitor_user_noop,
581
        .mhandler.cmd_new = client_migrate_info,
582
    },
583

    
584
SQMP
585
client_migrate_info
586
------------------
587

    
588
Set the spice/vnc connection info for the migration target.  The spice/vnc
589
server will ask the spice/vnc client to automatically reconnect using the
590
new parameters (if specified) once the vm migration finished successfully.
591

    
592
Arguments:
593

    
594
- "protocol":     protocol: "spice" or "vnc" (json-string)
595
- "hostname":     migration target hostname (json-string)
596
- "port":         spice/vnc tcp port for plaintext channels (json-int, optional)
597
- "tls-port":     spice tcp port for tls-secured channels (json-int, optional)
598
- "cert-subject": server certificate subject (json-string, optional)
599

    
600
Example:
601

    
602
-> { "execute": "client_migrate_info",
603
     "arguments": { "protocol": "spice",
604
                    "hostname": "virt42.lab.kraxel.org",
605
                    "port": 1234 } }
606
<- { "return": {} }
607

    
608
EQMP
609

    
610
    {
611
        .name       = "netdev_add",
612
        .args_type  = "netdev:O",
613
        .params     = "[user|tap|socket],id=str[,prop=value][,...]",
614
        .help       = "add host network device",
615
        .user_print = monitor_user_noop,
616
        .mhandler.cmd_new = do_netdev_add,
617
    },
618

    
619
SQMP
620
netdev_add
621
----------
622

    
623
Add host network device.
624

    
625
Arguments:
626

    
627
- "type": the device type, "tap", "user", ... (json-string)
628
- "id": the device's ID, must be unique (json-string)
629
- device options
630

    
631
Example:
632

    
633
-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
634
<- { "return": {} }
635

    
636
Note: The supported device options are the same ones supported by the '-net'
637
      command-line argument, which are listed in the '-help' output or QEMU's
638
      manual
639

    
640
EQMP
641

    
642
    {
643
        .name       = "netdev_del",
644
        .args_type  = "id:s",
645
        .params     = "id",
646
        .help       = "remove host network device",
647
        .user_print = monitor_user_noop,
648
        .mhandler.cmd_new = do_netdev_del,
649
    },
650

    
651
SQMP
652
netdev_del
653
----------
654

    
655
Remove host network device.
656

    
657
Arguments:
658

    
659
- "id": the device's ID, must be unique (json-string)
660

    
661
Example:
662

    
663
-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
664
<- { "return": {} }
665

    
666

    
667
EQMP
668

    
669
    {
670
        .name       = "block_resize",
671
        .args_type  = "device:B,size:o",
672
        .params     = "device size",
673
        .help       = "resize a block image",
674
        .user_print = monitor_user_noop,
675
        .mhandler.cmd_new = do_block_resize,
676
    },
677

    
678
SQMP
679
block_resize
680
------------
681

    
682
Resize a block image while a guest is running.
683

    
684
Arguments:
685

    
686
- "device": the device's ID, must be unique (json-string)
687
- "size": new size
688

    
689
Example:
690

    
691
-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
692
<- { "return": {} }
693

    
694
EQMP
695

    
696
    {
697
        .name       = "blockdev-snapshot-sync",
698
        .args_type  = "device:B,snapshot-file:s?,format:s?",
699
        .params     = "device [new-image-file] [format]",
700
        .user_print = monitor_user_noop,
701
        .mhandler.cmd_new = do_snapshot_blkdev,
702
    },
703

    
704
SQMP
705
blockdev-snapshot-sync
706
----------------------
707

    
708
Synchronous snapshot of a block device. snapshot-file specifies the
709
target of the new image. If the file exists, or if it is a device, the
710
snapshot will be created in the existing file/device. If does not
711
exist, a new file will be created. format specifies the format of the
712
snapshot image, default is qcow2.
713

    
714
Arguments:
715

    
716
- "device": device name to snapshot (json-string)
717
- "snapshot-file": name of new image file (json-string)
718
- "format": format of new image (json-string, optional)
719

    
720
Example:
721

    
722
-> { "execute": "blockdev-snapshot", "arguments": { "device": "ide-hd0",
723
                                                    "snapshot-file":
724
                                                    "/some/place/my-image",
725
                                                    "format": "qcow2" } }
726
<- { "return": {} }
727

    
728
EQMP
729

    
730
    {
731
        .name       = "balloon",
732
        .args_type  = "value:M",
733
        .params     = "target",
734
        .help       = "request VM to change its memory allocation (in MB)",
735
        .user_print = monitor_user_noop,
736
        .mhandler.cmd_async = do_balloon,
737
        .flags      = MONITOR_CMD_ASYNC,
738
    },
739

    
740
SQMP
741
balloon
742
-------
743

    
744
Request VM to change its memory allocation (in bytes).
745

    
746
Arguments:
747

    
748
- "value": New memory allocation (json-int)
749

    
750
Example:
751

    
752
-> { "execute": "balloon", "arguments": { "value": 536870912 } }
753
<- { "return": {} }
754

    
755
EQMP
756

    
757
    {
758
        .name       = "set_link",
759
        .args_type  = "name:s,up:b",
760
        .params     = "name on|off",
761
        .help       = "change the link status of a network adapter",
762
        .user_print = monitor_user_noop,
763
        .mhandler.cmd_new = do_set_link,
764
    },
765

    
766
SQMP
767
set_link
768
--------
769

    
770
Change the link status of a network adapter.
771

    
772
Arguments:
773

    
774
- "name": network device name (json-string)
775
- "up": status is up (json-bool)
776

    
777
Example:
778

    
779
-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
780
<- { "return": {} }
781

    
782
EQMP
783

    
784
    {
785
        .name       = "getfd",
786
        .args_type  = "fdname:s",
787
        .params     = "getfd name",
788
        .help       = "receive a file descriptor via SCM rights and assign it a name",
789
        .user_print = monitor_user_noop,
790
        .mhandler.cmd_new = do_getfd,
791
    },
792

    
793
SQMP
794
getfd
795
-----
796

    
797
Receive a file descriptor via SCM rights and assign it a name.
798

    
799
Arguments:
800

    
801
- "fdname": file descriptor name (json-string)
802

    
803
Example:
804

    
805
-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
806
<- { "return": {} }
807

    
808
EQMP
809

    
810
    {
811
        .name       = "closefd",
812
        .args_type  = "fdname:s",
813
        .params     = "closefd name",
814
        .help       = "close a file descriptor previously passed via SCM rights",
815
        .user_print = monitor_user_noop,
816
        .mhandler.cmd_new = do_closefd,
817
    },
818

    
819
SQMP
820
closefd
821
-------
822

    
823
Close a file descriptor previously passed via SCM rights.
824

    
825
Arguments:
826

    
827
- "fdname": file descriptor name (json-string)
828

    
829
Example:
830

    
831
-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
832
<- { "return": {} }
833

    
834
EQMP
835

    
836
    {
837
        .name       = "block_passwd",
838
        .args_type  = "device:B,password:s",
839
        .params     = "block_passwd device password",
840
        .help       = "set the password of encrypted block devices",
841
        .user_print = monitor_user_noop,
842
        .mhandler.cmd_new = do_block_set_passwd,
843
    },
844

    
845
SQMP
846
block_passwd
847
------------
848

    
849
Set the password of encrypted block devices.
850

    
851
Arguments:
852

    
853
- "device": device name (json-string)
854
- "password": password (json-string)
855

    
856
Example:
857

    
858
-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
859
                                               "password": "12345" } }
860
<- { "return": {} }
861

    
862
EQMP
863

    
864
    {
865
        .name       = "set_password",
866
        .args_type  = "protocol:s,password:s,connected:s?",
867
        .params     = "protocol password action-if-connected",
868
        .help       = "set spice/vnc password",
869
        .user_print = monitor_user_noop,
870
        .mhandler.cmd_new = set_password,
871
    },
872

    
873
SQMP
874
set_password
875
------------
876

    
877
Set the password for vnc/spice protocols.
878

    
879
Arguments:
880

    
881
- "protocol": protocol name (json-string)
882
- "password": password (json-string)
883
- "connected": [ keep | disconnect | fail ] (josn-string, optional)
884

    
885
Example:
886

    
887
-> { "execute": "set_password", "arguments": { "protocol": "vnc",
888
                                               "password": "secret" } }
889
<- { "return": {} }
890

    
891
EQMP
892

    
893
    {
894
        .name       = "expire_password",
895
        .args_type  = "protocol:s,time:s",
896
        .params     = "protocol time",
897
        .help       = "set spice/vnc password expire-time",
898
        .user_print = monitor_user_noop,
899
        .mhandler.cmd_new = expire_password,
900
    },
901

    
902
SQMP
903
expire_password
904
---------------
905

    
906
Set the password expire time for vnc/spice protocols.
907

    
908
Arguments:
909

    
910
- "protocol": protocol name (json-string)
911
- "time": [ now | never | +secs | secs ] (json-string)
912

    
913
Example:
914

    
915
-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
916
                                                  "time": "+60" } }
917
<- { "return": {} }
918

    
919
EQMP
920

    
921
    {
922
        .name       = "add_client",
923
        .args_type  = "protocol:s,fdname:s,skipauth:b?",
924
        .params     = "protocol fdname skipauth",
925
        .help       = "add a graphics client",
926
        .user_print = monitor_user_noop,
927
        .mhandler.cmd_new = add_graphics_client,
928
    },
929

    
930
SQMP
931
add_client
932
----------
933

    
934
Add a graphics client
935

    
936
Arguments:
937

    
938
- "protocol": protocol name (json-string)
939
- "fdname": file descriptor name (json-string)
940

    
941
Example:
942

    
943
-> { "execute": "add_client", "arguments": { "protocol": "vnc",
944
                                             "fdname": "myclient" } }
945
<- { "return": {} }
946

    
947
EQMP
948
    {
949
        .name       = "qmp_capabilities",
950
        .args_type  = "",
951
        .params     = "",
952
        .help       = "enable QMP capabilities",
953
        .user_print = monitor_user_noop,
954
        .mhandler.cmd_new = do_qmp_capabilities,
955
    },
956

    
957
SQMP
958
qmp_capabilities
959
----------------
960

    
961
Enable QMP capabilities.
962

    
963
Arguments: None.
964

    
965
Example:
966

    
967
-> { "execute": "qmp_capabilities" }
968
<- { "return": {} }
969

    
970
Note: This command must be issued before issuing any other command.
971

    
972
EQMP
973

    
974
    {
975
        .name       = "human-monitor-command",
976
        .args_type  = "command-line:s,cpu-index:i?",
977
        .params     = "",
978
        .help       = "",
979
        .user_print = monitor_user_noop,
980
        .mhandler.cmd_new = do_hmp_passthrough,
981
    },
982

    
983
SQMP
984
human-monitor-command
985
---------------------
986

    
987
Execute a Human Monitor command.
988

    
989
Arguments: 
990

    
991
- command-line: the command name and its arguments, just like the
992
                Human Monitor's shell (json-string)
993
- cpu-index: select the CPU number to be used by commands which access CPU
994
             data, like 'info registers'. The Monitor selects CPU 0 if this
995
             argument is not provided (json-int, optional)
996

    
997
Example:
998

    
999
-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1000
<- { "return": "kvm support: enabled\r\n" }
1001

    
1002
Notes:
1003

    
1004
(1) The Human Monitor is NOT an stable interface, this means that command
1005
    names, arguments and responses can change or be removed at ANY time.
1006
    Applications that rely on long term stability guarantees should NOT
1007
    use this command
1008

    
1009
(2) Limitations:
1010

    
1011
    o This command is stateless, this means that commands that depend
1012
      on state information (such as getfd) might not work
1013

    
1014
    o Commands that prompt the user for data (eg. 'cont' when the block
1015
      device is encrypted) don't currently work
1016

    
1017
3. Query Commands
1018
=================
1019

    
1020
HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1021
HXCOMM this! We will possibly move query commands definitions inside those
1022
HXCOMM sections, just like regular commands.
1023

    
1024
EQMP
1025

    
1026
SQMP
1027
query-version
1028
-------------
1029

    
1030
Show QEMU version.
1031

    
1032
Return a json-object with the following information:
1033

    
1034
- "qemu": A json-object containing three integer values:
1035
    - "major": QEMU's major version (json-int)
1036
    - "minor": QEMU's minor version (json-int)
1037
    - "micro": QEMU's micro version (json-int)
1038
- "package": package's version (json-string)
1039

    
1040
Example:
1041

    
1042
-> { "execute": "query-version" }
1043
<- {
1044
      "return":{
1045
         "qemu":{
1046
            "major":0,
1047
            "minor":11,
1048
            "micro":5
1049
         },
1050
         "package":""
1051
      }
1052
   }
1053

    
1054
EQMP
1055

    
1056
SQMP
1057
query-commands
1058
--------------
1059

    
1060
List QMP available commands.
1061

    
1062
Each command is represented by a json-object, the returned value is a json-array
1063
of all commands.
1064

    
1065
Each json-object contain:
1066

    
1067
- "name": command's name (json-string)
1068

    
1069
Example:
1070

    
1071
-> { "execute": "query-commands" }
1072
<- {
1073
      "return":[
1074
         {
1075
            "name":"query-balloon"
1076
         },
1077
         {
1078
            "name":"system_powerdown"
1079
         }
1080
      ]
1081
   }
1082

    
1083
Note: This example has been shortened as the real response is too long.
1084

    
1085
EQMP
1086

    
1087
SQMP
1088
query-chardev
1089
-------------
1090

    
1091
Each device is represented by a json-object. The returned value is a json-array
1092
of all devices.
1093

    
1094
Each json-object contain the following:
1095

    
1096
- "label": device's label (json-string)
1097
- "filename": device's file (json-string)
1098

    
1099
Example:
1100

    
1101
-> { "execute": "query-chardev" }
1102
<- {
1103
      "return":[
1104
         {
1105
            "label":"monitor",
1106
            "filename":"stdio"
1107
         },
1108
         {
1109
            "label":"serial0",
1110
            "filename":"vc"
1111
         }
1112
      ]
1113
   }
1114

    
1115
EQMP
1116

    
1117
SQMP
1118
query-block
1119
-----------
1120

    
1121
Show the block devices.
1122

    
1123
Each block device information is stored in a json-object and the returned value
1124
is a json-array of all devices.
1125

    
1126
Each json-object contain the following:
1127

    
1128
- "device": device name (json-string)
1129
- "type": device type (json-string)
1130
         - deprecated, retained for backward compatibility
1131
         - Possible values: "unknown"
1132
- "removable": true if the device is removable, false otherwise (json-bool)
1133
- "locked": true if the device is locked, false otherwise (json-bool)
1134
- "tray-open": only present if removable, true if the device has a tray,
1135
               and it is open (json-bool)
1136
- "inserted": only present if the device is inserted, it is a json-object
1137
   containing the following:
1138
         - "file": device file name (json-string)
1139
         - "ro": true if read-only, false otherwise (json-bool)
1140
         - "drv": driver format name (json-string)
1141
             - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1142
                                "file", "file", "ftp", "ftps", "host_cdrom",
1143
                                "host_device", "host_floppy", "http", "https",
1144
                                "nbd", "parallels", "qcow", "qcow2", "raw",
1145
                                "tftp", "vdi", "vmdk", "vpc", "vvfat"
1146
         - "backing_file": backing file name (json-string, optional)
1147
         - "encrypted": true if encrypted, false otherwise (json-bool)
1148

    
1149
Example:
1150

    
1151
-> { "execute": "query-block" }
1152
<- {
1153
      "return":[
1154
         {
1155
            "device":"ide0-hd0",
1156
            "locked":false,
1157
            "removable":false,
1158
            "inserted":{
1159
               "ro":false,
1160
               "drv":"qcow2",
1161
               "encrypted":false,
1162
               "file":"disks/test.img"
1163
            },
1164
            "type":"unknown"
1165
         },
1166
         {
1167
            "device":"ide1-cd0",
1168
            "locked":false,
1169
            "removable":true,
1170
            "type":"unknown"
1171
         },
1172
         {
1173
            "device":"floppy0",
1174
            "locked":false,
1175
            "removable":true,
1176
            "type":"unknown"
1177
         },
1178
         {
1179
            "device":"sd0",
1180
            "locked":false,
1181
            "removable":true,
1182
            "type":"unknown"
1183
         }
1184
      ]
1185
   }
1186

    
1187
EQMP
1188

    
1189
SQMP
1190
query-blockstats
1191
----------------
1192

    
1193
Show block device statistics.
1194

    
1195
Each device statistic information is stored in a json-object and the returned
1196
value is a json-array of all devices.
1197

    
1198
Each json-object contain the following:
1199

    
1200
- "device": device name (json-string)
1201
- "stats": A json-object with the statistics information, it contains:
1202
    - "rd_bytes": bytes read (json-int)
1203
    - "wr_bytes": bytes written (json-int)
1204
    - "rd_operations": read operations (json-int)
1205
    - "wr_operations": write operations (json-int)
1206
    - "flush_operations": cache flush operations (json-int)
1207
    - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1208
    - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1209
    - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1210
    - "wr_highest_offset": Highest offset of a sector written since the
1211
                           BlockDriverState has been opened (json-int)
1212
- "parent": Contains recursively the statistics of the underlying
1213
            protocol (e.g. the host file for a qcow2 image). If there is
1214
            no underlying protocol, this field is omitted
1215
            (json-object, optional)
1216

    
1217
Example:
1218

    
1219
-> { "execute": "query-blockstats" }
1220
<- {
1221
      "return":[
1222
         {
1223
            "device":"ide0-hd0",
1224
            "parent":{
1225
               "stats":{
1226
                  "wr_highest_offset":3686448128,
1227
                  "wr_bytes":9786368,
1228
                  "wr_operations":751,
1229
                  "rd_bytes":122567168,
1230
                  "rd_operations":36772
1231
                  "wr_total_times_ns":313253456
1232
                  "rd_total_times_ns":3465673657
1233
                  "flush_total_times_ns":49653
1234
                  "flush_operations":61,
1235
               }
1236
            },
1237
            "stats":{
1238
               "wr_highest_offset":2821110784,
1239
               "wr_bytes":9786368,
1240
               "wr_operations":692,
1241
               "rd_bytes":122739200,
1242
               "rd_operations":36604
1243
               "flush_operations":51,
1244
               "wr_total_times_ns":313253456
1245
               "rd_total_times_ns":3465673657
1246
               "flush_total_times_ns":49653
1247
            }
1248
         },
1249
         {
1250
            "device":"ide1-cd0",
1251
            "stats":{
1252
               "wr_highest_offset":0,
1253
               "wr_bytes":0,
1254
               "wr_operations":0,
1255
               "rd_bytes":0,
1256
               "rd_operations":0
1257
               "flush_operations":0,
1258
               "wr_total_times_ns":0
1259
               "rd_total_times_ns":0
1260
               "flush_total_times_ns":0
1261
            }
1262
         },
1263
         {
1264
            "device":"floppy0",
1265
            "stats":{
1266
               "wr_highest_offset":0,
1267
               "wr_bytes":0,
1268
               "wr_operations":0,
1269
               "rd_bytes":0,
1270
               "rd_operations":0
1271
               "flush_operations":0,
1272
               "wr_total_times_ns":0
1273
               "rd_total_times_ns":0
1274
               "flush_total_times_ns":0
1275
            }
1276
         },
1277
         {
1278
            "device":"sd0",
1279
            "stats":{
1280
               "wr_highest_offset":0,
1281
               "wr_bytes":0,
1282
               "wr_operations":0,
1283
               "rd_bytes":0,
1284
               "rd_operations":0
1285
               "flush_operations":0,
1286
               "wr_total_times_ns":0
1287
               "rd_total_times_ns":0
1288
               "flush_total_times_ns":0
1289
            }
1290
         }
1291
      ]
1292
   }
1293

    
1294
EQMP
1295

    
1296
SQMP
1297
query-cpus
1298
----------
1299

    
1300
Show CPU information.
1301

    
1302
Return a json-array. Each CPU is represented by a json-object, which contains:
1303

    
1304
- "CPU": CPU index (json-int)
1305
- "current": true if this is the current CPU, false otherwise (json-bool)
1306
- "halted": true if the cpu is halted, false otherwise (json-bool)
1307
- Current program counter. The key's name depends on the architecture:
1308
     "pc": i386/x86_64 (json-int)
1309
     "nip": PPC (json-int)
1310
     "pc" and "npc": sparc (json-int)
1311
     "PC": mips (json-int)
1312
- "thread_id": ID of the underlying host thread (json-int)
1313

    
1314
Example:
1315

    
1316
-> { "execute": "query-cpus" }
1317
<- {
1318
      "return":[
1319
         {
1320
            "CPU":0,
1321
            "current":true,
1322
            "halted":false,
1323
            "pc":3227107138
1324
            "thread_id":3134
1325
         },
1326
         {
1327
            "CPU":1,
1328
            "current":false,
1329
            "halted":true,
1330
            "pc":7108165
1331
            "thread_id":3135
1332
         }
1333
      ]
1334
   }
1335

    
1336
EQMP
1337

    
1338
SQMP
1339
query-pci
1340
---------
1341

    
1342
PCI buses and devices information.
1343

    
1344
The returned value is a json-array of all buses. Each bus is represented by
1345
a json-object, which has a key with a json-array of all PCI devices attached
1346
to it. Each device is represented by a json-object.
1347

    
1348
The bus json-object contains the following:
1349

    
1350
- "bus": bus number (json-int)
1351
- "devices": a json-array of json-objects, each json-object represents a
1352
             PCI device
1353

    
1354
The PCI device json-object contains the following:
1355

    
1356
- "bus": identical to the parent's bus number (json-int)
1357
- "slot": slot number (json-int)
1358
- "function": function number (json-int)
1359
- "class_info": a json-object containing:
1360
     - "desc": device class description (json-string, optional)
1361
     - "class": device class number (json-int)
1362
- "id": a json-object containing:
1363
     - "device": device ID (json-int)
1364
     - "vendor": vendor ID (json-int)
1365
- "irq": device's IRQ if assigned (json-int, optional)
1366
- "qdev_id": qdev id string (json-string)
1367
- "pci_bridge": It's a json-object, only present if this device is a
1368
                PCI bridge, contains:
1369
     - "bus": bus number (json-int)
1370
     - "secondary": secondary bus number (json-int)
1371
     - "subordinate": subordinate bus number (json-int)
1372
     - "io_range": I/O memory range information, a json-object with the
1373
                   following members:
1374
                 - "base": base address, in bytes (json-int)
1375
                 - "limit": limit address, in bytes (json-int)
1376
     - "memory_range": memory range information, a json-object with the
1377
                       following members:
1378
                 - "base": base address, in bytes (json-int)
1379
                 - "limit": limit address, in bytes (json-int)
1380
     - "prefetchable_range": Prefetchable memory range information, a
1381
                             json-object with the following members:
1382
                 - "base": base address, in bytes (json-int)
1383
                 - "limit": limit address, in bytes (json-int)
1384
     - "devices": a json-array of PCI devices if there's any attached, each
1385
                  each element is represented by a json-object, which contains
1386
                  the same members of the 'PCI device json-object' described
1387
                  above (optional)
1388
- "regions": a json-array of json-objects, each json-object represents a
1389
             memory region of this device
1390

    
1391
The memory range json-object contains the following:
1392

    
1393
- "base": base memory address (json-int)
1394
- "limit": limit value (json-int)
1395

    
1396
The region json-object can be an I/O region or a memory region, an I/O region
1397
json-object contains the following:
1398

    
1399
- "type": "io" (json-string, fixed)
1400
- "bar": BAR number (json-int)
1401
- "address": memory address (json-int)
1402
- "size": memory size (json-int)
1403

    
1404
A memory region json-object contains the following:
1405

    
1406
- "type": "memory" (json-string, fixed)
1407
- "bar": BAR number (json-int)
1408
- "address": memory address (json-int)
1409
- "size": memory size (json-int)
1410
- "mem_type_64": true or false (json-bool)
1411
- "prefetch": true or false (json-bool)
1412

    
1413
Example:
1414

    
1415
-> { "execute": "query-pci" }
1416
<- {
1417
      "return":[
1418
         {
1419
            "bus":0,
1420
            "devices":[
1421
               {
1422
                  "bus":0,
1423
                  "qdev_id":"",
1424
                  "slot":0,
1425
                  "class_info":{
1426
                     "class":1536,
1427
                     "desc":"Host bridge"
1428
                  },
1429
                  "id":{
1430
                     "device":32902,
1431
                     "vendor":4663
1432
                  },
1433
                  "function":0,
1434
                  "regions":[
1435
   
1436
                  ]
1437
               },
1438
               {
1439
                  "bus":0,
1440
                  "qdev_id":"",
1441
                  "slot":1,
1442
                  "class_info":{
1443
                     "class":1537,
1444
                     "desc":"ISA bridge"
1445
                  },
1446
                  "id":{
1447
                     "device":32902,
1448
                     "vendor":28672
1449
                  },
1450
                  "function":0,
1451
                  "regions":[
1452
   
1453
                  ]
1454
               },
1455
               {
1456
                  "bus":0,
1457
                  "qdev_id":"",
1458
                  "slot":1,
1459
                  "class_info":{
1460
                     "class":257,
1461
                     "desc":"IDE controller"
1462
                  },
1463
                  "id":{
1464
                     "device":32902,
1465
                     "vendor":28688
1466
                  },
1467
                  "function":1,
1468
                  "regions":[
1469
                     {
1470
                        "bar":4,
1471
                        "size":16,
1472
                        "address":49152,
1473
                        "type":"io"
1474
                     }
1475
                  ]
1476
               },
1477
               {
1478
                  "bus":0,
1479
                  "qdev_id":"",
1480
                  "slot":2,
1481
                  "class_info":{
1482
                     "class":768,
1483
                     "desc":"VGA controller"
1484
                  },
1485
                  "id":{
1486
                     "device":4115,
1487
                     "vendor":184
1488
                  },
1489
                  "function":0,
1490
                  "regions":[
1491
                     {
1492
                        "prefetch":true,
1493
                        "mem_type_64":false,
1494
                        "bar":0,
1495
                        "size":33554432,
1496
                        "address":4026531840,
1497
                        "type":"memory"
1498
                     },
1499
                     {
1500
                        "prefetch":false,
1501
                        "mem_type_64":false,
1502
                        "bar":1,
1503
                        "size":4096,
1504
                        "address":4060086272,
1505
                        "type":"memory"
1506
                     },
1507
                     {
1508
                        "prefetch":false,
1509
                        "mem_type_64":false,
1510
                        "bar":6,
1511
                        "size":65536,
1512
                        "address":-1,
1513
                        "type":"memory"
1514
                     }
1515
                  ]
1516
               },
1517
               {
1518
                  "bus":0,
1519
                  "qdev_id":"",
1520
                  "irq":11,
1521
                  "slot":4,
1522
                  "class_info":{
1523
                     "class":1280,
1524
                     "desc":"RAM controller"
1525
                  },
1526
                  "id":{
1527
                     "device":6900,
1528
                     "vendor":4098
1529
                  },
1530
                  "function":0,
1531
                  "regions":[
1532
                     {
1533
                        "bar":0,
1534
                        "size":32,
1535
                        "address":49280,
1536
                        "type":"io"
1537
                     }
1538
                  ]
1539
               }
1540
            ]
1541
         }
1542
      ]
1543
   }
1544

    
1545
Note: This example has been shortened as the real response is too long.
1546

    
1547
EQMP
1548

    
1549
SQMP
1550
query-kvm
1551
---------
1552

    
1553
Show KVM information.
1554

    
1555
Return a json-object with the following information:
1556

    
1557
- "enabled": true if KVM support is enabled, false otherwise (json-bool)
1558
- "present": true if QEMU has KVM support, false otherwise (json-bool)
1559

    
1560
Example:
1561

    
1562
-> { "execute": "query-kvm" }
1563
<- { "return": { "enabled": true, "present": true } }
1564

    
1565
EQMP
1566

    
1567
SQMP
1568
query-status
1569
------------
1570

    
1571
Return a json-object with the following information:
1572

    
1573
- "running": true if the VM is running, or false if it is paused (json-bool)
1574
- "singlestep": true if the VM is in single step mode,
1575
                false otherwise (json-bool)
1576
- "status": one of the following values (json-string)
1577
    "debug" - QEMU is running on a debugger
1578
    "inmigrate" - guest is paused waiting for an incoming migration
1579
    "internal-error" - An internal error that prevents further guest
1580
    execution has occurred
1581
    "io-error" - the last IOP has failed and the device is configured
1582
    to pause on I/O errors
1583
    "paused" - guest has been paused via the 'stop' command
1584
    "postmigrate" - guest is paused following a successful 'migrate'
1585
    "prelaunch" - QEMU was started with -S and guest has not started
1586
    "finish-migrate" - guest is paused to finish the migration process
1587
    "restore-vm" - guest is paused to restore VM state
1588
    "running" - guest is actively running
1589
    "save-vm" - guest is paused to save the VM state
1590
    "shutdown" - guest is shut down (and -no-shutdown is in use)
1591
    "watchdog" - the watchdog action is configured to pause and
1592
     has been triggered
1593

    
1594
Example:
1595

    
1596
-> { "execute": "query-status" }
1597
<- { "return": { "running": true, "singlestep": false, "status": "running" } }
1598

    
1599
EQMP
1600

    
1601
SQMP
1602
query-mice
1603
----------
1604

    
1605
Show VM mice information.
1606

    
1607
Each mouse is represented by a json-object, the returned value is a json-array
1608
of all mice.
1609

    
1610
The mouse json-object contains the following:
1611

    
1612
- "name": mouse's name (json-string)
1613
- "index": mouse's index (json-int)
1614
- "current": true if this mouse is receiving events, false otherwise (json-bool)
1615
- "absolute": true if the mouse generates absolute input events (json-bool)
1616

    
1617
Example:
1618

    
1619
-> { "execute": "query-mice" }
1620
<- {
1621
      "return":[
1622
         {
1623
            "name":"QEMU Microsoft Mouse",
1624
            "index":0,
1625
            "current":false,
1626
            "absolute":false
1627
         },
1628
         {
1629
            "name":"QEMU PS/2 Mouse",
1630
            "index":1,
1631
            "current":true,
1632
            "absolute":true
1633
         }
1634
      ]
1635
   }
1636

    
1637
EQMP
1638

    
1639
SQMP
1640
query-vnc
1641
---------
1642

    
1643
Show VNC server information.
1644

    
1645
Return a json-object with server information. Connected clients are returned
1646
as a json-array of json-objects.
1647

    
1648
The main json-object contains the following:
1649

    
1650
- "enabled": true or false (json-bool)
1651
- "host": server's IP address (json-string)
1652
- "family": address family (json-string)
1653
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
1654
- "service": server's port number (json-string)
1655
- "auth": authentication method (json-string)
1656
         - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
1657
                            "tls", "ultra", "unknown", "vencrypt", "vencrypt",
1658
                            "vencrypt+plain", "vencrypt+tls+none",
1659
                            "vencrypt+tls+plain", "vencrypt+tls+sasl",
1660
                            "vencrypt+tls+vnc", "vencrypt+x509+none",
1661
                            "vencrypt+x509+plain", "vencrypt+x509+sasl",
1662
                            "vencrypt+x509+vnc", "vnc"
1663
- "clients": a json-array of all connected clients
1664

    
1665
Clients are described by a json-object, each one contain the following:
1666

    
1667
- "host": client's IP address (json-string)
1668
- "family": address family (json-string)
1669
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
1670
- "service": client's port number (json-string)
1671
- "x509_dname": TLS dname (json-string, optional)
1672
- "sasl_username": SASL username (json-string, optional)
1673

    
1674
Example:
1675

    
1676
-> { "execute": "query-vnc" }
1677
<- {
1678
      "return":{
1679
         "enabled":true,
1680
         "host":"0.0.0.0",
1681
         "service":"50402",
1682
         "auth":"vnc",
1683
         "family":"ipv4",
1684
         "clients":[
1685
            {
1686
               "host":"127.0.0.1",
1687
               "service":"50401",
1688
               "family":"ipv4"
1689
            }
1690
         ]
1691
      }
1692
   }
1693

    
1694
EQMP
1695

    
1696
SQMP
1697
query-spice
1698
-----------
1699

    
1700
Show SPICE server information.
1701

    
1702
Return a json-object with server information. Connected clients are returned
1703
as a json-array of json-objects.
1704

    
1705
The main json-object contains the following:
1706

    
1707
- "enabled": true or false (json-bool)
1708
- "host": server's IP address (json-string)
1709
- "port": server's port number (json-int, optional)
1710
- "tls-port": server's port number (json-int, optional)
1711
- "auth": authentication method (json-string)
1712
         - Possible values: "none", "spice"
1713
- "channels": a json-array of all active channels clients
1714

    
1715
Channels are described by a json-object, each one contain the following:
1716

    
1717
- "host": client's IP address (json-string)
1718
- "family": address family (json-string)
1719
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
1720
- "port": client's port number (json-string)
1721
- "connection-id": spice connection id.  All channels with the same id
1722
                   belong to the same spice session (json-int)
1723
- "channel-type": channel type.  "1" is the main control channel, filter for
1724
                  this one if you want track spice sessions only (json-int)
1725
- "channel-id": channel id.  Usually "0", might be different needed when
1726
                multiple channels of the same type exist, such as multiple
1727
                display channels in a multihead setup (json-int)
1728
- "tls": whevener the channel is encrypted (json-bool)
1729

    
1730
Example:
1731

    
1732
-> { "execute": "query-spice" }
1733
<- {
1734
      "return": {
1735
         "enabled": true,
1736
         "auth": "spice",
1737
         "port": 5920,
1738
         "tls-port": 5921,
1739
         "host": "0.0.0.0",
1740
         "channels": [
1741
            {
1742
               "port": "54924",
1743
               "family": "ipv4",
1744
               "channel-type": 1,
1745
               "connection-id": 1804289383,
1746
               "host": "127.0.0.1",
1747
               "channel-id": 0,
1748
               "tls": true
1749
            },
1750
            {
1751
               "port": "36710",
1752
               "family": "ipv4",
1753
               "channel-type": 4,
1754
               "connection-id": 1804289383,
1755
               "host": "127.0.0.1",
1756
               "channel-id": 0,
1757
               "tls": false
1758
            },
1759
            [ ... more channels follow ... ]
1760
         ]
1761
      }
1762
   }
1763

    
1764
EQMP
1765

    
1766
SQMP
1767
query-name
1768
----------
1769

    
1770
Show VM name.
1771

    
1772
Return a json-object with the following information:
1773

    
1774
- "name": VM's name (json-string, optional)
1775

    
1776
Example:
1777

    
1778
-> { "execute": "query-name" }
1779
<- { "return": { "name": "qemu-name" } }
1780

    
1781
EQMP
1782

    
1783
    {
1784
        .name       = "query-name",
1785
        .args_type  = "",
1786
        .mhandler.cmd_new = qmp_marshal_input_query_name,
1787
    },
1788

    
1789
SQMP
1790
query-uuid
1791
----------
1792

    
1793
Show VM UUID.
1794

    
1795
Return a json-object with the following information:
1796

    
1797
- "UUID": Universally Unique Identifier (json-string)
1798

    
1799
Example:
1800

    
1801
-> { "execute": "query-uuid" }
1802
<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
1803

    
1804
EQMP
1805

    
1806
SQMP
1807
query-migrate
1808
-------------
1809

    
1810
Migration status.
1811

    
1812
Return a json-object. If migration is active there will be another json-object
1813
with RAM migration status and if block migration is active another one with
1814
block migration status.
1815

    
1816
The main json-object contains the following:
1817

    
1818
- "status": migration status (json-string)
1819
     - Possible values: "active", "completed", "failed", "cancelled"
1820
- "ram": only present if "status" is "active", it is a json-object with the
1821
  following RAM information (in bytes):
1822
         - "transferred": amount transferred (json-int)
1823
         - "remaining": amount remaining (json-int)
1824
         - "total": total (json-int)
1825
- "disk": only present if "status" is "active" and it is a block migration,
1826
  it is a json-object with the following disk information (in bytes):
1827
         - "transferred": amount transferred (json-int)
1828
         - "remaining": amount remaining (json-int)
1829
         - "total": total (json-int)
1830

    
1831
Examples:
1832

    
1833
1. Before the first migration
1834

    
1835
-> { "execute": "query-migrate" }
1836
<- { "return": {} }
1837

    
1838
2. Migration is done and has succeeded
1839

    
1840
-> { "execute": "query-migrate" }
1841
<- { "return": { "status": "completed" } }
1842

    
1843
3. Migration is done and has failed
1844

    
1845
-> { "execute": "query-migrate" }
1846
<- { "return": { "status": "failed" } }
1847

    
1848
4. Migration is being performed and is not a block migration:
1849

    
1850
-> { "execute": "query-migrate" }
1851
<- {
1852
      "return":{
1853
         "status":"active",
1854
         "ram":{
1855
            "transferred":123,
1856
            "remaining":123,
1857
            "total":246
1858
         }
1859
      }
1860
   }
1861

    
1862
5. Migration is being performed and is a block migration:
1863

    
1864
-> { "execute": "query-migrate" }
1865
<- {
1866
      "return":{
1867
         "status":"active",
1868
         "ram":{
1869
            "total":1057024,
1870
            "remaining":1053304,
1871
            "transferred":3720
1872
         },
1873
         "disk":{
1874
            "total":20971520,
1875
            "remaining":20880384,
1876
            "transferred":91136
1877
         }
1878
      }
1879
   }
1880

    
1881
EQMP
1882

    
1883
SQMP
1884
query-balloon
1885
-------------
1886

    
1887
Show balloon information.
1888

    
1889
Make an asynchronous request for balloon info. When the request completes a
1890
json-object will be returned containing the following data:
1891

    
1892
- "actual": current balloon value in bytes (json-int)
1893
- "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
1894
- "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
1895
- "major_page_faults": Number of major faults (json-int, optional)
1896
- "minor_page_faults": Number of minor faults (json-int, optional)
1897
- "free_mem": Total amount of free and unused memory in
1898
              bytes (json-int, optional)
1899
- "total_mem": Total amount of available memory in bytes (json-int, optional)
1900

    
1901
Example:
1902

    
1903
-> { "execute": "query-balloon" }
1904
<- {
1905
      "return":{
1906
         "actual":1073741824,
1907
         "mem_swapped_in":0,
1908
         "mem_swapped_out":0,
1909
         "major_page_faults":142,
1910
         "minor_page_faults":239245,
1911
         "free_mem":1014185984,
1912
         "total_mem":1044668416
1913
      }
1914
   }
1915

    
1916
EQMP
1917