xref: /cloud-hypervisor/vmm/src/api/openapi/cloud-hypervisor.yaml (revision f6cd3bd86ded632da437b6dd6077f4237d2f71fe)
1openapi: 3.0.1
2info:
3  title: Cloud Hypervisor API
4  description: Local HTTP based API for managing and inspecting a cloud-hypervisor virtual machine.
5  license:
6    name: Apache 2.0
7    url: http://www.apache.org/licenses/LICENSE-2.0.html
8  version: 0.3.0
9
10servers:
11  - url: http://localhost/api/v1
12
13paths:
14  /vmm.ping:
15    get:
16      summary: Ping the VMM to check for API server availability
17      responses:
18        200:
19          description: The VMM information
20          content:
21            application/json:
22              schema:
23                $ref: "#/components/schemas/VmmPingResponse"
24
25  /vmm.shutdown:
26    put:
27      summary: Shuts the cloud-hypervisor VMM.
28      operationId: shutdownVMM
29      responses:
30        204:
31          description: The VMM successfully shutdown.
32
33  /vm.info:
34    get:
35      summary: Returns general information about the cloud-hypervisor Virtual Machine (VM) instance.
36      responses:
37        200:
38          description: The VM information
39          content:
40            application/json:
41              schema:
42                $ref: "#/components/schemas/VmInfo"
43
44  /vm.counters:
45    get:
46      summary: Get counters from the VM
47      responses:
48        200:
49          description: The VM counters
50          content:
51            application/json:
52              schema:
53                $ref: "#/components/schemas/VmCounters"
54
55  /vm.create:
56    put:
57      summary: Create the cloud-hypervisor Virtual Machine (VM) instance. The instance is not booted, only created.
58      operationId: createVM
59      requestBody:
60        description: The VM configuration
61        content:
62          application/json:
63            schema:
64              $ref: "#/components/schemas/VmConfig"
65        required: true
66      responses:
67        204:
68          description: The VM instance was successfully created.
69
70  /vm.delete:
71    put:
72      summary: Delete the cloud-hypervisor Virtual Machine (VM) instance.
73      operationId: deleteVM
74      responses:
75        204:
76          description: The VM instance was successfully deleted.
77
78  /vm.boot:
79    put:
80      summary: Boot the previously created VM instance.
81      operationId: bootVM
82      responses:
83        204:
84          description: The VM instance successfully booted.
85        404:
86          description: The VM instance could not boot because it is not created yet
87
88  /vm.pause:
89    put:
90      summary: Pause a previously booted VM instance.
91      operationId: pauseVM
92      responses:
93        204:
94          description: The VM instance successfully paused.
95        404:
96          description: The VM instance could not pause because it is not created yet
97        405:
98          description: The VM instance could not pause because it is not booted.
99
100  /vm.resume:
101    put:
102      summary: Resume a previously paused VM instance.
103      operationId: resumeVM
104      responses:
105        204:
106          description: The VM instance successfully paused.
107        404:
108          description: The VM instance could not resume because it is not booted yet
109        405:
110          description: The VM instance could not resume because it is not paused.
111
112  /vm.shutdown:
113    put:
114      summary: Shut the VM instance down.
115      operationId: shutdownVM
116      responses:
117        204:
118          description: The VM instance successfully shut down.
119        404:
120          description: The VM instance could not shut down because is not created.
121        405:
122          description: The VM instance could not shut down because it is not started.
123
124  /vm.reboot:
125    put:
126      summary: Reboot the VM instance.
127      operationId: rebootVM
128      responses:
129        204:
130          description: The VM instance successfully rebooted.
131        404:
132          description: The VM instance could not reboot because it is not created.
133        405:
134          description: The VM instance could not reboot because it is not booted.
135
136  /vm.power-button:
137    put:
138      summary: Trigger a power button in the VM
139      operationId: power-buttonVM
140      responses:
141        204:
142          description: Power button successfully triggered in the VM
143        404:
144          description: The button could not be triggered because it is not created yet
145        405:
146          description: The button could not be triggered because it is not booted.
147
148  /vm.resize:
149    put:
150      summary: Resize the VM
151      requestBody:
152        description: The target size for the VM
153        content:
154          application/json:
155            schema:
156              $ref: "#/components/schemas/VmResize"
157        required: true
158      responses:
159        204:
160          description: The VM instance was successfully resized.
161        404:
162          description: The VM instance could not be resized because it is not created.
163
164  /vm.resize-zone:
165    put:
166      summary: Resize a memory zone
167      requestBody:
168        description: The target size for the memory zone
169        content:
170          application/json:
171            schema:
172              $ref: "#/components/schemas/VmResizeZone"
173        required: true
174      responses:
175        204:
176          description: The memory zone was successfully resized.
177        500:
178          description: The memory zone could not be resized.
179
180  /vm.add-device:
181    put:
182      summary: Add a new device to the VM
183      requestBody:
184        description: The path of the new device
185        content:
186          application/json:
187            schema:
188              $ref: "#/components/schemas/DeviceConfig"
189        required: true
190      responses:
191        200:
192          description: The new device was successfully added to the VM instance.
193          content:
194            application/json:
195              schema:
196                $ref: "#/components/schemas/PciDeviceInfo"
197        204:
198          description: The new device was successfully (cold) added to the VM instance.
199        404:
200          description: The new device could not be added to the VM instance.
201
202  /vm.remove-device:
203    put:
204      summary: Remove a device from the VM
205      requestBody:
206        description: The identifier of the device
207        content:
208          application/json:
209            schema:
210              $ref: "#/components/schemas/VmRemoveDevice"
211        required: true
212      responses:
213        204:
214          description: The device was successfully removed from the VM instance.
215        404:
216          description: The device could not be removed from the VM instance.
217
218  /vm.add-disk:
219    put:
220      summary: Add a new disk to the VM
221      requestBody:
222        description: The details of the new disk
223        content:
224          application/json:
225            schema:
226              $ref: "#/components/schemas/DiskConfig"
227        required: true
228      responses:
229        200:
230          description: The new disk was successfully added to the VM instance.
231          content:
232            application/json:
233              schema:
234                $ref: "#/components/schemas/PciDeviceInfo"
235        204:
236          description: The new disk was successfully (cold) added to the VM instance.
237        500:
238          description: The new disk could not be added to the VM instance.
239
240  /vm.add-fs:
241    put:
242      summary: Add a new virtio-fs device to the VM
243      requestBody:
244        description: The details of the new virtio-fs
245        content:
246          application/json:
247            schema:
248              $ref: "#/components/schemas/FsConfig"
249        required: true
250      responses:
251        200:
252          description: The new device was successfully added to the VM instance.
253          content:
254            application/json:
255              schema:
256                $ref: "#/components/schemas/PciDeviceInfo"
257        204:
258          description: The new device was successfully (cold) added to the VM instance.
259        500:
260          description: The new device could not be added to the VM instance.
261
262  /vm.add-pmem:
263    put:
264      summary: Add a new pmem device to the VM
265      requestBody:
266        description: The details of the new pmem device
267        content:
268          application/json:
269            schema:
270              $ref: "#/components/schemas/PmemConfig"
271        required: true
272      responses:
273        200:
274          description: The new device was successfully added to the VM instance.
275          content:
276            application/json:
277              schema:
278                $ref: "#/components/schemas/PciDeviceInfo"
279        204:
280          description: The new device was successfully (cold) added to the VM instance.
281        500:
282          description: The new device could not be added to the VM instance.
283
284  /vm.add-net:
285    put:
286      summary: Add a new network device to the VM
287      requestBody:
288        description: The details of the new network device
289        content:
290          application/json:
291            schema:
292              $ref: "#/components/schemas/NetConfig"
293        required: true
294      responses:
295        200:
296          description: The new device was successfully added to the VM instance.
297          content:
298            application/json:
299              schema:
300                $ref: "#/components/schemas/PciDeviceInfo"
301        204:
302          description: The new device was successfully (cold) added to the VM instance.
303        500:
304          description: The new device could not be added to the VM instance.
305
306  /vm.add-vsock:
307    put:
308      summary: Add a new vsock device to the VM
309      requestBody:
310        description: The details of the new vsock device
311        content:
312          application/json:
313            schema:
314              $ref: "#/components/schemas/VsockConfig"
315        required: true
316      responses:
317        200:
318          description: The new device was successfully added to the VM instance.
319          content:
320            application/json:
321              schema:
322                $ref: "#/components/schemas/PciDeviceInfo"
323        204:
324          description: The new device was successfully (cold) added to the VM instance.
325        500:
326          description: The new device could not be added to the VM instance.
327
328  /vm.add-vdpa:
329    put:
330      summary: Add a new vDPA device to the VM
331      requestBody:
332        description: The details of the new vDPA device
333        content:
334          application/json:
335            schema:
336              $ref: "#/components/schemas/VdpaConfig"
337        required: true
338      responses:
339        200:
340          description: The new vDPA device was successfully added to the VM instance.
341          content:
342            application/json:
343              schema:
344                $ref: "#/components/schemas/PciDeviceInfo"
345        204:
346          description: The new vDPA device was successfully (cold) added to the VM instance.
347        500:
348          description: The new vDPA device could not be added to the VM instance.
349
350  /vm.add-user-device:
351    put:
352      requestBody:
353        content:
354          application/json:
355            schema:
356              $ref: '#/components/schemas/VmAddUserDevice'
357        description: The path of the new device
358        required: true
359      responses:
360        "200":
361          content:
362            application/json:
363              schema:
364                $ref: '#/components/schemas/PciDeviceInfo'
365          description: The new device was successfully added to the VM instance.
366        "204":
367          description: The new device was successfully (cold) added to the VM instance.
368        "404":
369          description: The new device could not be added to the VM instance.
370      summary: Add a new userspace device to the VM
371
372  /vm.snapshot:
373    put:
374      summary: Returns a VM snapshot.
375      requestBody:
376        description: The snapshot configuration
377        content:
378          application/json:
379            schema:
380              $ref: "#/components/schemas/VmSnapshotConfig"
381        required: true
382      responses:
383        204:
384          description: The VM instance was successfully snapshotted.
385        404:
386          description: The VM instance could not be snapshotted because it is not created.
387        405:
388          description: The VM instance could not be snapshotted because it is not booted.
389
390  /vm.coredump:
391    put:
392      summary: Takes a VM coredump.
393      requestBody:
394        description: The coredump configuration
395        content:
396          application/json:
397            schema:
398              $ref: "#/components/schemas/VmCoredumpData"
399        required: true
400      responses:
401        204:
402          description: The VM instance was successfully coredumped.
403        404:
404          description: The VM instance could not be coredumped because it is not created.
405        405:
406          description: The VM instance could not be coredumped because it is not booted.
407
408  /vmm.nmi:
409    put:
410      summary: Inject an NMI.
411      responses:
412        204:
413          description: The NMI successfully injected.
414
415  /vm.restore:
416    put:
417      summary: Restore a VM from a snapshot.
418      requestBody:
419        description: The restore configuration
420        content:
421          application/json:
422            schema:
423              $ref: "#/components/schemas/RestoreConfig"
424        required: true
425      responses:
426        204:
427          description: The VM instance was successfully restored.
428        404:
429          description: The VM instance could not be restored because it is already created.
430
431  /vm.receive-migration:
432    put:
433      summary: Receive a VM migration from URL
434      requestBody:
435        description: The URL for the reception of migration state
436        content:
437          application/json:
438            schema:
439              $ref: "#/components/schemas/ReceiveMigrationData"
440        required: true
441      responses:
442        204:
443          description: The VM migration was successfully received.
444        500:
445          description: The VM migration could not be received.
446
447  /vm.send-migration:
448    put:
449      summary: Send a VM migration to URL
450      requestBody:
451        description: The URL for sending the migration state
452        content:
453          application/json:
454            schema:
455              $ref: "#/components/schemas/SendMigrationData"
456        required: true
457      responses:
458        204:
459          description: The VM migration was successfully sent.
460        500:
461          description: The VM migration could not be sent.
462
463components:
464  schemas:
465    VmmPingResponse:
466      required:
467        - version
468      type: object
469      properties:
470        build_version:
471          type: string
472        version:
473          type: string
474        pid:
475          type: integer
476          format: int64
477        features:
478          type: array
479          items:
480            type: string
481      description: Virtual Machine Monitor information
482
483    VmInfo:
484      required:
485        - config
486        - state
487      type: object
488      properties:
489        config:
490          $ref: "#/components/schemas/VmConfig"
491        state:
492          type: string
493          enum: [Created, Running, Shutdown, Paused]
494        memory_actual_size:
495          type: integer
496          format: int64
497        device_tree:
498          type: object
499          additionalProperties:
500            $ref: "#/components/schemas/DeviceNode"
501      description: Virtual Machine information
502
503    DeviceNode:
504      type: object
505      properties:
506        id:
507          type: string
508        resources:
509          type: array
510          items:
511            # Rust enum type (with data) which can't be better represented here
512            type: object
513        children:
514          type: array
515          items:
516            type: string
517        pci_bdf:
518          type: string
519
520    VmCounters:
521      type: object
522      additionalProperties:
523        type: object
524        additionalProperties:
525          type: integer
526          format: int64
527
528    PciDeviceInfo:
529      required:
530        - id
531        - bdf
532      type: object
533      properties:
534        id:
535          type: string
536        bdf:
537          type: string
538      description: Information about a PCI device
539
540    PayloadConfig:
541      type: object
542      properties:
543        firmware:
544          type: string
545        kernel:
546          type: string
547        cmdline:
548          type: string
549        initramfs:
550          type: string
551      description: Payloads to boot in guest
552
553    VmConfig:
554      required:
555        - payload
556      type: object
557      properties:
558        cpus:
559          $ref: "#/components/schemas/CpusConfig"
560        memory:
561          $ref: "#/components/schemas/MemoryConfig"
562        payload:
563          $ref: "#/components/schemas/PayloadConfig"
564        rate_limit_groups:
565          type: array
566          items:
567            $ref: "#/components/schemas/RateLimitGroupConfig"
568        disks:
569          type: array
570          items:
571            $ref: "#/components/schemas/DiskConfig"
572        net:
573          type: array
574          items:
575            $ref: "#/components/schemas/NetConfig"
576        rng:
577          $ref: "#/components/schemas/RngConfig"
578        balloon:
579          $ref: "#/components/schemas/BalloonConfig"
580        fs:
581          type: array
582          items:
583            $ref: "#/components/schemas/FsConfig"
584        pmem:
585          type: array
586          items:
587            $ref: "#/components/schemas/PmemConfig"
588        serial:
589          $ref: "#/components/schemas/ConsoleConfig"
590        console:
591          $ref: "#/components/schemas/ConsoleConfig"
592        debug_console:
593          $ref: "#/components/schemas/DebugConsoleConfig"
594        devices:
595          type: array
596          items:
597            $ref: "#/components/schemas/DeviceConfig"
598        vdpa:
599          type: array
600          items:
601            $ref: "#/components/schemas/VdpaConfig"
602        vsock:
603          $ref: "#/components/schemas/VsockConfig"
604        sgx_epc:
605          type: array
606          items:
607            $ref: "#/components/schemas/SgxEpcConfig"
608        numa:
609          type: array
610          items:
611            $ref: "#/components/schemas/NumaConfig"
612        iommu:
613          type: boolean
614          default: false
615        watchdog:
616          type: boolean
617          default: false
618        pvpanic:
619          type: boolean
620          default: false
621        pci_segments:
622          type: array
623          items:
624            $ref: "#/components/schemas/PciSegmentConfig"
625        platform:
626          $ref: "#/components/schemas/PlatformConfig"
627        tpm:
628          $ref: "#/components/schemas/TpmConfig"
629      description: Virtual machine configuration
630
631    CpuAffinity:
632      required:
633        - vcpu
634        - host_cpus
635      type: object
636      properties:
637        vcpu:
638          type: integer
639        host_cpus:
640          type: array
641          items:
642            type: integer
643
644    CpuFeatures:
645      type: object
646      properties:
647        amx:
648          type: boolean
649
650    CpuTopology:
651      type: object
652      properties:
653        threads_per_core:
654          type: integer
655        cores_per_die:
656          type: integer
657        dies_per_package:
658          type: integer
659        packages:
660          type: integer
661
662    CpusConfig:
663      required:
664        - boot_vcpus
665        - max_vcpus
666      type: object
667      properties:
668        boot_vcpus:
669          minimum: 1
670          default: 1
671          type: integer
672        max_vcpus:
673          minimum: 1
674          default: 1
675          type: integer
676        topology:
677          $ref: "#/components/schemas/CpuTopology"
678        kvm_hyperv:
679          type: boolean
680          default: false
681        max_phys_bits:
682          type: integer
683        affinity:
684          type: array
685          items:
686            $ref: "#/components/schemas/CpuAffinity"
687        features:
688          $ref: "#/components/schemas/CpuFeatures"
689
690    PciSegmentConfig:
691      required:
692        - pci_segment
693      type: object
694      properties:
695        pci_segment:
696          type: integer
697          format: int16
698        mmio32_aperture_weight:
699          type: integer
700          format: int32
701        mmio64_aperture_weight:
702          type: integer
703          format: int32
704
705    PlatformConfig:
706      type: object
707      properties:
708        num_pci_segments:
709          type: integer
710          format: int16
711        iommu_segments:
712          type: array
713          items:
714            type: integer
715            format: int16
716        serial_number:
717          type: string
718        uuid:
719          type: string
720        oem_strings:
721          type: array
722          items:
723            type: string
724        tdx:
725          type: boolean
726          default: false
727
728    MemoryZoneConfig:
729      required:
730        - id
731        - size
732      type: object
733      properties:
734        id:
735          type: string
736        size:
737          type: integer
738          format: int64
739          default: 512 MB
740        file:
741          type: string
742        mergeable:
743          type: boolean
744          default: false
745        shared:
746          type: boolean
747          default: false
748        hugepages:
749          type: boolean
750          default: false
751        hugepage_size:
752          type: integer
753          format: int64
754        host_numa_node:
755          type: integer
756          format: int32
757        hotplug_size:
758          type: integer
759          format: int64
760        hotplugged_size:
761          type: integer
762          format: int64
763        prefault:
764          type: boolean
765          default: false
766
767    MemoryConfig:
768      required:
769        - size
770      type: object
771      properties:
772        size:
773          type: integer
774          format: int64
775          default: 512 MB
776        hotplug_size:
777          type: integer
778          format: int64
779        hotplugged_size:
780          type: integer
781          format: int64
782        mergeable:
783          type: boolean
784          default: false
785        hotplug_method:
786          type: string
787          default: "Acpi"
788        shared:
789          type: boolean
790          default: false
791        hugepages:
792          type: boolean
793          default: false
794        hugepage_size:
795          type: integer
796          format: int64
797        prefault:
798          type: boolean
799          default: false
800        thp:
801          type: boolean
802          default: true
803        zones:
804          type: array
805          items:
806            $ref: "#/components/schemas/MemoryZoneConfig"
807
808    TokenBucket:
809      required:
810        - size
811        - refill_time
812      type: object
813      properties:
814        size:
815          type: integer
816          format: int64
817          minimum: 0
818          description: The total number of tokens this bucket can hold.
819        one_time_burst:
820          type: integer
821          format: int64
822          minimum: 0
823          description: The initial size of a token bucket.
824        refill_time:
825          type: integer
826          format: int64
827          minimum: 0
828          description: The amount of milliseconds it takes for the bucket to refill.
829      description:
830        Defines a token bucket with a maximum capacity (_size_), an initial burst size
831        (_one_time_burst_) and an interval for refilling purposes (_refill_time_).
832        The refill-rate is derived from _size_ and _refill_time_, and it is the constant
833        rate at which the tokens replenish. The refill process only starts happening after
834        the initial burst budget is consumed.
835        Consumption from the token bucket is unbounded in speed which allows for bursts
836        bound in size by the amount of tokens available.
837        Once the token bucket is empty, consumption speed is bound by the refill-rate.
838
839    RateLimiterConfig:
840      type: object
841      properties:
842        bandwidth:
843          $ref: "#/components/schemas/TokenBucket"
844        ops:
845          $ref: "#/components/schemas/TokenBucket"
846      description:
847        Defines an IO rate limiter with independent bytes/s and ops/s limits.
848        Limits are defined by configuring each of the _bandwidth_ and _ops_ token buckets.
849
850    RateLimitGroupConfig:
851      required:
852        - id
853        - rate_limiter_config
854      type: object
855      properties:
856        id:
857          type: string
858        rate_limiter_config:
859          $ref: "#/components/schemas/RateLimiterConfig"
860
861    VirtQueueAffinity:
862      required:
863        - queue_index
864        - host_cpus
865      type: object
866      properties:
867        queue_index:
868          type: integer
869        host_cpus:
870          type: array
871          items:
872            type: integer
873
874    DiskConfig:
875      required:
876        - path
877      type: object
878      properties:
879        path:
880          type: string
881        readonly:
882          type: boolean
883          default: false
884        direct:
885          type: boolean
886          default: false
887        iommu:
888          type: boolean
889          default: false
890        num_queues:
891          type: integer
892          default: 1
893        queue_size:
894          type: integer
895          default: 128
896        vhost_user:
897          type: boolean
898          default: false
899        vhost_socket:
900          type: string
901        rate_limiter_config:
902          $ref: "#/components/schemas/RateLimiterConfig"
903        pci_segment:
904          type: integer
905          format: int16
906        id:
907          type: string
908        serial:
909          type: string
910        rate_limit_group:
911          type: string
912        queue_affinity:
913          type: array
914          items:
915            $ref: "#/components/schemas/VirtQueueAffinity"
916
917    NetConfig:
918      type: object
919      properties:
920        tap:
921          type: string
922        ip:
923          type: string
924          default: "192.168.249.1"
925        mask:
926          type: string
927          default: "255.255.255.0"
928        mac:
929          type: string
930        host_mac:
931          type: string
932        mtu:
933          type: integer
934        iommu:
935          type: boolean
936          default: false
937        num_queues:
938          type: integer
939          default: 2
940        queue_size:
941          type: integer
942          default: 256
943        vhost_user:
944          type: boolean
945          default: false
946        vhost_socket:
947          type: string
948        vhost_mode:
949          type: string
950          default: "Client"
951        id:
952          type: string
953        pci_segment:
954          type: integer
955          format: int16
956        rate_limiter_config:
957          $ref: "#/components/schemas/RateLimiterConfig"
958
959    RngConfig:
960      required:
961        - src
962      type: object
963      properties:
964        src:
965          type: string
966          default: "/dev/urandom"
967        iommu:
968          type: boolean
969          default: false
970
971    BalloonConfig:
972      required:
973        - size
974      type: object
975      properties:
976        size:
977          type: integer
978          format: int64
979        deflate_on_oom:
980          type: boolean
981          default: false
982          description: Deflate balloon when the guest is under memory pressure.
983        free_page_reporting:
984          type: boolean
985          default: false
986          description: Enable guest to report free pages.
987
988    FsConfig:
989      required:
990        - num_queues
991        - queue_size
992        - socket
993        - tag
994      type: object
995      properties:
996        tag:
997          type: string
998        socket:
999          type: string
1000        num_queues:
1001          type: integer
1002          default: 1
1003        queue_size:
1004          type: integer
1005          default: 1024
1006        pci_segment:
1007          type: integer
1008          format: int16
1009        id:
1010          type: string
1011
1012    PmemConfig:
1013      required:
1014        - file
1015      type: object
1016      properties:
1017        file:
1018          type: string
1019        size:
1020          type: integer
1021          format: int64
1022        iommu:
1023          type: boolean
1024          default: false
1025        discard_writes:
1026          type: boolean
1027          default: false
1028        pci_segment:
1029          type: integer
1030          format: int16
1031        id:
1032          type: string
1033
1034    ConsoleConfig:
1035      required:
1036        - mode
1037      type: object
1038      properties:
1039        file:
1040          type: string
1041        socket:
1042          type: string
1043        mode:
1044          type: string
1045          enum: ["Off", "Pty", "Tty", "File", "Socket", "Null"]
1046        iommu:
1047          type: boolean
1048          default: false
1049
1050    DebugConsoleConfig:
1051      required:
1052        - mode
1053      type: object
1054      properties:
1055        file:
1056          type: string
1057        mode:
1058          type: string
1059          enum: ["Off", "Pty", "Tty", "File", "Null"]
1060        iobase:
1061          type: integer
1062
1063    DeviceConfig:
1064      required:
1065        - path
1066      type: object
1067      properties:
1068        path:
1069          type: string
1070        iommu:
1071          type: boolean
1072          default: false
1073        pci_segment:
1074          type: integer
1075          format: int16
1076        id:
1077          type: string
1078        x_nv_gpudirect_clique:
1079          type: integer
1080          format: int8
1081    TpmConfig:
1082      required:
1083        - socket
1084      type: object
1085      properties:
1086        socket:
1087          type: string
1088
1089    VdpaConfig:
1090      required:
1091        - path
1092        - num_queues
1093      type: object
1094      properties:
1095        path:
1096          type: string
1097        num_queues:
1098          type: integer
1099          default: 1
1100        iommu:
1101          type: boolean
1102          default: false
1103        pci_segment:
1104          type: integer
1105          format: int16
1106        id:
1107          type: string
1108
1109    VsockConfig:
1110      required:
1111        - cid
1112        - socket
1113      type: object
1114      properties:
1115        cid:
1116          type: integer
1117          format: int64
1118          minimum: 3
1119          description: Guest Vsock CID
1120        socket:
1121          type: string
1122          description: Path to UNIX domain socket, used to proxy vsock connections.
1123        iommu:
1124          type: boolean
1125          default: false
1126        pci_segment:
1127          type: integer
1128          format: int16
1129        id:
1130          type: string
1131
1132    SgxEpcConfig:
1133      required:
1134        - id
1135        - size
1136      type: object
1137      properties:
1138        id:
1139          type: string
1140        size:
1141          type: integer
1142          format: int64
1143        prefault:
1144          type: boolean
1145          default: false
1146
1147    NumaDistance:
1148      required:
1149        - destination
1150        - distance
1151      type: object
1152      properties:
1153        destination:
1154          type: integer
1155          format: int32
1156        distance:
1157          type: integer
1158          format: int32
1159
1160    NumaConfig:
1161      required:
1162        - guest_numa_id
1163      type: object
1164      properties:
1165        guest_numa_id:
1166          type: integer
1167          format: int32
1168        cpus:
1169          type: array
1170          items:
1171            type: integer
1172            format: int32
1173        distances:
1174          type: array
1175          items:
1176            $ref: "#/components/schemas/NumaDistance"
1177        memory_zones:
1178          type: array
1179          items:
1180            type: string
1181        sgx_epc_sections:
1182          type: array
1183          items:
1184            type: string
1185        pci_segments:
1186          type: array
1187          items:
1188            type: integer
1189            format: int32
1190
1191    VmResize:
1192      type: object
1193      properties:
1194        desired_vcpus:
1195          minimum: 1
1196          type: integer
1197        desired_ram:
1198          description: desired memory ram in bytes
1199          type: integer
1200          format: int64
1201        desired_balloon:
1202          description: desired balloon size in bytes
1203          type: integer
1204          format: int64
1205
1206    VmResizeZone:
1207      type: object
1208      properties:
1209        id:
1210          type: string
1211        desired_ram:
1212          description: desired memory zone size in bytes
1213          type: integer
1214          format: int64
1215
1216    VmRemoveDevice:
1217      type: object
1218      properties:
1219        id:
1220          type: string
1221
1222    VmSnapshotConfig:
1223      type: object
1224      properties:
1225        destination_url:
1226          type: string
1227
1228    VmCoredumpData:
1229      type: object
1230      properties:
1231        destination_url:
1232          type: string
1233
1234    RestoreConfig:
1235      required:
1236        - source_url
1237      type: object
1238      properties:
1239        source_url:
1240          type: string
1241        prefault:
1242          type: boolean
1243
1244    ReceiveMigrationData:
1245      required:
1246        - receiver_url
1247      type: object
1248      properties:
1249        receiver_url:
1250          type: string
1251
1252    SendMigrationData:
1253      required:
1254        - destination_url
1255      type: object
1256      properties:
1257        destination_url:
1258          type: string
1259        local:
1260          type: boolean
1261
1262    VmAddUserDevice:
1263      required:
1264        - socket
1265      type: object
1266      properties:
1267        socket:
1268          type: string
1269