Files
kata-containers/src/runtime/virtcontainers/pkg/cloud-hypervisor/client/api/openapi.yaml
Jose Carlos Venegas Munoz 3159438701 clh: opeanapi: update api for cloud hypervisor
[ Port from runtime commit 40f49312a4881c904a1cbdace04c4c697bd2d429 ]

Update api geneated by openapi.

Fixes: #461

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
Signed-off-by: Bo Chen <chen.bo@intel.com>
2020-08-20 14:00:15 -07:00

1043 lines
25 KiB
YAML

openapi: 3.0.1
info:
description: Local HTTP based API for managing and inspecting a cloud-hypervisor
virtual machine.
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
title: Cloud Hypervisor API
version: 0.3.0
servers:
- url: http://localhost/api/v1
paths:
/vmm.ping:
get:
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/VmmPingResponse'
description: The VMM information
summary: Ping the VMM to check for API server availability
/vmm.shutdown:
put:
operationId: shutdownVMM
responses:
"204":
description: The VMM successfully shutdown.
summary: Shuts the cloud-hypervisor VMM.
/vm.info:
get:
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/VmInfo'
description: The VM information
summary: Returns general information about the cloud-hypervisor Virtual Machine
(VM) instance.
/vm.counters:
get:
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/VmCounters'
description: The VM counters
summary: Get counters from the VM
/vm.create:
put:
operationId: createVM
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VmConfig'
description: The VM configuration
required: true
responses:
"204":
description: The VM instance was successfully created.
summary: Create the cloud-hypervisor Virtual Machine (VM) instance. The instance
is not booted, only created.
/vm.delete:
put:
operationId: deleteVM
responses:
"204":
description: The VM instance was successfully deleted.
summary: Delete the cloud-hypervisor Virtual Machine (VM) instance.
/vm.boot:
put:
operationId: bootVM
responses:
"204":
description: The VM instance successfully booted.
"404":
description: The VM instance could not boot because it is not created yet
summary: Boot the previously created VM instance.
/vm.pause:
put:
operationId: pauseVM
responses:
"204":
description: The VM instance successfully paused.
"404":
description: The VM instance could not pause because it is not created yet
"405":
description: The VM instance could not pause because it is not booted.
summary: Pause a previously booted VM instance.
/vm.resume:
put:
operationId: resumeVM
responses:
"204":
description: The VM instance successfully paused.
"404":
description: The VM instance could not resume because it is not booted yet
"405":
description: The VM instance could not resume because it is not paused.
summary: Resume a previously paused VM instance.
/vm.shutdown:
put:
operationId: shutdownVM
responses:
"204":
description: The VM instance successfully shut down.
"404":
description: The VM instance could not shut down because is not created.
"405":
description: The VM instance could not shut down because it is not started.
summary: Shut the VM instance down.
/vm.reboot:
put:
operationId: rebootVM
responses:
"204":
description: The VM instance successfully rebooted.
"404":
description: The VM instance could not reboot because it is not created.
"405":
description: The VM instance could not reboot because it is not booted.
summary: Reboot the VM instance.
/vm.resize:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VmResize'
description: The target size for the VM
required: true
responses:
"204":
description: The VM instance was successfully resized.
"404":
description: The VM instance could not be resized because it is not created.
summary: Resize the VM
/vm.add-device:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VmAddDevice'
description: The path of the new device
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PciDeviceInfo'
description: The new device was successfully added to the VM instance.
"404":
description: The new device could not be added to the VM instance.
summary: Add a new device to the VM
/vm.remove-device:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VmRemoveDevice'
description: The identifier of the device
required: true
responses:
"204":
description: The device was successfully removed from the VM instance.
"404":
description: The device could not be removed from the VM instance.
summary: Remove a device from the VM
/vm.add-disk:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DiskConfig'
description: The details of the new disk
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PciDeviceInfo'
description: The new disk was successfully added to the VM instance.
"500":
description: The new disk could not be added to the VM instance.
summary: Add a new disk to the VM
/vm.add-fs:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FsConfig'
description: The details of the new virtio-fs
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PciDeviceInfo'
description: The new device was successfully added to the VM instance.
"500":
description: The new device could not be added to the VM instance.
summary: Add a new virtio-fs device to the VM
/vm.add-pmem:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PmemConfig'
description: The details of the new pmem device
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PciDeviceInfo'
description: The new device was successfully added to the VM instance.
"500":
description: The new device could not be added to the VM instance.
summary: Add a new pmem device to the VM
/vm.add-net:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NetConfig'
description: The details of the new network device
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PciDeviceInfo'
description: The new device was successfully added to the VM instance.
"500":
description: The new device could not be added to the VM instance.
summary: Add a new network device to the VM
/vm.add-vsock:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VsockConfig'
description: The details of the new vsock device
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PciDeviceInfo'
description: The new device was successfully added to the VM instance.
"500":
description: The new device could not be added to the VM instance.
summary: Add a new vsock device to the VM
/vm.snapshot:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VmSnapshotConfig'
description: The snapshot configuration
required: true
responses:
"204":
description: The VM instance was successfully snapshotted.
"404":
description: The VM instance could not be snapshotted because it is not
created.
"405":
description: The VM instance could not be snapshotted because it is not
booted.
summary: Returns a VM snapshot.
/vm.restore:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreConfig'
description: The restore configuration
required: true
responses:
"204":
description: The VM instance was successfully restored.
"404":
description: The VM instance could not be restored because it is already
created.
summary: Restore a VM from a snapshot.
components:
schemas:
VmmPingResponse:
description: Virtual Machine Monitor information
example:
version: version
properties:
version:
type: string
required:
- version
type: object
VmInfo:
description: Virtual Machine information
example:
state: Created
config:
console:
mode: "false"
file: file
iommu: false
memory:
hugepages: false
shared: false
mergeable: false
balloon: false
file: file
size: 7
hotplug_size: 9
hotplug_method: acpi
disks:
- path: path
num_queues: 3
readonly: false
iommu: false
queue_size: 2
vhost_socket: vhost_socket
vhost_user: false
direct: false
poll_queue: true
id: id
- path: path
num_queues: 3
readonly: false
iommu: false
queue_size: 2
vhost_socket: vhost_socket
vhost_user: false
direct: false
poll_queue: true
id: id
cpus:
topology:
dies_per_package: 5
threads_per_core: 1
cores_per_die: 5
packages: 2
boot_vcpus: 1
max_vcpus: 1
devices:
- path: path
iommu: false
id: id
- path: path
iommu: false
id: id
kernel:
path: path
rng:
iommu: false
src: /dev/urandom
sgx_epc:
- prefault: false
size: 1
- prefault: false
size: 1
fs:
- num_queues: 1
queue_size: 1
cache_size: 1
dax: true
tag: tag
socket: socket
id: id
- num_queues: 1
queue_size: 1
cache_size: 1
dax: true
tag: tag
socket: socket
id: id
vsock:
iommu: false
socket: socket
id: id
cid: 3
pmem:
- mergeable: false
file: file
size: 6
iommu: false
id: id
discard_writes: false
- mergeable: false
file: file
size: 6
iommu: false
id: id
discard_writes: false
cmdline:
args: args
iommu: false
serial:
mode: "false"
file: file
iommu: false
initramfs:
path: path
net:
- tap: tap
num_queues: 4
iommu: false
queue_size: 7
vhost_socket: vhost_socket
vhost_user: false
ip: 192.168.249.1
id: id
mac: mac
mask: 255.255.255.0
- tap: tap
num_queues: 4
iommu: false
queue_size: 7
vhost_socket: vhost_socket
vhost_user: false
ip: 192.168.249.1
id: id
mac: mac
mask: 255.255.255.0
properties:
config:
$ref: '#/components/schemas/VmConfig'
state:
enum:
- Created
- Running
- Shutdown
- Paused
type: string
required:
- config
- state
type: object
VmCounters:
additionalProperties:
additionalProperties:
format: uint64
type: integer
type: object
type: object
PciDeviceInfo:
description: Information about a PCI device
example:
bdf: bdf
id: id
properties:
id:
type: string
bdf:
type: string
required:
- bdf
- id
type: object
VmConfig:
description: Virtual machine configuration
example:
console:
mode: "false"
file: file
iommu: false
memory:
hugepages: false
shared: false
mergeable: false
balloon: false
file: file
size: 7
hotplug_size: 9
hotplug_method: acpi
disks:
- path: path
num_queues: 3
readonly: false
iommu: false
queue_size: 2
vhost_socket: vhost_socket
vhost_user: false
direct: false
poll_queue: true
id: id
- path: path
num_queues: 3
readonly: false
iommu: false
queue_size: 2
vhost_socket: vhost_socket
vhost_user: false
direct: false
poll_queue: true
id: id
cpus:
topology:
dies_per_package: 5
threads_per_core: 1
cores_per_die: 5
packages: 2
boot_vcpus: 1
max_vcpus: 1
devices:
- path: path
iommu: false
id: id
- path: path
iommu: false
id: id
kernel:
path: path
rng:
iommu: false
src: /dev/urandom
sgx_epc:
- prefault: false
size: 1
- prefault: false
size: 1
fs:
- num_queues: 1
queue_size: 1
cache_size: 1
dax: true
tag: tag
socket: socket
id: id
- num_queues: 1
queue_size: 1
cache_size: 1
dax: true
tag: tag
socket: socket
id: id
vsock:
iommu: false
socket: socket
id: id
cid: 3
pmem:
- mergeable: false
file: file
size: 6
iommu: false
id: id
discard_writes: false
- mergeable: false
file: file
size: 6
iommu: false
id: id
discard_writes: false
cmdline:
args: args
iommu: false
serial:
mode: "false"
file: file
iommu: false
initramfs:
path: path
net:
- tap: tap
num_queues: 4
iommu: false
queue_size: 7
vhost_socket: vhost_socket
vhost_user: false
ip: 192.168.249.1
id: id
mac: mac
mask: 255.255.255.0
- tap: tap
num_queues: 4
iommu: false
queue_size: 7
vhost_socket: vhost_socket
vhost_user: false
ip: 192.168.249.1
id: id
mac: mac
mask: 255.255.255.0
properties:
cpus:
$ref: '#/components/schemas/CpusConfig'
memory:
$ref: '#/components/schemas/MemoryConfig'
kernel:
$ref: '#/components/schemas/KernelConfig'
initramfs:
$ref: '#/components/schemas/InitramfsConfig'
cmdline:
$ref: '#/components/schemas/CmdLineConfig'
disks:
items:
$ref: '#/components/schemas/DiskConfig'
type: array
net:
items:
$ref: '#/components/schemas/NetConfig'
type: array
rng:
$ref: '#/components/schemas/RngConfig'
fs:
items:
$ref: '#/components/schemas/FsConfig'
type: array
pmem:
items:
$ref: '#/components/schemas/PmemConfig'
type: array
serial:
$ref: '#/components/schemas/ConsoleConfig'
console:
$ref: '#/components/schemas/ConsoleConfig'
devices:
items:
$ref: '#/components/schemas/DeviceConfig'
type: array
vsock:
$ref: '#/components/schemas/VsockConfig'
sgx_epc:
items:
$ref: '#/components/schemas/SgxEpcConfig'
type: array
iommu:
default: false
type: boolean
required:
- cmdline
- kernel
type: object
CpuTopology:
example:
dies_per_package: 5
threads_per_core: 1
cores_per_die: 5
packages: 2
properties:
threads_per_core:
type: integer
cores_per_die:
type: integer
dies_per_package:
type: integer
packages:
type: integer
type: object
CpusConfig:
example:
topology:
dies_per_package: 5
threads_per_core: 1
cores_per_die: 5
packages: 2
boot_vcpus: 1
max_vcpus: 1
properties:
boot_vcpus:
default: 1
minimum: 1
type: integer
max_vcpus:
default: 1
minimum: 1
type: integer
topology:
$ref: '#/components/schemas/CpuTopology'
required:
- boot_vcpus
- max_vcpus
type: object
MemoryConfig:
example:
hugepages: false
shared: false
mergeable: false
balloon: false
file: file
size: 7
hotplug_size: 9
hotplug_method: acpi
properties:
size:
format: int64
type: integer
hotplug_size:
format: int64
type: integer
file:
type: string
mergeable:
default: false
type: boolean
hotplug_method:
default: acpi
type: string
shared:
default: false
type: boolean
hugepages:
default: false
type: boolean
balloon:
default: false
type: boolean
required:
- size
type: object
KernelConfig:
example:
path: path
properties:
path:
type: string
required:
- path
type: object
InitramfsConfig:
example:
path: path
nullable: true
properties:
path:
type: string
required:
- path
type: object
CmdLineConfig:
example:
args: args
properties:
args:
type: string
required:
- args
type: object
DiskConfig:
example:
path: path
num_queues: 3
readonly: false
iommu: false
queue_size: 2
vhost_socket: vhost_socket
vhost_user: false
direct: false
poll_queue: true
id: id
properties:
path:
type: string
readonly:
default: false
type: boolean
direct:
default: false
type: boolean
iommu:
default: false
type: boolean
num_queues:
default: 1
type: integer
queue_size:
default: 128
type: integer
vhost_user:
default: false
type: boolean
vhost_socket:
type: string
poll_queue:
default: true
type: boolean
id:
type: string
required:
- path
type: object
NetConfig:
example:
tap: tap
num_queues: 4
iommu: false
queue_size: 7
vhost_socket: vhost_socket
vhost_user: false
ip: 192.168.249.1
id: id
mac: mac
mask: 255.255.255.0
properties:
tap:
default: ""
type: string
ip:
default: 192.168.249.1
type: string
mask:
default: 255.255.255.0
type: string
mac:
type: string
iommu:
default: false
type: boolean
num_queues:
default: 2
type: integer
queue_size:
default: 256
type: integer
vhost_user:
default: false
type: boolean
vhost_socket:
type: string
id:
type: string
type: object
RngConfig:
example:
iommu: false
src: /dev/urandom
properties:
src:
default: /dev/urandom
type: string
iommu:
default: false
type: boolean
required:
- src
type: object
FsConfig:
example:
num_queues: 1
queue_size: 1
cache_size: 1
dax: true
tag: tag
socket: socket
id: id
properties:
tag:
type: string
socket:
type: string
num_queues:
default: 1
type: integer
queue_size:
default: 1024
type: integer
dax:
default: true
type: boolean
cache_size:
format: int64
type: integer
id:
type: string
required:
- socket
- tag
type: object
PmemConfig:
example:
mergeable: false
file: file
size: 6
iommu: false
id: id
discard_writes: false
properties:
file:
type: string
size:
format: int64
type: integer
iommu:
default: false
type: boolean
mergeable:
default: false
type: boolean
discard_writes:
default: false
type: boolean
id:
type: string
required:
- file
type: object
ConsoleConfig:
example:
mode: "false"
file: file
iommu: false
properties:
file:
type: string
mode:
enum:
- "false"
- Tty
- File
- null
type: string
iommu:
default: false
type: boolean
required:
- mode
type: object
DeviceConfig:
example:
path: path
iommu: false
id: id
properties:
path:
type: string
iommu:
default: false
type: boolean
id:
type: string
required:
- path
type: object
VsockConfig:
example:
iommu: false
socket: socket
id: id
cid: 3
properties:
cid:
description: Guest Vsock CID
format: int64
minimum: 3
type: integer
socket:
description: Path to UNIX domain socket, used to proxy vsock connections.
type: string
iommu:
default: false
type: boolean
id:
type: string
required:
- cid
- socket
type: object
SgxEpcConfig:
example:
prefault: false
size: 1
properties:
size:
format: uint64
type: integer
prefault:
default: false
type: boolean
required:
- size
type: object
VmResize:
example:
desired_vcpus: 1
desired_ram_w_balloon: 1
desired_ram: 6
properties:
desired_vcpus:
minimum: 1
type: integer
desired_ram:
description: desired memory ram in bytes
format: int64
type: integer
desired_ram_w_balloon:
description: desired ballon size in bytes
format: int64
type: integer
type: object
VmAddDevice:
example:
path: path
properties:
path:
type: string
type: object
VmRemoveDevice:
example:
id: id
properties:
id:
type: string
type: object
VmSnapshotConfig:
example:
destination_url: destination_url
properties:
destination_url:
type: string
type: object
RestoreConfig:
example:
prefault: true
source_url: source_url
properties:
source_url:
type: string
prefault:
type: boolean
required:
- source_url
type: object