qemu_monitor_json.h 19.9 KB
Newer Older
D
Daniel P. Berrange 已提交
1 2 3
/*
 * qemu_monitor_json.h: interaction with QEMU monitor console
 *
4
 * Copyright (C) 2006-2009, 2011-2015 Red Hat, Inc.
D
Daniel P. Berrange 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17
 * Copyright (C) 2006 Daniel P. Berrange
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with this library.  If not, see
O
Osier Yang 已提交
19
 * <http://www.gnu.org/licenses/>.
D
Daniel P. Berrange 已提交
20 21 22 23 24 25
 *
 * Author: Daniel P. Berrange <berrange@redhat.com>
 */


#ifndef QEMU_MONITOR_JSON_H
26
# define QEMU_MONITOR_JSON_H
D
Daniel P. Berrange 已提交
27

28
# include "internal.h"
D
Daniel P. Berrange 已提交
29

30
# include "qemu_monitor.h"
31
# include "virbitmap.h"
32
# include "cpu/cpu.h"
D
Daniel P. Berrange 已提交
33 34 35 36 37 38

int qemuMonitorJSONIOProcess(qemuMonitorPtr mon,
                             const char *data,
                             size_t len,
                             qemuMonitorMessagePtr msg);

39 40 41 42 43
int qemuMonitorJSONHumanCommandWithFd(qemuMonitorPtr mon,
                                      const char *cmd,
                                      int scm_fd,
                                      char **reply);

44 45
int qemuMonitorJSONSetCapabilities(qemuMonitorPtr mon);

D
Daniel P. Berrange 已提交
46 47 48
int qemuMonitorJSONStartCPUs(qemuMonitorPtr mon,
                             virConnectPtr conn);
int qemuMonitorJSONStopCPUs(qemuMonitorPtr mon);
49 50 51
int qemuMonitorJSONGetStatus(qemuMonitorPtr mon,
                             bool *running,
                             virDomainPausedReason *reason);
D
Daniel P. Berrange 已提交
52 53

int qemuMonitorJSONSystemPowerdown(qemuMonitorPtr mon);
54
int qemuMonitorJSONSystemReset(qemuMonitorPtr mon);
D
Daniel P. Berrange 已提交
55 56 57

int qemuMonitorJSONGetCPUInfo(qemuMonitorPtr mon,
                              int **pids);
58 59
int qemuMonitorJSONGetVirtType(qemuMonitorPtr mon,
                               int *virtType);
60 61 62
int qemuMonitorJSONUpdateVideoMemorySize(qemuMonitorPtr mon,
                                         virDomainVideoDefPtr video,
                                         char *path);
D
Daniel P. Berrange 已提交
63
int qemuMonitorJSONGetBalloonInfo(qemuMonitorPtr mon,
64
                                  unsigned long long *currmem);
65
int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
66
                                  char *balloonpath,
67 68
                                  virDomainMemoryStatPtr stats,
                                  unsigned int nr_stats);
69 70 71
int qemuMonitorJSONSetMemoryStatsPeriod(qemuMonitorPtr mon,
                                        char *balloonpath,
                                        int period);
72
int qemuMonitorJSONGetBlockInfo(qemuMonitorPtr mon,
73
                                virHashTablePtr table);
74
int qemuMonitorJSONGetAllBlockStatsInfo(qemuMonitorPtr mon,
75
                                        virHashTablePtr hash,
76
                                        bool backingChain);
77
int qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitorPtr mon,
78 79
                                            virHashTablePtr stats,
                                            bool backingChain);
80 81 82
int qemuMonitorJSONBlockResize(qemuMonitorPtr mon,
                               const char *devce,
                               unsigned long long size);
D
Daniel P. Berrange 已提交
83 84 85

int qemuMonitorJSONSetVNCPassword(qemuMonitorPtr mon,
                                  const char *password);
86 87 88 89 90 91 92
int qemuMonitorJSONSetPassword(qemuMonitorPtr mon,
                               const char *protocol,
                               const char *password,
                               const char *action_if_connected);
int qemuMonitorJSONExpirePassword(qemuMonitorPtr mon,
                                  const char *protocol,
                                  const char *expire_time);
D
Daniel P. Berrange 已提交
93
int qemuMonitorJSONSetBalloon(qemuMonitorPtr mon,
94
                              unsigned long long newmem);
95
int qemuMonitorJSONSetCPU(qemuMonitorPtr mon, int cpu, bool online);
D
Daniel P. Berrange 已提交
96 97

int qemuMonitorJSONEjectMedia(qemuMonitorPtr mon,
98
                              const char *dev_name,
99
                              bool force);
D
Daniel P. Berrange 已提交
100
int qemuMonitorJSONChangeMedia(qemuMonitorPtr mon,
101
                               const char *dev_name,
D
Daniel P. Berrange 已提交
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
                               const char *newmedia,
                               const char *format);


int qemuMonitorJSONSaveVirtualMemory(qemuMonitorPtr mon,
                                     unsigned long long offset,
                                     size_t length,
                                     const char *path);
int qemuMonitorJSONSavePhysicalMemory(qemuMonitorPtr mon,
                                      unsigned long long offset,
                                      size_t length,
                                      const char *path);

int qemuMonitorJSONSetMigrationSpeed(qemuMonitorPtr mon,
                                     unsigned long bandwidth);

118 119 120
int qemuMonitorJSONSetMigrationDowntime(qemuMonitorPtr mon,
                                        unsigned long long downtime);

121 122 123 124 125
int qemuMonitorJSONGetMigrationCacheSize(qemuMonitorPtr mon,
                                         unsigned long long *cacheSize);
int qemuMonitorJSONSetMigrationCacheSize(qemuMonitorPtr mon,
                                         unsigned long long cacheSize);

D
Daniel P. Berrange 已提交
126
int qemuMonitorJSONGetMigrationStatus(qemuMonitorPtr mon,
127
                                      qemuMonitorMigrationStatusPtr status);
D
Daniel P. Berrange 已提交
128

129 130
int qemuMonitorJSONGetMigrationCapabilities(qemuMonitorPtr mon,
                                            char ***capabilities);
131 132 133
int qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon,
                                          qemuMonitorMigrationCaps capability);
int qemuMonitorJSONSetMigrationCapability(qemuMonitorPtr mon,
134 135
                                          qemuMonitorMigrationCaps capability,
                                          bool state);
136

137 138 139
int qemuMonitorJSONMigrate(qemuMonitorPtr mon,
                           unsigned int flags,
                           const char *uri);
140 141 142
int qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitorPtr mon,
                                           bool *spice_migrated);

D
Daniel P. Berrange 已提交
143 144 145

int qemuMonitorJSONMigrateCancel(qemuMonitorPtr mon);

146 147 148
int qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitorPtr mon,
                                                const char *capability);

149
int qemuMonitorJSONDump(qemuMonitorPtr mon,
150 151
                        const char *protocol,
                        const char *dumpformat);
152

153 154 155 156 157 158 159
int qemuMonitorJSONGraphicsRelocate(qemuMonitorPtr mon,
                                    int type,
                                    const char *hostname,
                                    int port,
                                    int tlsPort,
                                    const char *tlsSubject);

D
Daniel P. Berrange 已提交
160 161 162 163 164 165 166 167 168 169 170 171
int qemuMonitorJSONAddUSBDisk(qemuMonitorPtr mon,
                              const char *path);

int qemuMonitorJSONAddUSBDeviceExact(qemuMonitorPtr mon,
                                     int bus,
                                     int dev);
int qemuMonitorJSONAddUSBDeviceMatch(qemuMonitorPtr mon,
                                     int vendor,
                                     int product);


int qemuMonitorJSONAddPCIHostDevice(qemuMonitorPtr mon,
172 173
                                    virDevicePCIAddress *hostAddr,
                                    virDevicePCIAddress *guestAddr);
D
Daniel P. Berrange 已提交
174 175 176 177

int qemuMonitorJSONAddPCIDisk(qemuMonitorPtr mon,
                              const char *path,
                              const char *bus,
178
                              virDevicePCIAddress *guestAddr);
D
Daniel P. Berrange 已提交
179 180 181

int qemuMonitorJSONAddPCINetwork(qemuMonitorPtr mon,
                                 const char *nicstr,
182
                                 virDevicePCIAddress *guestAddr);
D
Daniel P. Berrange 已提交
183 184

int qemuMonitorJSONRemovePCIDevice(qemuMonitorPtr mon,
185
                                   virDevicePCIAddress *guestAddr);
D
Daniel P. Berrange 已提交
186 187 188 189

int qemuMonitorJSONSendFileHandle(qemuMonitorPtr mon,
                                  const char *fdname,
                                  int fd);
190 191
int qemuMonitorJSONAddFd(qemuMonitorPtr mon, int fdset, int fd,
                         const char *name);
D
Daniel P. Berrange 已提交
192 193 194

int qemuMonitorJSONCloseFileHandle(qemuMonitorPtr mon,
                                   const char *fdname);
195
int qemuMonitorJSONRemoveFd(qemuMonitorPtr mon, int fdset, int fd);
D
Daniel P. Berrange 已提交
196

197 198 199 200 201 202
int qemuMonitorJSONAddNetdev(qemuMonitorPtr mon,
                             const char *netdevstr);

int qemuMonitorJSONRemoveNetdev(qemuMonitorPtr mon,
                                const char *alias);

203 204 205
int qemuMonitorJSONQueryRxFilter(qemuMonitorPtr mon, const char *alias,
                                 virNetDevRxFilterPtr *filter);

206 207
int qemuMonitorJSONGetChardevInfo(qemuMonitorPtr mon,
                                  virHashTablePtr info);
208

209 210
int qemuMonitorJSONAttachPCIDiskController(qemuMonitorPtr mon,
                                           const char *bus,
211
                                           virDevicePCIAddress *guestAddr);
212

213 214 215
int qemuMonitorJSONGetAllPCIAddresses(qemuMonitorPtr mon,
                                      qemuMonitorPCIAddress **addrs);

216 217 218
int qemuMonitorJSONAddDevice(qemuMonitorPtr mon,
                             const char *devicestr);

219
int qemuMonitorJSONDelDevice(qemuMonitorPtr mon,
220
                             const char *devalias);
221

222 223 224 225 226 227 228 229
int qemuMonitorJSONAddObject(qemuMonitorPtr mon,
                             const char *type,
                             const char *objalias,
                             virJSONValuePtr props);

int qemuMonitorJSONDelObject(qemuMonitorPtr mon,
                             const char *objalias);

230 231 232
int qemuMonitorJSONAddDrive(qemuMonitorPtr mon,
                            const char *drivestr);

233
int qemuMonitorJSONDriveDel(qemuMonitorPtr mon,
234 235
                            const char *drivestr);

236 237 238 239
int qemuMonitorJSONSetDrivePassphrase(qemuMonitorPtr mon,
                                      const char *alias,
                                      const char *passphrase);

C
Chris Lalancette 已提交
240 241 242 243
int qemuMonitorJSONCreateSnapshot(qemuMonitorPtr mon, const char *name);
int qemuMonitorJSONLoadSnapshot(qemuMonitorPtr mon, const char *name);
int qemuMonitorJSONDeleteSnapshot(qemuMonitorPtr mon, const char *name);

244
int qemuMonitorJSONDiskSnapshot(qemuMonitorPtr mon,
245
                                virJSONValuePtr actions,
246
                                const char *device,
247 248
                                const char *file,
                                const char *format,
249 250 251 252 253 254 255 256 257 258
                                bool reuse)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3)
    ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5);
int qemuMonitorJSONTransaction(qemuMonitorPtr mon, virJSONValuePtr actions)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int qemuMonitorJSONDriveMirror(qemuMonitorPtr mon,
                               const char *device,
                               const char *file,
                               const char *format,
                               unsigned long long speed,
259 260
                               unsigned int granularity,
                               unsigned long long buf_size,
261 262 263
                               unsigned int flags)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
int qemuMonitorJSONDrivePivot(qemuMonitorPtr mon,
264
                              const char *device)
265
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
266

267 268 269 270
int qemuMonitorJSONBlockCommit(qemuMonitorPtr mon,
                               const char *device,
                               const char *top,
                               const char *base,
271
                               const char *backingName,
272
                               unsigned long long bandwidth)
273
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
274

275 276 277 278 279 280 281
char *qemuMonitorJSONDiskNameLookup(qemuMonitorPtr mon,
                                    const char *device,
                                    virStorageSourcePtr top,
                                    virStorageSourcePtr target)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
    ATTRIBUTE_NONNULL(4);

282 283
int qemuMonitorJSONArbitraryCommand(qemuMonitorPtr mon,
                                    const char *cmd_str,
284 285
                                    char **reply_str,
                                    bool hmp);
286

287
int qemuMonitorJSONInjectNMI(qemuMonitorPtr mon);
288

289 290 291 292 293
int qemuMonitorJSONSendKey(qemuMonitorPtr mon,
                           unsigned int holdtime,
                           unsigned int *keycodes,
                           unsigned int nkeycodes);

294 295 296
int qemuMonitorJSONScreendump(qemuMonitorPtr mon,
                              const char *file);

297 298 299 300 301 302
int qemuMonitorJSONBlockStream(qemuMonitorPtr mon,
                               const char *device,
                               const char *base,
                               const char *backingName,
                               unsigned long long speed,
                               bool modern)
303
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
304

305 306 307 308 309
int qemuMonitorJSONBlockJobCancel(qemuMonitorPtr mon,
                                  const char *device,
                                  bool modern)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

310 311 312 313 314 315
int qemuMonitorJSONBlockJobSetSpeed(qemuMonitorPtr mon,
                                    const char *device,
                                    unsigned long long speed,
                                    bool modern)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

316 317
virHashTablePtr qemuMonitorJSONGetAllBlockJobInfo(qemuMonitorPtr mon)
    ATTRIBUTE_NONNULL(1);
318

319 320
int qemuMonitorJSONSetLink(qemuMonitorPtr mon,
                           const char *name,
321
                           virDomainNetInterfaceLinkState state);
322

323 324 325 326 327
int qemuMonitorJSONOpenGraphics(qemuMonitorPtr mon,
                                const char *protocol,
                                const char *fdname,
                                bool skipauth);

328 329
int qemuMonitorJSONSetBlockIoThrottle(qemuMonitorPtr mon,
                                      const char *device,
330 331
                                      virDomainBlockIoTuneInfoPtr info,
                                      bool supportMaxOptions);
332 333 334

int qemuMonitorJSONGetBlockIoThrottle(qemuMonitorPtr mon,
                                      const char *device,
335 336
                                      virDomainBlockIoTuneInfoPtr reply,
                                      bool supportMaxOptions);
337

338 339
int qemuMonitorJSONSystemWakeup(qemuMonitorPtr mon);

340 341 342 343 344 345 346
int qemuMonitorJSONGetVersion(qemuMonitorPtr mon,
                              int *major,
                              int *minor,
                              int *micro,
                              char **package)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

347 348 349 350
int qemuMonitorJSONGetMachines(qemuMonitorPtr mon,
                               qemuMonitorMachineInfoPtr **machines)
    ATTRIBUTE_NONNULL(2);

351 352 353 354
int qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
                                     char ***cpus)
    ATTRIBUTE_NONNULL(2);

355 356 357
int qemuMonitorJSONGetCommands(qemuMonitorPtr mon,
                               char ***commands)
    ATTRIBUTE_NONNULL(2);
358 359 360
int qemuMonitorJSONGetEvents(qemuMonitorPtr mon,
                             char ***events)
    ATTRIBUTE_NONNULL(2);
361 362
int qemuMonitorJSONGetCommandLineOptionParameters(qemuMonitorPtr mon,
                                                  const char *option,
363 364
                                                  char ***params,
                                                  bool *found)
365
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
366

367 368 369 370 371
int qemuMonitorJSONGetKVMState(qemuMonitorPtr mon,
                               bool *enabled,
                               bool *present)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);

372 373 374
int qemuMonitorJSONGetObjectTypes(qemuMonitorPtr mon,
                                  char ***types)
    ATTRIBUTE_NONNULL(2);
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391

/* ListPath structures and API's are public only for qemumonitorjsontest */
typedef struct _qemuMonitorJSONListPath qemuMonitorJSONListPath;
typedef qemuMonitorJSONListPath *qemuMonitorJSONListPathPtr;

struct _qemuMonitorJSONListPath {
    char *name;
    char *type;
};

int qemuMonitorJSONGetObjectListPaths(qemuMonitorPtr mon,
                                      const char *path,
                                      qemuMonitorJSONListPathPtr **paths)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);

void qemuMonitorJSONListPathFree(qemuMonitorJSONListPathPtr paths);

392 393 394
/* ObjectProperty structures and Get/Set API's are public only
 * for qemumonitorjsontest
 */
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428
/* Flags for the 'type' field in _qemuMonitorJSONObjectProperty */
typedef enum {
    QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN=1,
    QEMU_MONITOR_OBJECT_PROPERTY_INT,
    QEMU_MONITOR_OBJECT_PROPERTY_LONG,
    QEMU_MONITOR_OBJECT_PROPERTY_UINT,
    QEMU_MONITOR_OBJECT_PROPERTY_ULONG,
    QEMU_MONITOR_OBJECT_PROPERTY_DOUBLE,
    QEMU_MONITOR_OBJECT_PROPERTY_STRING,

    QEMU_MONITOR_OBJECT_PROPERTY_LAST
} qemuMonitorJSONObjectPropertyType;

typedef struct _qemuMonitorJSONObjectProperty qemuMonitorJSONObjectProperty;
typedef qemuMonitorJSONObjectProperty *qemuMonitorJSONObjectPropertyPtr;
struct _qemuMonitorJSONObjectProperty {
    int type;    /* qemuMonitorJSONObjectPropertyType */
    union {
        bool b;
        int iv;
        long long l;
        unsigned int ui;
        unsigned long long ul;
        double d;
        char *str;
    } val;
};

int qemuMonitorJSONGetObjectProperty(qemuMonitorPtr mon,
                                     const char *path,
                                     const char *property,
                                     qemuMonitorJSONObjectPropertyPtr prop)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

429 430 431 432 433 434
int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon,
                                     const char *path,
                                     const char *property,
                                     qemuMonitorJSONObjectPropertyPtr prop)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);

435 436 437 438
int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon,
                                  const char *type,
                                  char ***props)
    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
439
char *qemuMonitorJSONGetTargetArch(qemuMonitorPtr mon);
440

441 442 443
int qemuMonitorJSONNBDServerStart(qemuMonitorPtr mon,
                                  const char *host,
                                  unsigned int port);
444 445 446
int qemuMonitorJSONNBDServerAdd(qemuMonitorPtr mon,
                                const char *deviceID,
                                bool writable);
447
int qemuMonitorJSONNBDServerStop(qemuMonitorPtr mon);
S
Stefan Berger 已提交
448 449 450 451 452 453 454 455
int qemuMonitorJSONGetTPMModels(qemuMonitorPtr mon,
                                char ***tpmmodels)
    ATTRIBUTE_NONNULL(2);

int qemuMonitorJSONGetTPMTypes(qemuMonitorPtr mon,
                               char ***tpmtypes)
    ATTRIBUTE_NONNULL(2);

456 457 458
int qemuMonitorJSONAttachCharDev(qemuMonitorPtr mon,
                                 const char *chrID,
                                 virDomainChrSourceDefPtr chr);
459 460
int qemuMonitorJSONDetachCharDev(qemuMonitorPtr mon,
                                 const char *chrID);
461 462 463 464

int qemuMonitorJSONGetDeviceAliases(qemuMonitorPtr mon,
                                    char ***aliases);

465 466 467
int qemuMonitorJSONGetGuestCPU(qemuMonitorPtr mon,
                               virArch arch,
                               virCPUDataPtr *data);
468 469

int qemuMonitorJSONRTCResetReinjection(qemuMonitorPtr mon);
470 471

int qemuMonitorJSONGetIOThreads(qemuMonitorPtr mon,
472
                                qemuMonitorIOThreadInfoPtr **iothreads)
473
    ATTRIBUTE_NONNULL(2);
474 475 476 477 478

int qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitorPtr mon,
                                       virHashTablePtr info)
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

479 480 481
int qemuMonitorJSONFindLinkPath(qemuMonitorPtr mon,
                                const char *name,
                                char **path)
482
    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
D
Daniel P. Berrange 已提交
483
#endif /* QEMU_MONITOR_JSON_H */