versions: Update Cloud Hypervisor to v25.0

Cloud Hypervisor v25.0 has been released on July 7th, 2022, and brings
the following changes:

**ch-remote Improvements**
The ch-remote command has gained support for creating the VM from a JSON
config and support for booting and deleting the VM from the VMM.

**VM "Coredump" Support**
Under the guest_debug feature flag it is now possible to extract the memory
of the guest for use in debugging with e.g. the crash utility.
(https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4012)

**Notable Bug Fixes**
* Always restore console mode on exit
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4249,
   https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4248)
* Restore vCPUs in numerical order which fixes aarch64 snapshot/restore
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4244)
* Don't try and configure IFF_RUNNING on TAP devices
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4279)
* Propagate configured queue size through to vhost-user backend
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4286)
* Always Program vCPU CPUID before running the vCPU to fix running on Linux
  5.16
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/4156)
* Enable ACPI MADT "Online Capable" flag for hotpluggable vCPUs to fix newer
  Linux guest

**Removals**
The following functionality has been removed:

* The mergeable option from the virtio-pmem support has been removed
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/3968)
* The dax option from the virtio-fs support has been removed
  (https://github.com/cloud-hypervisor/cloud-hypervisor/issues/3889)

Fixes: #4641

Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
This commit is contained in:
Fabiano Fidêncio 2022-07-12 14:33:57 +00:00
parent 9f0e4bb775
commit dc3b6f6592
16 changed files with 533 additions and 283 deletions

View File

@ -1499,15 +1499,12 @@ func (clh *cloudHypervisor) addVolume(volume types.Volume) error {
return err return err
} }
// disable DAX if VirtioFSCacheSize is 0
dax := clh.config.VirtioFSCacheSize != 0
// numQueues and queueSize are required, let's use the // numQueues and queueSize are required, let's use the
// default values defined by cloud-hypervisor // default values defined by cloud-hypervisor
numQueues := int32(1) numQueues := int32(1)
queueSize := int32(1024) queueSize := int32(1024)
fs := chclient.NewFsConfig(volume.MountTag, vfsdSockPath, numQueues, queueSize, dax, int64(clh.config.VirtioFSCacheSize<<20)) fs := chclient.NewFsConfig(volume.MountTag, vfsdSockPath, numQueues, queueSize)
clh.vmconfig.Fs = &[]chclient.FsConfig{*fs} clh.vmconfig.Fs = &[]chclient.FsConfig{*fs}
clh.Logger().Debug("Adding share volume to hypervisor: ", volume.MountTag) clh.Logger().Debug("Adding share volume to hypervisor: ", volume.MountTag)

View File

@ -39,6 +39,7 @@ docs/TokenBucket.md
docs/VdpaConfig.md docs/VdpaConfig.md
docs/VmAddDevice.md docs/VmAddDevice.md
docs/VmConfig.md docs/VmConfig.md
docs/VmCoredumpData.md
docs/VmInfo.md docs/VmInfo.md
docs/VmRemoveDevice.md docs/VmRemoveDevice.md
docs/VmResize.md docs/VmResize.md
@ -81,6 +82,7 @@ model_token_bucket.go
model_vdpa_config.go model_vdpa_config.go
model_vm_add_device.go model_vm_add_device.go
model_vm_config.go model_vm_config.go
model_vm_coredump_data.go
model_vm_info.go model_vm_info.go
model_vm_remove_device.go model_vm_remove_device.go
model_vm_resize.go model_vm_resize.go

View File

@ -94,6 +94,7 @@ Class | Method | HTTP request | Description
*DefaultApi* | [**VmAddPmemPut**](docs/DefaultApi.md#vmaddpmemput) | **Put** /vm.add-pmem | Add a new pmem device to the VM *DefaultApi* | [**VmAddPmemPut**](docs/DefaultApi.md#vmaddpmemput) | **Put** /vm.add-pmem | Add a new pmem device to the VM
*DefaultApi* | [**VmAddVdpaPut**](docs/DefaultApi.md#vmaddvdpaput) | **Put** /vm.add-vdpa | Add a new vDPA device to the VM *DefaultApi* | [**VmAddVdpaPut**](docs/DefaultApi.md#vmaddvdpaput) | **Put** /vm.add-vdpa | Add a new vDPA device to the VM
*DefaultApi* | [**VmAddVsockPut**](docs/DefaultApi.md#vmaddvsockput) | **Put** /vm.add-vsock | Add a new vsock device to the VM *DefaultApi* | [**VmAddVsockPut**](docs/DefaultApi.md#vmaddvsockput) | **Put** /vm.add-vsock | Add a new vsock device to the VM
*DefaultApi* | [**VmCoredumpPut**](docs/DefaultApi.md#vmcoredumpput) | **Put** /vm.coredump | Takes a VM coredump.
*DefaultApi* | [**VmCountersGet**](docs/DefaultApi.md#vmcountersget) | **Get** /vm.counters | Get counters from the VM *DefaultApi* | [**VmCountersGet**](docs/DefaultApi.md#vmcountersget) | **Get** /vm.counters | Get counters from the VM
*DefaultApi* | [**VmInfoGet**](docs/DefaultApi.md#vminfoget) | **Get** /vm.info | Returns general information about the cloud-hypervisor Virtual Machine (VM) instance. *DefaultApi* | [**VmInfoGet**](docs/DefaultApi.md#vminfoget) | **Get** /vm.info | Returns general information about the cloud-hypervisor Virtual Machine (VM) instance.
*DefaultApi* | [**VmReceiveMigrationPut**](docs/DefaultApi.md#vmreceivemigrationput) | **Put** /vm.receive-migration | Receive a VM migration from URL *DefaultApi* | [**VmReceiveMigrationPut**](docs/DefaultApi.md#vmreceivemigrationput) | **Put** /vm.receive-migration | Receive a VM migration from URL
@ -140,6 +141,7 @@ Class | Method | HTTP request | Description
- [VdpaConfig](docs/VdpaConfig.md) - [VdpaConfig](docs/VdpaConfig.md)
- [VmAddDevice](docs/VmAddDevice.md) - [VmAddDevice](docs/VmAddDevice.md)
- [VmConfig](docs/VmConfig.md) - [VmConfig](docs/VmConfig.md)
- [VmCoredumpData](docs/VmCoredumpData.md)
- [VmInfo](docs/VmInfo.md) - [VmInfo](docs/VmInfo.md)
- [VmRemoveDevice](docs/VmRemoveDevice.md) - [VmRemoveDevice](docs/VmRemoveDevice.md)
- [VmResize](docs/VmResize.md) - [VmResize](docs/VmResize.md)

View File

@ -347,6 +347,23 @@ paths:
description: The VM instance could not be snapshotted because it is not description: The VM instance could not be snapshotted because it is not
booted. booted.
summary: Returns a VM snapshot. summary: Returns a VM snapshot.
/vm.coredump:
put:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VmCoredumpData'
description: The coredump configuration
required: true
responses:
"204":
description: The VM instance was successfully coredumped.
"404":
description: The VM instance could not be coredumped because it is not created.
"405":
description: The VM instance could not be coredumped because it is not booted.
summary: Takes a VM coredump.
/vm.restore: /vm.restore:
put: put:
requestBody: requestBody:
@ -408,7 +425,7 @@ components:
VmInfo: VmInfo:
description: Virtual Machine information description: Virtual Machine information
example: example:
memory_actual_size: 7 memory_actual_size: 3
state: Created state: Created
config: config:
console: console:
@ -496,6 +513,7 @@ components:
cpus: cpus:
features: features:
amx: true amx: true
kvm_hyperv: false
topology: topology:
dies_per_package: 5 dies_per_package: 5
threads_per_core: 1 threads_per_core: 1
@ -514,58 +532,58 @@ components:
- 3 - 3
- 3 - 3
devices: devices:
- pci_segment: 3 - pci_segment: 6
path: path path: path
iommu: false iommu: false
id: id id: id
- pci_segment: 3 - pci_segment: 6
path: path path: path
iommu: false iommu: false
id: id id: id
kernel: kernel:
path: path path: path
vdpa: vdpa:
- pci_segment: 7 - pci_segment: 3
path: path path: path
num_queues: 3 num_queues: 3
iommu: false iommu: false
id: id id: id
- pci_segment: 7 - pci_segment: 3
path: path path: path
num_queues: 3 num_queues: 3
iommu: false iommu: false
id: id id: id
numa: numa:
- distances: - distances:
- distance: 7 - distance: 8
destination: 8 destination: 4
- distance: 7 - distance: 8
destination: 8 destination: 4
cpus: cpus:
- 4 - 0
- 4 - 0
sgx_epc_sections: sgx_epc_sections:
- sgx_epc_sections - sgx_epc_sections
- sgx_epc_sections - sgx_epc_sections
memory_zones: memory_zones:
- memory_zones - memory_zones
- memory_zones - memory_zones
guest_numa_id: 0 guest_numa_id: 6
- distances: - distances:
- distance: 7 - distance: 8
destination: 8 destination: 4
- distance: 7 - distance: 8
destination: 8 destination: 4
cpus: cpus:
- 4 - 0
- 4 - 0
sgx_epc_sections: sgx_epc_sections:
- sgx_epc_sections - sgx_epc_sections
- sgx_epc_sections - sgx_epc_sections
memory_zones: memory_zones:
- memory_zones - memory_zones
- memory_zones - memory_zones
guest_numa_id: 0 guest_numa_id: 6
tdx: tdx:
firmware: firmware firmware: firmware
rng: rng:
@ -573,30 +591,26 @@ components:
src: /dev/urandom src: /dev/urandom
sgx_epc: sgx_epc:
- prefault: false - prefault: false
size: 6 size: 7
id: id id: id
- prefault: false - prefault: false
size: 6 size: 7
id: id id: id
fs: fs:
- pci_segment: 6 - pci_segment: 6
num_queues: 1 num_queues: 1
queue_size: 2 queue_size: 2
cache_size: 6
dax: true
tag: tag tag: tag
socket: socket socket: socket
id: id id: id
- pci_segment: 6 - pci_segment: 6
num_queues: 1 num_queues: 1
queue_size: 2 queue_size: 2
cache_size: 6
dax: true
tag: tag tag: tag
socket: socket socket: socket
id: id id: id
vsock: vsock:
pci_segment: 7 pci_segment: 0
iommu: false iommu: false
socket: socket socket: socket
id: id id: id
@ -605,20 +619,18 @@ components:
iommu_segments: iommu_segments:
- 3 - 3
- 3 - 3
num_pci_segments: 3 num_pci_segments: 7
serial_number: serial_number serial_number: serial_number
pmem: pmem:
- pci_segment: 6 - pci_segment: 5
mergeable: false
file: file file: file
size: 5 size: 6
iommu: false iommu: false
id: id id: id
discard_writes: false discard_writes: false
- pci_segment: 6 - pci_segment: 5
mergeable: false
file: file file: file
size: 5 size: 6
iommu: false iommu: false
id: id id: id
discard_writes: false discard_writes: false
@ -839,6 +851,7 @@ components:
cpus: cpus:
features: features:
amx: true amx: true
kvm_hyperv: false
topology: topology:
dies_per_package: 5 dies_per_package: 5
threads_per_core: 1 threads_per_core: 1
@ -857,58 +870,58 @@ components:
- 3 - 3
- 3 - 3
devices: devices:
- pci_segment: 3 - pci_segment: 6
path: path path: path
iommu: false iommu: false
id: id id: id
- pci_segment: 3 - pci_segment: 6
path: path path: path
iommu: false iommu: false
id: id id: id
kernel: kernel:
path: path path: path
vdpa: vdpa:
- pci_segment: 7 - pci_segment: 3
path: path path: path
num_queues: 3 num_queues: 3
iommu: false iommu: false
id: id id: id
- pci_segment: 7 - pci_segment: 3
path: path path: path
num_queues: 3 num_queues: 3
iommu: false iommu: false
id: id id: id
numa: numa:
- distances: - distances:
- distance: 7 - distance: 8
destination: 8 destination: 4
- distance: 7 - distance: 8
destination: 8 destination: 4
cpus: cpus:
- 4 - 0
- 4 - 0
sgx_epc_sections: sgx_epc_sections:
- sgx_epc_sections - sgx_epc_sections
- sgx_epc_sections - sgx_epc_sections
memory_zones: memory_zones:
- memory_zones - memory_zones
- memory_zones - memory_zones
guest_numa_id: 0 guest_numa_id: 6
- distances: - distances:
- distance: 7 - distance: 8
destination: 8 destination: 4
- distance: 7 - distance: 8
destination: 8 destination: 4
cpus: cpus:
- 4 - 0
- 4 - 0
sgx_epc_sections: sgx_epc_sections:
- sgx_epc_sections - sgx_epc_sections
- sgx_epc_sections - sgx_epc_sections
memory_zones: memory_zones:
- memory_zones - memory_zones
- memory_zones - memory_zones
guest_numa_id: 0 guest_numa_id: 6
tdx: tdx:
firmware: firmware firmware: firmware
rng: rng:
@ -916,30 +929,26 @@ components:
src: /dev/urandom src: /dev/urandom
sgx_epc: sgx_epc:
- prefault: false - prefault: false
size: 6 size: 7
id: id id: id
- prefault: false - prefault: false
size: 6 size: 7
id: id id: id
fs: fs:
- pci_segment: 6 - pci_segment: 6
num_queues: 1 num_queues: 1
queue_size: 2 queue_size: 2
cache_size: 6
dax: true
tag: tag tag: tag
socket: socket socket: socket
id: id id: id
- pci_segment: 6 - pci_segment: 6
num_queues: 1 num_queues: 1
queue_size: 2 queue_size: 2
cache_size: 6
dax: true
tag: tag tag: tag
socket: socket socket: socket
id: id id: id
vsock: vsock:
pci_segment: 7 pci_segment: 0
iommu: false iommu: false
socket: socket socket: socket
id: id id: id
@ -948,20 +957,18 @@ components:
iommu_segments: iommu_segments:
- 3 - 3
- 3 - 3
num_pci_segments: 3 num_pci_segments: 7
serial_number: serial_number serial_number: serial_number
pmem: pmem:
- pci_segment: 6 - pci_segment: 5
mergeable: false
file: file file: file
size: 5 size: 6
iommu: false iommu: false
id: id id: id
discard_writes: false discard_writes: false
- pci_segment: 6 - pci_segment: 5
mergeable: false
file: file file: file
size: 5 size: 6
iommu: false iommu: false
id: id id: id
discard_writes: false discard_writes: false
@ -1125,6 +1132,7 @@ components:
example: example:
features: features:
amx: true amx: true
kvm_hyperv: false
topology: topology:
dies_per_package: 5 dies_per_package: 5
threads_per_core: 1 threads_per_core: 1
@ -1153,6 +1161,9 @@ components:
type: integer type: integer
topology: topology:
$ref: '#/components/schemas/CpuTopology' $ref: '#/components/schemas/CpuTopology'
kvm_hyperv:
default: false
type: boolean
max_phys_bits: max_phys_bits:
type: integer type: integer
affinity: affinity:
@ -1170,7 +1181,7 @@ components:
iommu_segments: iommu_segments:
- 3 - 3
- 3 - 3
num_pci_segments: 3 num_pci_segments: 7
serial_number: serial_number serial_number: serial_number
properties: properties:
num_pci_segments: num_pci_segments:
@ -1538,8 +1549,6 @@ components:
pci_segment: 6 pci_segment: 6
num_queues: 1 num_queues: 1
queue_size: 2 queue_size: 2
cache_size: 6
dax: true
tag: tag tag: tag
socket: socket socket: socket
id: id id: id
@ -1554,20 +1563,12 @@ components:
queue_size: queue_size:
default: 1024 default: 1024
type: integer type: integer
dax:
default: true
type: boolean
cache_size:
format: int64
type: integer
pci_segment: pci_segment:
format: int16 format: int16
type: integer type: integer
id: id:
type: string type: string
required: required:
- cache_size
- dax
- num_queues - num_queues
- queue_size - queue_size
- socket - socket
@ -1575,10 +1576,9 @@ components:
type: object type: object
PmemConfig: PmemConfig:
example: example:
pci_segment: 6 pci_segment: 5
mergeable: false
file: file file: file
size: 5 size: 6
iommu: false iommu: false
id: id id: id
discard_writes: false discard_writes: false
@ -1591,9 +1591,6 @@ components:
iommu: iommu:
default: false default: false
type: boolean type: boolean
mergeable:
default: false
type: boolean
discard_writes: discard_writes:
default: false default: false
type: boolean type: boolean
@ -1629,7 +1626,7 @@ components:
type: object type: object
DeviceConfig: DeviceConfig:
example: example:
pci_segment: 3 pci_segment: 6
path: path path: path
iommu: false iommu: false
id: id id: id
@ -1649,7 +1646,7 @@ components:
type: object type: object
VdpaConfig: VdpaConfig:
example: example:
pci_segment: 7 pci_segment: 3
path: path path: path
num_queues: 3 num_queues: 3
iommu: false iommu: false
@ -1674,7 +1671,7 @@ components:
type: object type: object
VsockConfig: VsockConfig:
example: example:
pci_segment: 7 pci_segment: 0
iommu: false iommu: false
socket: socket socket: socket
id: id id: id
@ -1703,7 +1700,7 @@ components:
SgxEpcConfig: SgxEpcConfig:
example: example:
prefault: false prefault: false
size: 6 size: 7
id: id id: id
properties: properties:
id: id:
@ -1731,8 +1728,8 @@ components:
type: object type: object
NumaDistance: NumaDistance:
example: example:
distance: 7 distance: 8
destination: 8 destination: 4
properties: properties:
destination: destination:
format: int32 format: int32
@ -1747,20 +1744,20 @@ components:
NumaConfig: NumaConfig:
example: example:
distances: distances:
- distance: 7 - distance: 8
destination: 8 destination: 4
- distance: 7 - distance: 8
destination: 8 destination: 4
cpus: cpus:
- 4 - 0
- 4 - 0
sgx_epc_sections: sgx_epc_sections:
- sgx_epc_sections - sgx_epc_sections
- sgx_epc_sections - sgx_epc_sections
memory_zones: memory_zones:
- memory_zones - memory_zones
- memory_zones - memory_zones
guest_numa_id: 0 guest_numa_id: 6
properties: properties:
guest_numa_id: guest_numa_id:
format: int32 format: int32
@ -1843,6 +1840,13 @@ components:
destination_url: destination_url:
type: string type: string
type: object type: object
VmCoredumpData:
example:
destination_url: destination_url
properties:
destination_url:
type: string
type: object
RestoreConfig: RestoreConfig:
example: example:
prefault: true prefault: true

View File

@ -1607,6 +1607,106 @@ func (a *DefaultApiService) VmAddVsockPutExecute(r ApiVmAddVsockPutRequest) (Pci
return localVarReturnValue, localVarHTTPResponse, nil return localVarReturnValue, localVarHTTPResponse, nil
} }
type ApiVmCoredumpPutRequest struct {
ctx _context.Context
ApiService *DefaultApiService
vmCoredumpData *VmCoredumpData
}
// The coredump configuration
func (r ApiVmCoredumpPutRequest) VmCoredumpData(vmCoredumpData VmCoredumpData) ApiVmCoredumpPutRequest {
r.vmCoredumpData = &vmCoredumpData
return r
}
func (r ApiVmCoredumpPutRequest) Execute() (*_nethttp.Response, error) {
return r.ApiService.VmCoredumpPutExecute(r)
}
/*
VmCoredumpPut Takes a VM coredump.
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return ApiVmCoredumpPutRequest
*/
func (a *DefaultApiService) VmCoredumpPut(ctx _context.Context) ApiVmCoredumpPutRequest {
return ApiVmCoredumpPutRequest{
ApiService: a,
ctx: ctx,
}
}
// Execute executes the request
func (a *DefaultApiService) VmCoredumpPutExecute(r ApiVmCoredumpPutRequest) (*_nethttp.Response, error) {
var (
localVarHTTPMethod = _nethttp.MethodPut
localVarPostBody interface{}
localVarFormFileName string
localVarFileName string
localVarFileBytes []byte
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.VmCoredumpPut")
if err != nil {
return nil, GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/vm.coredump"
localVarHeaderParams := make(map[string]string)
localVarQueryParams := _neturl.Values{}
localVarFormParams := _neturl.Values{}
if r.vmCoredumpData == nil {
return nil, reportError("vmCoredumpData is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.vmCoredumpData
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
if err != nil {
return nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarHTTPResponse, err
}
localVarBody, err := _ioutil.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = _ioutil.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarHTTPResponse, newErr
}
return localVarHTTPResponse, nil
}
type ApiVmCountersGetRequest struct { type ApiVmCountersGetRequest struct {
ctx _context.Context ctx _context.Context
ApiService *DefaultApiService ApiService *DefaultApiService

View File

@ -7,6 +7,7 @@ Name | Type | Description | Notes
**BootVcpus** | **int32** | | [default to 1] **BootVcpus** | **int32** | | [default to 1]
**MaxVcpus** | **int32** | | [default to 1] **MaxVcpus** | **int32** | | [default to 1]
**Topology** | Pointer to [**CpuTopology**](CpuTopology.md) | | [optional] **Topology** | Pointer to [**CpuTopology**](CpuTopology.md) | | [optional]
**KvmHyperv** | Pointer to **bool** | | [optional] [default to false]
**MaxPhysBits** | Pointer to **int32** | | [optional] **MaxPhysBits** | Pointer to **int32** | | [optional]
**Affinity** | Pointer to [**[]CpuAffinity**](CpuAffinity.md) | | [optional] **Affinity** | Pointer to [**[]CpuAffinity**](CpuAffinity.md) | | [optional]
**Features** | Pointer to [**CpuFeatures**](CpuFeatures.md) | | [optional] **Features** | Pointer to [**CpuFeatures**](CpuFeatures.md) | | [optional]
@ -95,6 +96,31 @@ SetTopology sets Topology field to given value.
HasTopology returns a boolean if a field has been set. HasTopology returns a boolean if a field has been set.
### GetKvmHyperv
`func (o *CpusConfig) GetKvmHyperv() bool`
GetKvmHyperv returns the KvmHyperv field if non-nil, zero value otherwise.
### GetKvmHypervOk
`func (o *CpusConfig) GetKvmHypervOk() (*bool, bool)`
GetKvmHypervOk returns a tuple with the KvmHyperv field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetKvmHyperv
`func (o *CpusConfig) SetKvmHyperv(v bool)`
SetKvmHyperv sets KvmHyperv field to given value.
### HasKvmHyperv
`func (o *CpusConfig) HasKvmHyperv() bool`
HasKvmHyperv returns a boolean if a field has been set.
### GetMaxPhysBits ### GetMaxPhysBits
`func (o *CpusConfig) GetMaxPhysBits() int32` `func (o *CpusConfig) GetMaxPhysBits() int32`

View File

@ -20,6 +20,7 @@ Method | HTTP request | Description
[**VmAddPmemPut**](DefaultApi.md#VmAddPmemPut) | **Put** /vm.add-pmem | Add a new pmem device to the VM [**VmAddPmemPut**](DefaultApi.md#VmAddPmemPut) | **Put** /vm.add-pmem | Add a new pmem device to the VM
[**VmAddVdpaPut**](DefaultApi.md#VmAddVdpaPut) | **Put** /vm.add-vdpa | Add a new vDPA device to the VM [**VmAddVdpaPut**](DefaultApi.md#VmAddVdpaPut) | **Put** /vm.add-vdpa | Add a new vDPA device to the VM
[**VmAddVsockPut**](DefaultApi.md#VmAddVsockPut) | **Put** /vm.add-vsock | Add a new vsock device to the VM [**VmAddVsockPut**](DefaultApi.md#VmAddVsockPut) | **Put** /vm.add-vsock | Add a new vsock device to the VM
[**VmCoredumpPut**](DefaultApi.md#VmCoredumpPut) | **Put** /vm.coredump | Takes a VM coredump.
[**VmCountersGet**](DefaultApi.md#VmCountersGet) | **Get** /vm.counters | Get counters from the VM [**VmCountersGet**](DefaultApi.md#VmCountersGet) | **Get** /vm.counters | Get counters from the VM
[**VmInfoGet**](DefaultApi.md#VmInfoGet) | **Get** /vm.info | Returns general information about the cloud-hypervisor Virtual Machine (VM) instance. [**VmInfoGet**](DefaultApi.md#VmInfoGet) | **Get** /vm.info | Returns general information about the cloud-hypervisor Virtual Machine (VM) instance.
[**VmReceiveMigrationPut**](DefaultApi.md#VmReceiveMigrationPut) | **Put** /vm.receive-migration | Receive a VM migration from URL [**VmReceiveMigrationPut**](DefaultApi.md#VmReceiveMigrationPut) | **Put** /vm.receive-migration | Receive a VM migration from URL
@ -698,7 +699,7 @@ import (
) )
func main() { func main() {
fsConfig := *openapiclient.NewFsConfig("Tag_example", "Socket_example", int32(123), int32(123), false, int64(123)) // FsConfig | The details of the new virtio-fs fsConfig := *openapiclient.NewFsConfig("Tag_example", "Socket_example", int32(123), int32(123)) // FsConfig | The details of the new virtio-fs
configuration := openapiclient.NewConfiguration() configuration := openapiclient.NewConfiguration()
api_client := openapiclient.NewAPIClient(configuration) api_client := openapiclient.NewAPIClient(configuration)
@ -999,6 +1000,68 @@ No authorization required
[[Back to README]](../README.md) [[Back to README]](../README.md)
## VmCoredumpPut
> VmCoredumpPut(ctx).VmCoredumpData(vmCoredumpData).Execute()
Takes a VM coredump.
### Example
```go
package main
import (
"context"
"fmt"
"os"
openapiclient "./openapi"
)
func main() {
vmCoredumpData := *openapiclient.NewVmCoredumpData() // VmCoredumpData | The coredump configuration
configuration := openapiclient.NewConfiguration()
api_client := openapiclient.NewAPIClient(configuration)
resp, r, err := api_client.DefaultApi.VmCoredumpPut(context.Background()).VmCoredumpData(vmCoredumpData).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.VmCoredumpPut``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
}
```
### Path Parameters
### Other Parameters
Other parameters are passed through a pointer to a apiVmCoredumpPutRequest struct via the builder pattern
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**vmCoredumpData** | [**VmCoredumpData**](VmCoredumpData.md) | The coredump configuration |
### Return type
(empty response body)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: Not defined
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)
## VmCountersGet ## VmCountersGet
> map[string]map[string]int64 VmCountersGet(ctx).Execute() > map[string]map[string]int64 VmCountersGet(ctx).Execute()

View File

@ -8,8 +8,6 @@ Name | Type | Description | Notes
**Socket** | **string** | | **Socket** | **string** | |
**NumQueues** | **int32** | | [default to 1] **NumQueues** | **int32** | | [default to 1]
**QueueSize** | **int32** | | [default to 1024] **QueueSize** | **int32** | | [default to 1024]
**Dax** | **bool** | | [default to true]
**CacheSize** | **int64** | |
**PciSegment** | Pointer to **int32** | | [optional] **PciSegment** | Pointer to **int32** | | [optional]
**Id** | Pointer to **string** | | [optional] **Id** | Pointer to **string** | | [optional]
@ -17,7 +15,7 @@ Name | Type | Description | Notes
### NewFsConfig ### NewFsConfig
`func NewFsConfig(tag string, socket string, numQueues int32, queueSize int32, dax bool, cacheSize int64, ) *FsConfig` `func NewFsConfig(tag string, socket string, numQueues int32, queueSize int32, ) *FsConfig`
NewFsConfig instantiates a new FsConfig object NewFsConfig instantiates a new FsConfig object
This constructor will assign default values to properties that have it defined, This constructor will assign default values to properties that have it defined,
@ -112,46 +110,6 @@ and a boolean to check if the value has been set.
SetQueueSize sets QueueSize field to given value. SetQueueSize sets QueueSize field to given value.
### GetDax
`func (o *FsConfig) GetDax() bool`
GetDax returns the Dax field if non-nil, zero value otherwise.
### GetDaxOk
`func (o *FsConfig) GetDaxOk() (*bool, bool)`
GetDaxOk returns a tuple with the Dax field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetDax
`func (o *FsConfig) SetDax(v bool)`
SetDax sets Dax field to given value.
### GetCacheSize
`func (o *FsConfig) GetCacheSize() int64`
GetCacheSize returns the CacheSize field if non-nil, zero value otherwise.
### GetCacheSizeOk
`func (o *FsConfig) GetCacheSizeOk() (*int64, bool)`
GetCacheSizeOk returns a tuple with the CacheSize field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetCacheSize
`func (o *FsConfig) SetCacheSize(v int64)`
SetCacheSize sets CacheSize field to given value.
### GetPciSegment ### GetPciSegment
`func (o *FsConfig) GetPciSegment() int32` `func (o *FsConfig) GetPciSegment() int32`

View File

@ -7,7 +7,6 @@ Name | Type | Description | Notes
**File** | **string** | | **File** | **string** | |
**Size** | Pointer to **int64** | | [optional] **Size** | Pointer to **int64** | | [optional]
**Iommu** | Pointer to **bool** | | [optional] [default to false] **Iommu** | Pointer to **bool** | | [optional] [default to false]
**Mergeable** | Pointer to **bool** | | [optional] [default to false]
**DiscardWrites** | Pointer to **bool** | | [optional] [default to false] **DiscardWrites** | Pointer to **bool** | | [optional] [default to false]
**PciSegment** | Pointer to **int32** | | [optional] **PciSegment** | Pointer to **int32** | | [optional]
**Id** | Pointer to **string** | | [optional] **Id** | Pointer to **string** | | [optional]
@ -101,31 +100,6 @@ SetIommu sets Iommu field to given value.
HasIommu returns a boolean if a field has been set. HasIommu returns a boolean if a field has been set.
### GetMergeable
`func (o *PmemConfig) GetMergeable() bool`
GetMergeable returns the Mergeable field if non-nil, zero value otherwise.
### GetMergeableOk
`func (o *PmemConfig) GetMergeableOk() (*bool, bool)`
GetMergeableOk returns a tuple with the Mergeable field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetMergeable
`func (o *PmemConfig) SetMergeable(v bool)`
SetMergeable sets Mergeable field to given value.
### HasMergeable
`func (o *PmemConfig) HasMergeable() bool`
HasMergeable returns a boolean if a field has been set.
### GetDiscardWrites ### GetDiscardWrites
`func (o *PmemConfig) GetDiscardWrites() bool` `func (o *PmemConfig) GetDiscardWrites() bool`

View File

@ -0,0 +1,56 @@
# VmCoredumpData
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**DestinationUrl** | Pointer to **string** | | [optional]
## Methods
### NewVmCoredumpData
`func NewVmCoredumpData() *VmCoredumpData`
NewVmCoredumpData instantiates a new VmCoredumpData object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed
### NewVmCoredumpDataWithDefaults
`func NewVmCoredumpDataWithDefaults() *VmCoredumpData`
NewVmCoredumpDataWithDefaults instantiates a new VmCoredumpData object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set
### GetDestinationUrl
`func (o *VmCoredumpData) GetDestinationUrl() string`
GetDestinationUrl returns the DestinationUrl field if non-nil, zero value otherwise.
### GetDestinationUrlOk
`func (o *VmCoredumpData) GetDestinationUrlOk() (*string, bool)`
GetDestinationUrlOk returns a tuple with the DestinationUrl field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetDestinationUrl
`func (o *VmCoredumpData) SetDestinationUrl(v string)`
SetDestinationUrl sets DestinationUrl field to given value.
### HasDestinationUrl
`func (o *VmCoredumpData) HasDestinationUrl() bool`
HasDestinationUrl returns a boolean if a field has been set.
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -19,6 +19,7 @@ type CpusConfig struct {
BootVcpus int32 `json:"boot_vcpus"` BootVcpus int32 `json:"boot_vcpus"`
MaxVcpus int32 `json:"max_vcpus"` MaxVcpus int32 `json:"max_vcpus"`
Topology *CpuTopology `json:"topology,omitempty"` Topology *CpuTopology `json:"topology,omitempty"`
KvmHyperv *bool `json:"kvm_hyperv,omitempty"`
MaxPhysBits *int32 `json:"max_phys_bits,omitempty"` MaxPhysBits *int32 `json:"max_phys_bits,omitempty"`
Affinity *[]CpuAffinity `json:"affinity,omitempty"` Affinity *[]CpuAffinity `json:"affinity,omitempty"`
Features *CpuFeatures `json:"features,omitempty"` Features *CpuFeatures `json:"features,omitempty"`
@ -32,6 +33,8 @@ func NewCpusConfig(bootVcpus int32, maxVcpus int32) *CpusConfig {
this := CpusConfig{} this := CpusConfig{}
this.BootVcpus = bootVcpus this.BootVcpus = bootVcpus
this.MaxVcpus = maxVcpus this.MaxVcpus = maxVcpus
var kvmHyperv bool = false
this.KvmHyperv = &kvmHyperv
return &this return &this
} }
@ -44,6 +47,8 @@ func NewCpusConfigWithDefaults() *CpusConfig {
this.BootVcpus = bootVcpus this.BootVcpus = bootVcpus
var maxVcpus int32 = 1 var maxVcpus int32 = 1
this.MaxVcpus = maxVcpus this.MaxVcpus = maxVcpus
var kvmHyperv bool = false
this.KvmHyperv = &kvmHyperv
return &this return &this
} }
@ -127,6 +132,38 @@ func (o *CpusConfig) SetTopology(v CpuTopology) {
o.Topology = &v o.Topology = &v
} }
// GetKvmHyperv returns the KvmHyperv field value if set, zero value otherwise.
func (o *CpusConfig) GetKvmHyperv() bool {
if o == nil || o.KvmHyperv == nil {
var ret bool
return ret
}
return *o.KvmHyperv
}
// GetKvmHypervOk returns a tuple with the KvmHyperv field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CpusConfig) GetKvmHypervOk() (*bool, bool) {
if o == nil || o.KvmHyperv == nil {
return nil, false
}
return o.KvmHyperv, true
}
// HasKvmHyperv returns a boolean if a field has been set.
func (o *CpusConfig) HasKvmHyperv() bool {
if o != nil && o.KvmHyperv != nil {
return true
}
return false
}
// SetKvmHyperv gets a reference to the given bool and assigns it to the KvmHyperv field.
func (o *CpusConfig) SetKvmHyperv(v bool) {
o.KvmHyperv = &v
}
// GetMaxPhysBits returns the MaxPhysBits field value if set, zero value otherwise. // GetMaxPhysBits returns the MaxPhysBits field value if set, zero value otherwise.
func (o *CpusConfig) GetMaxPhysBits() int32 { func (o *CpusConfig) GetMaxPhysBits() int32 {
if o == nil || o.MaxPhysBits == nil { if o == nil || o.MaxPhysBits == nil {
@ -234,6 +271,9 @@ func (o CpusConfig) MarshalJSON() ([]byte, error) {
if o.Topology != nil { if o.Topology != nil {
toSerialize["topology"] = o.Topology toSerialize["topology"] = o.Topology
} }
if o.KvmHyperv != nil {
toSerialize["kvm_hyperv"] = o.KvmHyperv
}
if o.MaxPhysBits != nil { if o.MaxPhysBits != nil {
toSerialize["max_phys_bits"] = o.MaxPhysBits toSerialize["max_phys_bits"] = o.MaxPhysBits
} }

View File

@ -20,8 +20,6 @@ type FsConfig struct {
Socket string `json:"socket"` Socket string `json:"socket"`
NumQueues int32 `json:"num_queues"` NumQueues int32 `json:"num_queues"`
QueueSize int32 `json:"queue_size"` QueueSize int32 `json:"queue_size"`
Dax bool `json:"dax"`
CacheSize int64 `json:"cache_size"`
PciSegment *int32 `json:"pci_segment,omitempty"` PciSegment *int32 `json:"pci_segment,omitempty"`
Id *string `json:"id,omitempty"` Id *string `json:"id,omitempty"`
} }
@ -30,14 +28,12 @@ type FsConfig struct {
// This constructor will assign default values to properties that have it defined, // This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments // and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed // will change when the set of required properties is changed
func NewFsConfig(tag string, socket string, numQueues int32, queueSize int32, dax bool, cacheSize int64) *FsConfig { func NewFsConfig(tag string, socket string, numQueues int32, queueSize int32) *FsConfig {
this := FsConfig{} this := FsConfig{}
this.Tag = tag this.Tag = tag
this.Socket = socket this.Socket = socket
this.NumQueues = numQueues this.NumQueues = numQueues
this.QueueSize = queueSize this.QueueSize = queueSize
this.Dax = dax
this.CacheSize = cacheSize
return &this return &this
} }
@ -50,8 +46,6 @@ func NewFsConfigWithDefaults() *FsConfig {
this.NumQueues = numQueues this.NumQueues = numQueues
var queueSize int32 = 1024 var queueSize int32 = 1024
this.QueueSize = queueSize this.QueueSize = queueSize
var dax bool = true
this.Dax = dax
return &this return &this
} }
@ -151,54 +145,6 @@ func (o *FsConfig) SetQueueSize(v int32) {
o.QueueSize = v o.QueueSize = v
} }
// GetDax returns the Dax field value
func (o *FsConfig) GetDax() bool {
if o == nil {
var ret bool
return ret
}
return o.Dax
}
// GetDaxOk returns a tuple with the Dax field value
// and a boolean to check if the value has been set.
func (o *FsConfig) GetDaxOk() (*bool, bool) {
if o == nil {
return nil, false
}
return &o.Dax, true
}
// SetDax sets field value
func (o *FsConfig) SetDax(v bool) {
o.Dax = v
}
// GetCacheSize returns the CacheSize field value
func (o *FsConfig) GetCacheSize() int64 {
if o == nil {
var ret int64
return ret
}
return o.CacheSize
}
// GetCacheSizeOk returns a tuple with the CacheSize field value
// and a boolean to check if the value has been set.
func (o *FsConfig) GetCacheSizeOk() (*int64, bool) {
if o == nil {
return nil, false
}
return &o.CacheSize, true
}
// SetCacheSize sets field value
func (o *FsConfig) SetCacheSize(v int64) {
o.CacheSize = v
}
// GetPciSegment returns the PciSegment field value if set, zero value otherwise. // GetPciSegment returns the PciSegment field value if set, zero value otherwise.
func (o *FsConfig) GetPciSegment() int32 { func (o *FsConfig) GetPciSegment() int32 {
if o == nil || o.PciSegment == nil { if o == nil || o.PciSegment == nil {
@ -277,12 +223,6 @@ func (o FsConfig) MarshalJSON() ([]byte, error) {
if true { if true {
toSerialize["queue_size"] = o.QueueSize toSerialize["queue_size"] = o.QueueSize
} }
if true {
toSerialize["dax"] = o.Dax
}
if true {
toSerialize["cache_size"] = o.CacheSize
}
if o.PciSegment != nil { if o.PciSegment != nil {
toSerialize["pci_segment"] = o.PciSegment toSerialize["pci_segment"] = o.PciSegment
} }

View File

@ -19,7 +19,6 @@ type PmemConfig struct {
File string `json:"file"` File string `json:"file"`
Size *int64 `json:"size,omitempty"` Size *int64 `json:"size,omitempty"`
Iommu *bool `json:"iommu,omitempty"` Iommu *bool `json:"iommu,omitempty"`
Mergeable *bool `json:"mergeable,omitempty"`
DiscardWrites *bool `json:"discard_writes,omitempty"` DiscardWrites *bool `json:"discard_writes,omitempty"`
PciSegment *int32 `json:"pci_segment,omitempty"` PciSegment *int32 `json:"pci_segment,omitempty"`
Id *string `json:"id,omitempty"` Id *string `json:"id,omitempty"`
@ -34,8 +33,6 @@ func NewPmemConfig(file string) *PmemConfig {
this.File = file this.File = file
var iommu bool = false var iommu bool = false
this.Iommu = &iommu this.Iommu = &iommu
var mergeable bool = false
this.Mergeable = &mergeable
var discardWrites bool = false var discardWrites bool = false
this.DiscardWrites = &discardWrites this.DiscardWrites = &discardWrites
return &this return &this
@ -48,8 +45,6 @@ func NewPmemConfigWithDefaults() *PmemConfig {
this := PmemConfig{} this := PmemConfig{}
var iommu bool = false var iommu bool = false
this.Iommu = &iommu this.Iommu = &iommu
var mergeable bool = false
this.Mergeable = &mergeable
var discardWrites bool = false var discardWrites bool = false
this.DiscardWrites = &discardWrites this.DiscardWrites = &discardWrites
return &this return &this
@ -143,38 +138,6 @@ func (o *PmemConfig) SetIommu(v bool) {
o.Iommu = &v o.Iommu = &v
} }
// GetMergeable returns the Mergeable field value if set, zero value otherwise.
func (o *PmemConfig) GetMergeable() bool {
if o == nil || o.Mergeable == nil {
var ret bool
return ret
}
return *o.Mergeable
}
// GetMergeableOk returns a tuple with the Mergeable field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PmemConfig) GetMergeableOk() (*bool, bool) {
if o == nil || o.Mergeable == nil {
return nil, false
}
return o.Mergeable, true
}
// HasMergeable returns a boolean if a field has been set.
func (o *PmemConfig) HasMergeable() bool {
if o != nil && o.Mergeable != nil {
return true
}
return false
}
// SetMergeable gets a reference to the given bool and assigns it to the Mergeable field.
func (o *PmemConfig) SetMergeable(v bool) {
o.Mergeable = &v
}
// GetDiscardWrites returns the DiscardWrites field value if set, zero value otherwise. // GetDiscardWrites returns the DiscardWrites field value if set, zero value otherwise.
func (o *PmemConfig) GetDiscardWrites() bool { func (o *PmemConfig) GetDiscardWrites() bool {
if o == nil || o.DiscardWrites == nil { if o == nil || o.DiscardWrites == nil {
@ -282,9 +245,6 @@ func (o PmemConfig) MarshalJSON() ([]byte, error) {
if o.Iommu != nil { if o.Iommu != nil {
toSerialize["iommu"] = o.Iommu toSerialize["iommu"] = o.Iommu
} }
if o.Mergeable != nil {
toSerialize["mergeable"] = o.Mergeable
}
if o.DiscardWrites != nil { if o.DiscardWrites != nil {
toSerialize["discard_writes"] = o.DiscardWrites toSerialize["discard_writes"] = o.DiscardWrites
} }

View File

@ -0,0 +1,113 @@
/*
Cloud Hypervisor API
Local HTTP based API for managing and inspecting a cloud-hypervisor virtual machine.
API version: 0.3.0
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package openapi
import (
"encoding/json"
)
// VmCoredumpData struct for VmCoredumpData
type VmCoredumpData struct {
DestinationUrl *string `json:"destination_url,omitempty"`
}
// NewVmCoredumpData instantiates a new VmCoredumpData object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewVmCoredumpData() *VmCoredumpData {
this := VmCoredumpData{}
return &this
}
// NewVmCoredumpDataWithDefaults instantiates a new VmCoredumpData object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewVmCoredumpDataWithDefaults() *VmCoredumpData {
this := VmCoredumpData{}
return &this
}
// GetDestinationUrl returns the DestinationUrl field value if set, zero value otherwise.
func (o *VmCoredumpData) GetDestinationUrl() string {
if o == nil || o.DestinationUrl == nil {
var ret string
return ret
}
return *o.DestinationUrl
}
// GetDestinationUrlOk returns a tuple with the DestinationUrl field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *VmCoredumpData) GetDestinationUrlOk() (*string, bool) {
if o == nil || o.DestinationUrl == nil {
return nil, false
}
return o.DestinationUrl, true
}
// HasDestinationUrl returns a boolean if a field has been set.
func (o *VmCoredumpData) HasDestinationUrl() bool {
if o != nil && o.DestinationUrl != nil {
return true
}
return false
}
// SetDestinationUrl gets a reference to the given string and assigns it to the DestinationUrl field.
func (o *VmCoredumpData) SetDestinationUrl(v string) {
o.DestinationUrl = &v
}
func (o VmCoredumpData) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if o.DestinationUrl != nil {
toSerialize["destination_url"] = o.DestinationUrl
}
return json.Marshal(toSerialize)
}
type NullableVmCoredumpData struct {
value *VmCoredumpData
isSet bool
}
func (v NullableVmCoredumpData) Get() *VmCoredumpData {
return v.value
}
func (v *NullableVmCoredumpData) Set(val *VmCoredumpData) {
v.value = val
v.isSet = true
}
func (v NullableVmCoredumpData) IsSet() bool {
return v.isSet
}
func (v *NullableVmCoredumpData) Unset() {
v.value = nil
v.isSet = false
}
func NewNullableVmCoredumpData(val *VmCoredumpData) *NullableVmCoredumpData {
return &NullableVmCoredumpData{value: val, isSet: true}
}
func (v NullableVmCoredumpData) MarshalJSON() ([]byte, error) {
return json.Marshal(v.value)
}
func (v *NullableVmCoredumpData) UnmarshalJSON(src []byte) error {
v.isSet = true
return json.Unmarshal(src, &v.value)
}

View File

@ -366,6 +366,24 @@ paths:
405: 405:
description: The VM instance could not be snapshotted because it is not booted. description: The VM instance could not be snapshotted because it is not booted.
/vm.coredump:
put:
summary: Takes a VM coredump.
requestBody:
description: The coredump configuration
content:
application/json:
schema:
$ref: '#/components/schemas/VmCoredumpData'
required: true
responses:
204:
description: The VM instance was successfully coredumped.
404:
description: The VM instance could not be coredumped because it is not created.
405:
description: The VM instance could not be coredumped because it is not booted.
/vm.restore: /vm.restore:
put: put:
summary: Restore a VM from a snapshot. summary: Restore a VM from a snapshot.
@ -596,6 +614,9 @@ components:
type: integer type: integer
topology: topology:
$ref: '#/components/schemas/CpuTopology' $ref: '#/components/schemas/CpuTopology'
kvm_hyperv:
type: boolean
default: false
max_phys_bits: max_phys_bits:
type: integer type: integer
affinity: affinity:
@ -870,8 +891,6 @@ components:
FsConfig: FsConfig:
required: required:
- cache_size
- dax
- num_queues - num_queues
- queue_size - queue_size
- socket - socket
@ -888,13 +907,6 @@ components:
queue_size: queue_size:
type: integer type: integer
default: 1024 default: 1024
dax:
type: boolean
default: true
cache_size:
type: integer
format: int64
default: 8589934592
pci_segment: pci_segment:
type: integer type: integer
format: int16 format: int16
@ -914,9 +926,6 @@ components:
iommu: iommu:
type: boolean type: boolean
default: false default: false
mergeable:
type: boolean
default: false
discard_writes: discard_writes:
type: boolean type: boolean
default: false default: false
@ -1110,6 +1119,12 @@ components:
destination_url: destination_url:
type: string type: string
VmCoredumpData:
type: object
properties:
destination_url:
type: string
RestoreConfig: RestoreConfig:
required: required:
- source_url - source_url

View File

@ -75,7 +75,7 @@ assets:
url: "https://github.com/cloud-hypervisor/cloud-hypervisor" url: "https://github.com/cloud-hypervisor/cloud-hypervisor"
uscan-url: >- uscan-url: >-
https://github.com/cloud-hypervisor/cloud-hypervisor/tags.*/v?(\d\S+)\.tar\.gz https://github.com/cloud-hypervisor/cloud-hypervisor/tags.*/v?(\d\S+)\.tar\.gz
version: "v24.0" version: "v25.0"
firecracker: firecracker:
description: "Firecracker micro-VMM" description: "Firecracker micro-VMM"