Merge pull request #5699 from likebreath/1118/backport_clh_v28.0

Stable-3.0 | Upgrade to Cloud Hypervisor v28.0
This commit is contained in:
Fabiano Fidêncio 2022-11-26 11:41:35 +01:00 committed by GitHub
commit b3760bb3a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 805 additions and 698 deletions

View File

@ -21,8 +21,11 @@ import (
"os"
"os/exec"
"path/filepath"
"regexp"
"strconv"
"strings"
"sync"
"sync/atomic"
"syscall"
"time"
@ -100,7 +103,7 @@ type clhClient interface {
// Add/remove CPUs to/from the VM
VmResizePut(ctx context.Context, vmResize chclient.VmResize) (*http.Response, error)
// Add VFIO PCI device to the VM
VmAddDevicePut(ctx context.Context, vmAddDevice chclient.VmAddDevice) (chclient.PciDeviceInfo, *http.Response, error)
VmAddDevicePut(ctx context.Context, deviceConfig chclient.DeviceConfig) (chclient.PciDeviceInfo, *http.Response, error)
// Add a new disk device to the VM
VmAddDiskPut(ctx context.Context, diskConfig chclient.DiskConfig) (chclient.PciDeviceInfo, *http.Response, error)
// Remove a device from the VM
@ -136,8 +139,8 @@ func (c *clhClientApi) VmResizePut(ctx context.Context, vmResize chclient.VmResi
return c.ApiInternal.VmResizePut(ctx).VmResize(vmResize).Execute()
}
func (c *clhClientApi) VmAddDevicePut(ctx context.Context, vmAddDevice chclient.VmAddDevice) (chclient.PciDeviceInfo, *http.Response, error) {
return c.ApiInternal.VmAddDevicePut(ctx).VmAddDevice(vmAddDevice).Execute()
func (c *clhClientApi) VmAddDevicePut(ctx context.Context, deviceConfig chclient.DeviceConfig) (chclient.PciDeviceInfo, *http.Response, error) {
return c.ApiInternal.VmAddDevicePut(ctx).DeviceConfig(deviceConfig).Execute()
}
func (c *clhClientApi) VmAddDiskPut(ctx context.Context, diskConfig chclient.DiskConfig) (chclient.PciDeviceInfo, *http.Response, error) {
@ -253,6 +256,8 @@ type cloudHypervisor struct {
vmconfig chclient.VmConfig
state CloudHypervisorState
config HypervisorConfig
stopped int32
mu sync.Mutex
}
var clhKernelParams = []Param{
@ -415,7 +420,13 @@ func (clh *cloudHypervisor) enableProtection() error {
return errors.New("Firmware path is not specified")
}
clh.vmconfig.Tdx = chclient.NewTdxConfig(firmwarePath)
clh.vmconfig.Payload.SetFirmware(firmwarePath)
if clh.vmconfig.Platform == nil {
clh.vmconfig.Platform = chclient.NewPlatformConfig()
}
clh.vmconfig.Platform.SetTdx(true)
return nil
case sevProtection:
@ -715,6 +726,55 @@ func (clh *cloudHypervisor) GetThreadIDs(ctx context.Context) (VcpuThreadIDs, er
vcpuInfo.vcpus = make(map[int]int)
getVcpus := func(pid int) (map[int]int, error) {
vcpus := make(map[int]int)
dir := fmt.Sprintf("/proc/%d/task", pid)
files, err := os.ReadDir(dir)
if err != nil {
return vcpus, err
}
pattern, err := regexp.Compile(`^vcpu\d+$`)
if err != nil {
return vcpus, err
}
for _, file := range files {
comm, err := os.ReadFile(fmt.Sprintf("%s/%s/comm", dir, file.Name()))
if err != nil {
return vcpus, err
}
pName := strings.TrimSpace(string(comm))
if !pattern.MatchString(pName) {
continue
}
cpuID := strings.TrimPrefix(pName, "vcpu")
threadID := file.Name()
k, err := strconv.Atoi(cpuID)
if err != nil {
return vcpus, err
}
v, err := strconv.Atoi(threadID)
if err != nil {
return vcpus, err
}
vcpus[k] = v
}
return vcpus, nil
}
if clh.state.PID == 0 {
return vcpuInfo, nil
}
vcpus, err := getVcpus(clh.state.PID)
if err != nil {
return vcpuInfo, err
}
vcpuInfo.vcpus = vcpus
return vcpuInfo, nil
}
@ -798,8 +858,7 @@ func (clh *cloudHypervisor) hotPlugVFIODevice(device *config.VFIODev) error {
defer cancel()
// Create the clh device config via the constructor to ensure default values are properly assigned
clhDevice := *chclient.NewVmAddDevice()
clhDevice.Path = &device.SysfsDev
clhDevice := *chclient.NewDeviceConfig(device.SysfsDev)
pciInfo, _, err := cl.VmAddDevicePut(ctx, clhDevice)
if err != nil {
return fmt.Errorf("Failed to hotplug device %+v %s", device, openAPIClientError(err))
@ -1022,9 +1081,21 @@ func (clh *cloudHypervisor) ResumeVM(ctx context.Context) error {
// StopVM will stop the Sandbox's VM.
func (clh *cloudHypervisor) StopVM(ctx context.Context, waitOnly bool) (err error) {
clh.mu.Lock()
defer func() {
if err == nil {
atomic.StoreInt32(&clh.stopped, 1)
}
clh.mu.Unlock()
}()
span, _ := katatrace.Trace(ctx, clh.Logger(), "StopVM", clhTracingTags, map[string]string{"sandbox_id": clh.id})
defer span.End()
clh.Logger().WithField("function", "StopVM").Info("Stop Sandbox")
if atomic.LoadInt32(&clh.stopped) != 0 {
clh.Logger().Info("Already stopped")
return nil
}
return clh.terminate(ctx, waitOnly)
}
@ -1326,16 +1397,20 @@ func (clh *cloudHypervisor) isClhRunning(timeout uint) (bool, error) {
pid := clh.state.PID
if err := syscall.Kill(pid, syscall.Signal(0)); err != nil {
if atomic.LoadInt32(&clh.stopped) != 0 {
return false, nil
}
timeStart := time.Now()
cl := clh.client()
for {
err := syscall.Kill(pid, syscall.Signal(0))
if err != nil {
return false, nil
}
ctx, cancel := context.WithTimeout(context.Background(), clh.getClhAPITimeout()*time.Second)
defer cancel()
_, _, err := cl.VmmPingGet(ctx)
_, _, err = cl.VmmPingGet(ctx)
cancel()
if err == nil {
return true, nil
} else {

View File

@ -103,7 +103,7 @@ func (c *clhClientMock) VmResizePut(ctx context.Context, vmResize chclient.VmRes
}
//nolint:golint
func (c *clhClientMock) VmAddDevicePut(ctx context.Context, vmAddDevice chclient.VmAddDevice) (chclient.PciDeviceInfo, *http.Response, error) {
func (c *clhClientMock) VmAddDevicePut(ctx context.Context, deviceConfig chclient.DeviceConfig) (chclient.PciDeviceInfo, *http.Response, error) {
return chclient.PciDeviceInfo{}, nil, nil
}

View File

@ -32,10 +32,9 @@ docs/RestoreConfig.md
docs/RngConfig.md
docs/SendMigrationData.md
docs/SgxEpcConfig.md
docs/TdxConfig.md
docs/TokenBucket.md
docs/TpmConfig.md
docs/VdpaConfig.md
docs/VmAddDevice.md
docs/VmConfig.md
docs/VmCoredumpData.md
docs/VmInfo.md
@ -73,10 +72,9 @@ model_restore_config.go
model_rng_config.go
model_send_migration_data.go
model_sgx_epc_config.go
model_tdx_config.go
model_token_bucket.go
model_tpm_config.go
model_vdpa_config.go
model_vm_add_device.go
model_vm_config.go
model_vm_coredump_data.go
model_vm_info.go

View File

@ -134,10 +134,9 @@ Class | Method | HTTP request | Description
- [RngConfig](docs/RngConfig.md)
- [SendMigrationData](docs/SendMigrationData.md)
- [SgxEpcConfig](docs/SgxEpcConfig.md)
- [TdxConfig](docs/TdxConfig.md)
- [TokenBucket](docs/TokenBucket.md)
- [TpmConfig](docs/TpmConfig.md)
- [VdpaConfig](docs/VdpaConfig.md)
- [VmAddDevice](docs/VmAddDevice.md)
- [VmConfig](docs/VmConfig.md)
- [VmCoredumpData](docs/VmCoredumpData.md)
- [VmInfo](docs/VmInfo.md)

View File

@ -171,7 +171,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/VmAddDevice'
$ref: '#/components/schemas/DeviceConfig'
description: The path of the new device
required: true
responses:
@ -425,7 +425,7 @@ components:
VmInfo:
description: Virtual Machine information
example:
memory_actual_size: 3
memory_actual_size: 7
state: Created
config:
console:
@ -433,7 +433,7 @@ components:
file: file
iommu: false
balloon:
size: 6
size: 1
deflate_on_oom: false
free_page_reporting: false
memory:
@ -469,6 +469,7 @@ components:
hotplug_size: 7
hotplug_size: 4
hotplug_method: Acpi
thp: true
disks:
- pci_segment: 8
path: path
@ -530,83 +531,81 @@ components:
- 3
- 3
devices:
- pci_segment: 6
- pci_segment: 3
path: path
iommu: false
id: id
- pci_segment: 6
- pci_segment: 3
path: path
iommu: false
id: id
vdpa:
- pci_segment: 3
- pci_segment: 7
path: path
num_queues: 3
iommu: false
id: id
- pci_segment: 3
- pci_segment: 7
path: path
num_queues: 3
iommu: false
id: id
numa:
- distances:
- distance: 8
destination: 4
- distance: 8
destination: 4
- distance: 7
destination: 8
- distance: 7
destination: 8
cpus:
- 0
- 0
- 4
- 4
sgx_epc_sections:
- sgx_epc_sections
- sgx_epc_sections
memory_zones:
- memory_zones
- memory_zones
guest_numa_id: 6
guest_numa_id: 0
- distances:
- distance: 8
destination: 4
- distance: 8
destination: 4
- distance: 7
destination: 8
- distance: 7
destination: 8
cpus:
- 0
- 0
- 4
- 4
sgx_epc_sections:
- sgx_epc_sections
- sgx_epc_sections
memory_zones:
- memory_zones
- memory_zones
guest_numa_id: 6
tdx:
firmware: firmware
guest_numa_id: 0
rng:
iommu: false
src: /dev/urandom
sgx_epc:
- prefault: false
size: 7
size: 6
id: id
- prefault: false
size: 7
size: 6
id: id
fs:
- pci_segment: 6
num_queues: 1
queue_size: 2
num_queues: 2
queue_size: 6
tag: tag
socket: socket
id: id
- pci_segment: 6
num_queues: 1
queue_size: 2
num_queues: 2
queue_size: 6
tag: tag
socket: socket
id: id
vsock:
pci_segment: 0
pci_segment: 7
iommu: false
socket: socket
id: id
@ -615,22 +614,25 @@ components:
iommu_segments:
- 3
- 3
num_pci_segments: 7
num_pci_segments: 3
oem_strings:
- oem_strings
- oem_strings
tdx: false
serial_number: serial_number
uuid: uuid
tpm:
socket: socket
pmem:
- pci_segment: 5
- pci_segment: 6
file: file
size: 6
size: 5
iommu: false
id: id
discard_writes: false
- pci_segment: 5
- pci_segment: 6
file: file
size: 6
size: 5
iommu: false
id: id
discard_writes: false
@ -640,14 +642,16 @@ components:
cmdline: cmdline
kernel: kernel
initramfs: initramfs
firmware: firmware
serial:
mode: "false"
file: file
iommu: false
net:
- tap: tap
num_queues: 9
queue_size: 6
host_mac: host_mac
num_queues: 6
queue_size: 3
ip: 192.168.249.1
rate_limiter_config:
ops:
@ -659,7 +663,8 @@ components:
one_time_burst: 0
refill_time: 0
mac: mac
pci_segment: 3
mtu: 9
pci_segment: 6
vhost_mode: Client
iommu: false
vhost_socket: vhost_socket
@ -667,8 +672,9 @@ components:
id: id
mask: 255.255.255.0
- tap: tap
num_queues: 9
queue_size: 6
host_mac: host_mac
num_queues: 6
queue_size: 3
ip: 192.168.249.1
rate_limiter_config:
ops:
@ -680,7 +686,8 @@ components:
one_time_burst: 0
refill_time: 0
mac: mac
pci_segment: 3
mtu: 9
pci_segment: 6
vhost_mode: Client
iommu: false
vhost_socket: vhost_socket
@ -769,7 +776,10 @@ components:
cmdline: cmdline
kernel: kernel
initramfs: initramfs
firmware: firmware
properties:
firmware:
type: string
kernel:
type: string
cmdline:
@ -785,7 +795,7 @@ components:
file: file
iommu: false
balloon:
size: 6
size: 1
deflate_on_oom: false
free_page_reporting: false
memory:
@ -821,6 +831,7 @@ components:
hotplug_size: 7
hotplug_size: 4
hotplug_method: Acpi
thp: true
disks:
- pci_segment: 8
path: path
@ -882,83 +893,81 @@ components:
- 3
- 3
devices:
- pci_segment: 6
- pci_segment: 3
path: path
iommu: false
id: id
- pci_segment: 6
- pci_segment: 3
path: path
iommu: false
id: id
vdpa:
- pci_segment: 3
- pci_segment: 7
path: path
num_queues: 3
iommu: false
id: id
- pci_segment: 3
- pci_segment: 7
path: path
num_queues: 3
iommu: false
id: id
numa:
- distances:
- distance: 8
destination: 4
- distance: 8
destination: 4
- distance: 7
destination: 8
- distance: 7
destination: 8
cpus:
- 0
- 0
- 4
- 4
sgx_epc_sections:
- sgx_epc_sections
- sgx_epc_sections
memory_zones:
- memory_zones
- memory_zones
guest_numa_id: 6
guest_numa_id: 0
- distances:
- distance: 8
destination: 4
- distance: 8
destination: 4
- distance: 7
destination: 8
- distance: 7
destination: 8
cpus:
- 0
- 0
- 4
- 4
sgx_epc_sections:
- sgx_epc_sections
- sgx_epc_sections
memory_zones:
- memory_zones
- memory_zones
guest_numa_id: 6
tdx:
firmware: firmware
guest_numa_id: 0
rng:
iommu: false
src: /dev/urandom
sgx_epc:
- prefault: false
size: 7
size: 6
id: id
- prefault: false
size: 7
size: 6
id: id
fs:
- pci_segment: 6
num_queues: 1
queue_size: 2
num_queues: 2
queue_size: 6
tag: tag
socket: socket
id: id
- pci_segment: 6
num_queues: 1
queue_size: 2
num_queues: 2
queue_size: 6
tag: tag
socket: socket
id: id
vsock:
pci_segment: 0
pci_segment: 7
iommu: false
socket: socket
id: id
@ -967,22 +976,25 @@ components:
iommu_segments:
- 3
- 3
num_pci_segments: 7
num_pci_segments: 3
oem_strings:
- oem_strings
- oem_strings
tdx: false
serial_number: serial_number
uuid: uuid
tpm:
socket: socket
pmem:
- pci_segment: 5
- pci_segment: 6
file: file
size: 6
size: 5
iommu: false
id: id
discard_writes: false
- pci_segment: 5
- pci_segment: 6
file: file
size: 6
size: 5
iommu: false
id: id
discard_writes: false
@ -992,14 +1004,16 @@ components:
cmdline: cmdline
kernel: kernel
initramfs: initramfs
firmware: firmware
serial:
mode: "false"
file: file
iommu: false
net:
- tap: tap
num_queues: 9
queue_size: 6
host_mac: host_mac
num_queues: 6
queue_size: 3
ip: 192.168.249.1
rate_limiter_config:
ops:
@ -1011,7 +1025,8 @@ components:
one_time_burst: 0
refill_time: 0
mac: mac
pci_segment: 3
mtu: 9
pci_segment: 6
vhost_mode: Client
iommu: false
vhost_socket: vhost_socket
@ -1019,8 +1034,9 @@ components:
id: id
mask: 255.255.255.0
- tap: tap
num_queues: 9
queue_size: 6
host_mac: host_mac
num_queues: 6
queue_size: 3
ip: 192.168.249.1
rate_limiter_config:
ops:
@ -1032,7 +1048,8 @@ components:
one_time_burst: 0
refill_time: 0
mac: mac
pci_segment: 3
mtu: 9
pci_segment: 6
vhost_mode: Client
iommu: false
vhost_socket: vhost_socket
@ -1084,8 +1101,6 @@ components:
items:
$ref: '#/components/schemas/SgxEpcConfig'
type: array
tdx:
$ref: '#/components/schemas/TdxConfig'
numa:
items:
$ref: '#/components/schemas/NumaConfig'
@ -1098,6 +1113,8 @@ components:
type: boolean
platform:
$ref: '#/components/schemas/PlatformConfig'
tpm:
$ref: '#/components/schemas/TpmConfig'
required:
- payload
type: object
@ -1191,10 +1208,11 @@ components:
iommu_segments:
- 3
- 3
num_pci_segments: 7
num_pci_segments: 3
oem_strings:
- oem_strings
- oem_strings
tdx: false
serial_number: serial_number
uuid: uuid
properties:
@ -1214,6 +1232,9 @@ components:
items:
type: string
type: array
tdx:
default: false
type: boolean
type: object
MemoryZoneConfig:
example:
@ -1298,6 +1319,7 @@ components:
hotplug_size: 7
hotplug_size: 4
hotplug_method: Acpi
thp: true
properties:
size:
format: int64
@ -1326,6 +1348,9 @@ components:
prefault:
default: false
type: boolean
thp:
default: true
type: boolean
zones:
items:
$ref: '#/components/schemas/MemoryZoneConfig'
@ -1442,8 +1467,9 @@ components:
NetConfig:
example:
tap: tap
num_queues: 9
queue_size: 6
host_mac: host_mac
num_queues: 6
queue_size: 3
ip: 192.168.249.1
rate_limiter_config:
ops:
@ -1455,7 +1481,8 @@ components:
one_time_burst: 0
refill_time: 0
mac: mac
pci_segment: 3
mtu: 9
pci_segment: 6
vhost_mode: Client
iommu: false
vhost_socket: vhost_socket
@ -1473,6 +1500,10 @@ components:
type: string
mac:
type: string
host_mac:
type: string
mtu:
type: integer
iommu:
default: false
type: boolean
@ -1514,7 +1545,7 @@ components:
type: object
BalloonConfig:
example:
size: 6
size: 1
deflate_on_oom: false
free_page_reporting: false
properties:
@ -1535,8 +1566,8 @@ components:
FsConfig:
example:
pci_segment: 6
num_queues: 1
queue_size: 2
num_queues: 2
queue_size: 6
tag: tag
socket: socket
id: id
@ -1564,9 +1595,9 @@ components:
type: object
PmemConfig:
example:
pci_segment: 5
pci_segment: 6
file: file
size: 6
size: 5
iommu: false
id: id
discard_writes: false
@ -1614,7 +1645,7 @@ components:
type: object
DeviceConfig:
example:
pci_segment: 6
pci_segment: 3
path: path
iommu: false
id: id
@ -1632,9 +1663,18 @@ components:
required:
- path
type: object
TpmConfig:
example:
socket: socket
properties:
socket:
type: string
required:
- socket
type: object
VdpaConfig:
example:
pci_segment: 3
pci_segment: 7
path: path
num_queues: 3
iommu: false
@ -1659,7 +1699,7 @@ components:
type: object
VsockConfig:
example:
pci_segment: 0
pci_segment: 7
iommu: false
socket: socket
id: id
@ -1688,7 +1728,7 @@ components:
SgxEpcConfig:
example:
prefault: false
size: 7
size: 6
id: id
properties:
id:
@ -1703,21 +1743,10 @@ components:
- id
- size
type: object
TdxConfig:
example:
firmware: firmware
properties:
firmware:
description: Path to the firmware that will be used to boot the TDx guest
up.
type: string
required:
- firmware
type: object
NumaDistance:
example:
distance: 8
destination: 4
distance: 7
destination: 8
properties:
destination:
format: int32
@ -1732,20 +1761,20 @@ components:
NumaConfig:
example:
distances:
- distance: 8
destination: 4
- distance: 8
destination: 4
- distance: 7
destination: 8
- distance: 7
destination: 8
cpus:
- 0
- 0
- 4
- 4
sgx_epc_sections:
- sgx_epc_sections
- sgx_epc_sections
memory_zones:
- memory_zones
- memory_zones
guest_numa_id: 6
guest_numa_id: 0
properties:
guest_numa_id:
format: int32
@ -1800,20 +1829,6 @@ components:
format: int64
type: integer
type: object
VmAddDevice:
example:
path: path
iommu: false
id: id
properties:
path:
type: string
iommu:
default: false
type: boolean
id:
type: string
type: object
VmRemoveDevice:
example:
id: id

View File

@ -831,14 +831,14 @@ func (a *DefaultApiService) ShutdownVMMExecute(r ApiShutdownVMMRequest) (*_netht
}
type ApiVmAddDevicePutRequest struct {
ctx _context.Context
ApiService *DefaultApiService
vmAddDevice *VmAddDevice
ctx _context.Context
ApiService *DefaultApiService
deviceConfig *DeviceConfig
}
// The path of the new device
func (r ApiVmAddDevicePutRequest) VmAddDevice(vmAddDevice VmAddDevice) ApiVmAddDevicePutRequest {
r.vmAddDevice = &vmAddDevice
func (r ApiVmAddDevicePutRequest) DeviceConfig(deviceConfig DeviceConfig) ApiVmAddDevicePutRequest {
r.deviceConfig = &deviceConfig
return r
}
@ -882,8 +882,8 @@ func (a *DefaultApiService) VmAddDevicePutExecute(r ApiVmAddDevicePutRequest) (P
localVarHeaderParams := make(map[string]string)
localVarQueryParams := _neturl.Values{}
localVarFormParams := _neturl.Values{}
if r.vmAddDevice == nil {
return localVarReturnValue, nil, reportError("vmAddDevice is required and must be specified")
if r.deviceConfig == nil {
return localVarReturnValue, nil, reportError("deviceConfig is required and must be specified")
}
// to determine the Content-Type header
@ -904,7 +904,7 @@ func (a *DefaultApiService) VmAddDevicePutExecute(r ApiVmAddDevicePutRequest) (P
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.vmAddDevice
localVarPostBody = r.deviceConfig
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
if err != nil {
return localVarReturnValue, nil, err

View File

@ -554,7 +554,7 @@ No authorization required
## VmAddDevicePut
> PciDeviceInfo VmAddDevicePut(ctx).VmAddDevice(vmAddDevice).Execute()
> PciDeviceInfo VmAddDevicePut(ctx).DeviceConfig(deviceConfig).Execute()
Add a new device to the VM
@ -571,11 +571,11 @@ import (
)
func main() {
vmAddDevice := *openapiclient.NewVmAddDevice() // VmAddDevice | The path of the new device
deviceConfig := *openapiclient.NewDeviceConfig("Path_example") // DeviceConfig | The path of the new device
configuration := openapiclient.NewConfiguration()
api_client := openapiclient.NewAPIClient(configuration)
resp, r, err := api_client.DefaultApi.VmAddDevicePut(context.Background()).VmAddDevice(vmAddDevice).Execute()
resp, r, err := api_client.DefaultApi.VmAddDevicePut(context.Background()).DeviceConfig(deviceConfig).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.VmAddDevicePut``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
@ -596,7 +596,7 @@ Other parameters are passed through a pointer to a apiVmAddDevicePutRequest stru
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**vmAddDevice** | [**VmAddDevice**](VmAddDevice.md) | The path of the new device |
**deviceConfig** | [**DeviceConfig**](DeviceConfig.md) | The path of the new device |
### Return type

View File

@ -13,6 +13,7 @@ Name | Type | Description | Notes
**Hugepages** | Pointer to **bool** | | [optional] [default to false]
**HugepageSize** | Pointer to **int64** | | [optional]
**Prefault** | Pointer to **bool** | | [optional] [default to false]
**Thp** | Pointer to **bool** | | [optional] [default to true]
**Zones** | Pointer to [**[]MemoryZoneConfig**](MemoryZoneConfig.md) | | [optional]
## Methods
@ -254,6 +255,31 @@ SetPrefault sets Prefault field to given value.
HasPrefault returns a boolean if a field has been set.
### GetThp
`func (o *MemoryConfig) GetThp() bool`
GetThp returns the Thp field if non-nil, zero value otherwise.
### GetThpOk
`func (o *MemoryConfig) GetThpOk() (*bool, bool)`
GetThpOk returns a tuple with the Thp field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetThp
`func (o *MemoryConfig) SetThp(v bool)`
SetThp sets Thp field to given value.
### HasThp
`func (o *MemoryConfig) HasThp() bool`
HasThp returns a boolean if a field has been set.
### GetZones
`func (o *MemoryConfig) GetZones() []MemoryZoneConfig`

View File

@ -8,6 +8,8 @@ Name | Type | Description | Notes
**Ip** | Pointer to **string** | | [optional] [default to "192.168.249.1"]
**Mask** | Pointer to **string** | | [optional] [default to "255.255.255.0"]
**Mac** | Pointer to **string** | | [optional]
**HostMac** | Pointer to **string** | | [optional]
**Mtu** | Pointer to **int32** | | [optional]
**Iommu** | Pointer to **bool** | | [optional] [default to false]
**NumQueues** | Pointer to **int32** | | [optional] [default to 2]
**QueueSize** | Pointer to **int32** | | [optional] [default to 256]
@ -137,6 +139,56 @@ SetMac sets Mac field to given value.
HasMac returns a boolean if a field has been set.
### GetHostMac
`func (o *NetConfig) GetHostMac() string`
GetHostMac returns the HostMac field if non-nil, zero value otherwise.
### GetHostMacOk
`func (o *NetConfig) GetHostMacOk() (*string, bool)`
GetHostMacOk returns a tuple with the HostMac field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetHostMac
`func (o *NetConfig) SetHostMac(v string)`
SetHostMac sets HostMac field to given value.
### HasHostMac
`func (o *NetConfig) HasHostMac() bool`
HasHostMac returns a boolean if a field has been set.
### GetMtu
`func (o *NetConfig) GetMtu() int32`
GetMtu returns the Mtu field if non-nil, zero value otherwise.
### GetMtuOk
`func (o *NetConfig) GetMtuOk() (*int32, bool)`
GetMtuOk returns a tuple with the Mtu field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetMtu
`func (o *NetConfig) SetMtu(v int32)`
SetMtu sets Mtu field to given value.
### HasMtu
`func (o *NetConfig) HasMtu() bool`
HasMtu returns a boolean if a field has been set.
### GetIommu
`func (o *NetConfig) GetIommu() bool`

View File

@ -4,6 +4,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Firmware** | Pointer to **string** | | [optional]
**Kernel** | Pointer to **string** | | [optional]
**Cmdline** | Pointer to **string** | | [optional]
**Initramfs** | Pointer to **string** | | [optional]
@ -27,6 +28,31 @@ NewPayloadConfigWithDefaults instantiates a new PayloadConfig 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
### GetFirmware
`func (o *PayloadConfig) GetFirmware() string`
GetFirmware returns the Firmware field if non-nil, zero value otherwise.
### GetFirmwareOk
`func (o *PayloadConfig) GetFirmwareOk() (*string, bool)`
GetFirmwareOk returns a tuple with the Firmware field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetFirmware
`func (o *PayloadConfig) SetFirmware(v string)`
SetFirmware sets Firmware field to given value.
### HasFirmware
`func (o *PayloadConfig) HasFirmware() bool`
HasFirmware returns a boolean if a field has been set.
### GetKernel
`func (o *PayloadConfig) GetKernel() string`

View File

@ -9,6 +9,7 @@ Name | Type | Description | Notes
**SerialNumber** | Pointer to **string** | | [optional]
**Uuid** | Pointer to **string** | | [optional]
**OemStrings** | Pointer to **[]string** | | [optional]
**Tdx** | Pointer to **bool** | | [optional] [default to false]
## Methods
@ -154,6 +155,31 @@ SetOemStrings sets OemStrings field to given value.
HasOemStrings returns a boolean if a field has been set.
### GetTdx
`func (o *PlatformConfig) GetTdx() bool`
GetTdx returns the Tdx field if non-nil, zero value otherwise.
### GetTdxOk
`func (o *PlatformConfig) GetTdxOk() (*bool, bool)`
GetTdxOk returns a tuple with the Tdx field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetTdx
`func (o *PlatformConfig) SetTdx(v bool)`
SetTdx sets Tdx field to given value.
### HasTdx
`func (o *PlatformConfig) HasTdx() bool`
HasTdx 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

@ -1,51 +0,0 @@
# TdxConfig
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Firmware** | **string** | Path to the firmware that will be used to boot the TDx guest up. |
## Methods
### NewTdxConfig
`func NewTdxConfig(firmware string, ) *TdxConfig`
NewTdxConfig instantiates a new TdxConfig 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
### NewTdxConfigWithDefaults
`func NewTdxConfigWithDefaults() *TdxConfig`
NewTdxConfigWithDefaults instantiates a new TdxConfig 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
### GetFirmware
`func (o *TdxConfig) GetFirmware() string`
GetFirmware returns the Firmware field if non-nil, zero value otherwise.
### GetFirmwareOk
`func (o *TdxConfig) GetFirmwareOk() (*string, bool)`
GetFirmwareOk returns a tuple with the Firmware field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetFirmware
`func (o *TdxConfig) SetFirmware(v string)`
SetFirmware sets Firmware field to given value.
[[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

@ -0,0 +1,51 @@
# TpmConfig
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Socket** | **string** | |
## Methods
### NewTpmConfig
`func NewTpmConfig(socket string, ) *TpmConfig`
NewTpmConfig instantiates a new TpmConfig 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
### NewTpmConfigWithDefaults
`func NewTpmConfigWithDefaults() *TpmConfig`
NewTpmConfigWithDefaults instantiates a new TpmConfig 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
### GetSocket
`func (o *TpmConfig) GetSocket() string`
GetSocket returns the Socket field if non-nil, zero value otherwise.
### GetSocketOk
`func (o *TpmConfig) GetSocketOk() (*string, bool)`
GetSocketOk returns a tuple with the Socket field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetSocket
`func (o *TpmConfig) SetSocket(v string)`
SetSocket sets Socket field to given value.
[[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

@ -1,108 +0,0 @@
# VmAddDevice
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Path** | Pointer to **string** | | [optional]
**Iommu** | Pointer to **bool** | | [optional] [default to false]
**Id** | Pointer to **string** | | [optional]
## Methods
### NewVmAddDevice
`func NewVmAddDevice() *VmAddDevice`
NewVmAddDevice instantiates a new VmAddDevice 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
### NewVmAddDeviceWithDefaults
`func NewVmAddDeviceWithDefaults() *VmAddDevice`
NewVmAddDeviceWithDefaults instantiates a new VmAddDevice 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
### GetPath
`func (o *VmAddDevice) GetPath() string`
GetPath returns the Path field if non-nil, zero value otherwise.
### GetPathOk
`func (o *VmAddDevice) GetPathOk() (*string, bool)`
GetPathOk returns a tuple with the Path field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetPath
`func (o *VmAddDevice) SetPath(v string)`
SetPath sets Path field to given value.
### HasPath
`func (o *VmAddDevice) HasPath() bool`
HasPath returns a boolean if a field has been set.
### GetIommu
`func (o *VmAddDevice) GetIommu() bool`
GetIommu returns the Iommu field if non-nil, zero value otherwise.
### GetIommuOk
`func (o *VmAddDevice) GetIommuOk() (*bool, bool)`
GetIommuOk returns a tuple with the Iommu field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetIommu
`func (o *VmAddDevice) SetIommu(v bool)`
SetIommu sets Iommu field to given value.
### HasIommu
`func (o *VmAddDevice) HasIommu() bool`
HasIommu returns a boolean if a field has been set.
### GetId
`func (o *VmAddDevice) GetId() string`
GetId returns the Id field if non-nil, zero value otherwise.
### GetIdOk
`func (o *VmAddDevice) GetIdOk() (*string, bool)`
GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetId
`func (o *VmAddDevice) SetId(v string)`
SetId sets Id field to given value.
### HasId
`func (o *VmAddDevice) HasId() bool`
HasId 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,11 +19,11 @@ Name | Type | Description | Notes
**Vdpa** | Pointer to [**[]VdpaConfig**](VdpaConfig.md) | | [optional]
**Vsock** | Pointer to [**VsockConfig**](VsockConfig.md) | | [optional]
**SgxEpc** | Pointer to [**[]SgxEpcConfig**](SgxEpcConfig.md) | | [optional]
**Tdx** | Pointer to [**TdxConfig**](TdxConfig.md) | | [optional]
**Numa** | Pointer to [**[]NumaConfig**](NumaConfig.md) | | [optional]
**Iommu** | Pointer to **bool** | | [optional] [default to false]
**Watchdog** | Pointer to **bool** | | [optional] [default to false]
**Platform** | Pointer to [**PlatformConfig**](PlatformConfig.md) | | [optional]
**Tpm** | Pointer to [**TpmConfig**](TpmConfig.md) | | [optional]
## Methods
@ -414,31 +414,6 @@ SetSgxEpc sets SgxEpc field to given value.
HasSgxEpc returns a boolean if a field has been set.
### GetTdx
`func (o *VmConfig) GetTdx() TdxConfig`
GetTdx returns the Tdx field if non-nil, zero value otherwise.
### GetTdxOk
`func (o *VmConfig) GetTdxOk() (*TdxConfig, bool)`
GetTdxOk returns a tuple with the Tdx field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetTdx
`func (o *VmConfig) SetTdx(v TdxConfig)`
SetTdx sets Tdx field to given value.
### HasTdx
`func (o *VmConfig) HasTdx() bool`
HasTdx returns a boolean if a field has been set.
### GetNuma
`func (o *VmConfig) GetNuma() []NumaConfig`
@ -539,6 +514,31 @@ SetPlatform sets Platform field to given value.
HasPlatform returns a boolean if a field has been set.
### GetTpm
`func (o *VmConfig) GetTpm() TpmConfig`
GetTpm returns the Tpm field if non-nil, zero value otherwise.
### GetTpmOk
`func (o *VmConfig) GetTpmOk() (*TpmConfig, bool)`
GetTpmOk returns a tuple with the Tpm field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.
### SetTpm
`func (o *VmConfig) SetTpm(v TpmConfig)`
SetTpm sets Tpm field to given value.
### HasTpm
`func (o *VmConfig) HasTpm() bool`
HasTpm 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

@ -25,6 +25,7 @@ type MemoryConfig struct {
Hugepages *bool `json:"hugepages,omitempty"`
HugepageSize *int64 `json:"hugepage_size,omitempty"`
Prefault *bool `json:"prefault,omitempty"`
Thp *bool `json:"thp,omitempty"`
Zones *[]MemoryZoneConfig `json:"zones,omitempty"`
}
@ -45,6 +46,8 @@ func NewMemoryConfig(size int64) *MemoryConfig {
this.Hugepages = &hugepages
var prefault bool = false
this.Prefault = &prefault
var thp bool = true
this.Thp = &thp
return &this
}
@ -63,6 +66,8 @@ func NewMemoryConfigWithDefaults() *MemoryConfig {
this.Hugepages = &hugepages
var prefault bool = false
this.Prefault = &prefault
var thp bool = true
this.Thp = &thp
return &this
}
@ -346,6 +351,38 @@ func (o *MemoryConfig) SetPrefault(v bool) {
o.Prefault = &v
}
// GetThp returns the Thp field value if set, zero value otherwise.
func (o *MemoryConfig) GetThp() bool {
if o == nil || o.Thp == nil {
var ret bool
return ret
}
return *o.Thp
}
// GetThpOk returns a tuple with the Thp field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *MemoryConfig) GetThpOk() (*bool, bool) {
if o == nil || o.Thp == nil {
return nil, false
}
return o.Thp, true
}
// HasThp returns a boolean if a field has been set.
func (o *MemoryConfig) HasThp() bool {
if o != nil && o.Thp != nil {
return true
}
return false
}
// SetThp gets a reference to the given bool and assigns it to the Thp field.
func (o *MemoryConfig) SetThp(v bool) {
o.Thp = &v
}
// GetZones returns the Zones field value if set, zero value otherwise.
func (o *MemoryConfig) GetZones() []MemoryZoneConfig {
if o == nil || o.Zones == nil {
@ -407,6 +444,9 @@ func (o MemoryConfig) MarshalJSON() ([]byte, error) {
if o.Prefault != nil {
toSerialize["prefault"] = o.Prefault
}
if o.Thp != nil {
toSerialize["thp"] = o.Thp
}
if o.Zones != nil {
toSerialize["zones"] = o.Zones
}

View File

@ -20,6 +20,8 @@ type NetConfig struct {
Ip *string `json:"ip,omitempty"`
Mask *string `json:"mask,omitempty"`
Mac *string `json:"mac,omitempty"`
HostMac *string `json:"host_mac,omitempty"`
Mtu *int32 `json:"mtu,omitempty"`
Iommu *bool `json:"iommu,omitempty"`
NumQueues *int32 `json:"num_queues,omitempty"`
QueueSize *int32 `json:"queue_size,omitempty"`
@ -204,6 +206,70 @@ func (o *NetConfig) SetMac(v string) {
o.Mac = &v
}
// GetHostMac returns the HostMac field value if set, zero value otherwise.
func (o *NetConfig) GetHostMac() string {
if o == nil || o.HostMac == nil {
var ret string
return ret
}
return *o.HostMac
}
// GetHostMacOk returns a tuple with the HostMac field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *NetConfig) GetHostMacOk() (*string, bool) {
if o == nil || o.HostMac == nil {
return nil, false
}
return o.HostMac, true
}
// HasHostMac returns a boolean if a field has been set.
func (o *NetConfig) HasHostMac() bool {
if o != nil && o.HostMac != nil {
return true
}
return false
}
// SetHostMac gets a reference to the given string and assigns it to the HostMac field.
func (o *NetConfig) SetHostMac(v string) {
o.HostMac = &v
}
// GetMtu returns the Mtu field value if set, zero value otherwise.
func (o *NetConfig) GetMtu() int32 {
if o == nil || o.Mtu == nil {
var ret int32
return ret
}
return *o.Mtu
}
// GetMtuOk returns a tuple with the Mtu field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *NetConfig) GetMtuOk() (*int32, bool) {
if o == nil || o.Mtu == nil {
return nil, false
}
return o.Mtu, true
}
// HasMtu returns a boolean if a field has been set.
func (o *NetConfig) HasMtu() bool {
if o != nil && o.Mtu != nil {
return true
}
return false
}
// SetMtu gets a reference to the given int32 and assigns it to the Mtu field.
func (o *NetConfig) SetMtu(v int32) {
o.Mtu = &v
}
// GetIommu returns the Iommu field value if set, zero value otherwise.
func (o *NetConfig) GetIommu() bool {
if o == nil || o.Iommu == nil {
@ -506,6 +572,12 @@ func (o NetConfig) MarshalJSON() ([]byte, error) {
if o.Mac != nil {
toSerialize["mac"] = o.Mac
}
if o.HostMac != nil {
toSerialize["host_mac"] = o.HostMac
}
if o.Mtu != nil {
toSerialize["mtu"] = o.Mtu
}
if o.Iommu != nil {
toSerialize["iommu"] = o.Iommu
}

View File

@ -16,6 +16,7 @@ import (
// PayloadConfig Payloads to boot in guest
type PayloadConfig struct {
Firmware *string `json:"firmware,omitempty"`
Kernel *string `json:"kernel,omitempty"`
Cmdline *string `json:"cmdline,omitempty"`
Initramfs *string `json:"initramfs,omitempty"`
@ -38,6 +39,38 @@ func NewPayloadConfigWithDefaults() *PayloadConfig {
return &this
}
// GetFirmware returns the Firmware field value if set, zero value otherwise.
func (o *PayloadConfig) GetFirmware() string {
if o == nil || o.Firmware == nil {
var ret string
return ret
}
return *o.Firmware
}
// GetFirmwareOk returns a tuple with the Firmware field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PayloadConfig) GetFirmwareOk() (*string, bool) {
if o == nil || o.Firmware == nil {
return nil, false
}
return o.Firmware, true
}
// HasFirmware returns a boolean if a field has been set.
func (o *PayloadConfig) HasFirmware() bool {
if o != nil && o.Firmware != nil {
return true
}
return false
}
// SetFirmware gets a reference to the given string and assigns it to the Firmware field.
func (o *PayloadConfig) SetFirmware(v string) {
o.Firmware = &v
}
// GetKernel returns the Kernel field value if set, zero value otherwise.
func (o *PayloadConfig) GetKernel() string {
if o == nil || o.Kernel == nil {
@ -136,6 +169,9 @@ func (o *PayloadConfig) SetInitramfs(v string) {
func (o PayloadConfig) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if o.Firmware != nil {
toSerialize["firmware"] = o.Firmware
}
if o.Kernel != nil {
toSerialize["kernel"] = o.Kernel
}

View File

@ -21,6 +21,7 @@ type PlatformConfig struct {
SerialNumber *string `json:"serial_number,omitempty"`
Uuid *string `json:"uuid,omitempty"`
OemStrings *[]string `json:"oem_strings,omitempty"`
Tdx *bool `json:"tdx,omitempty"`
}
// NewPlatformConfig instantiates a new PlatformConfig object
@ -29,6 +30,8 @@ type PlatformConfig struct {
// will change when the set of required properties is changed
func NewPlatformConfig() *PlatformConfig {
this := PlatformConfig{}
var tdx bool = false
this.Tdx = &tdx
return &this
}
@ -37,6 +40,8 @@ func NewPlatformConfig() *PlatformConfig {
// but it doesn't guarantee that properties required by API are set
func NewPlatformConfigWithDefaults() *PlatformConfig {
this := PlatformConfig{}
var tdx bool = false
this.Tdx = &tdx
return &this
}
@ -200,6 +205,38 @@ func (o *PlatformConfig) SetOemStrings(v []string) {
o.OemStrings = &v
}
// GetTdx returns the Tdx field value if set, zero value otherwise.
func (o *PlatformConfig) GetTdx() bool {
if o == nil || o.Tdx == nil {
var ret bool
return ret
}
return *o.Tdx
}
// GetTdxOk returns a tuple with the Tdx field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *PlatformConfig) GetTdxOk() (*bool, bool) {
if o == nil || o.Tdx == nil {
return nil, false
}
return o.Tdx, true
}
// HasTdx returns a boolean if a field has been set.
func (o *PlatformConfig) HasTdx() bool {
if o != nil && o.Tdx != nil {
return true
}
return false
}
// SetTdx gets a reference to the given bool and assigns it to the Tdx field.
func (o *PlatformConfig) SetTdx(v bool) {
o.Tdx = &v
}
func (o PlatformConfig) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if o.NumPciSegments != nil {
@ -217,6 +254,9 @@ func (o PlatformConfig) MarshalJSON() ([]byte, error) {
if o.OemStrings != nil {
toSerialize["oem_strings"] = o.OemStrings
}
if o.Tdx != nil {
toSerialize["tdx"] = o.Tdx
}
return json.Marshal(toSerialize)
}

View File

@ -1,107 +0,0 @@
/*
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"
)
// TdxConfig struct for TdxConfig
type TdxConfig struct {
// Path to the firmware that will be used to boot the TDx guest up.
Firmware string `json:"firmware"`
}
// NewTdxConfig instantiates a new TdxConfig 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 NewTdxConfig(firmware string) *TdxConfig {
this := TdxConfig{}
this.Firmware = firmware
return &this
}
// NewTdxConfigWithDefaults instantiates a new TdxConfig 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 NewTdxConfigWithDefaults() *TdxConfig {
this := TdxConfig{}
return &this
}
// GetFirmware returns the Firmware field value
func (o *TdxConfig) GetFirmware() string {
if o == nil {
var ret string
return ret
}
return o.Firmware
}
// GetFirmwareOk returns a tuple with the Firmware field value
// and a boolean to check if the value has been set.
func (o *TdxConfig) GetFirmwareOk() (*string, bool) {
if o == nil {
return nil, false
}
return &o.Firmware, true
}
// SetFirmware sets field value
func (o *TdxConfig) SetFirmware(v string) {
o.Firmware = v
}
func (o TdxConfig) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if true {
toSerialize["firmware"] = o.Firmware
}
return json.Marshal(toSerialize)
}
type NullableTdxConfig struct {
value *TdxConfig
isSet bool
}
func (v NullableTdxConfig) Get() *TdxConfig {
return v.value
}
func (v *NullableTdxConfig) Set(val *TdxConfig) {
v.value = val
v.isSet = true
}
func (v NullableTdxConfig) IsSet() bool {
return v.isSet
}
func (v *NullableTdxConfig) Unset() {
v.value = nil
v.isSet = false
}
func NewNullableTdxConfig(val *TdxConfig) *NullableTdxConfig {
return &NullableTdxConfig{value: val, isSet: true}
}
func (v NullableTdxConfig) MarshalJSON() ([]byte, error) {
return json.Marshal(v.value)
}
func (v *NullableTdxConfig) UnmarshalJSON(src []byte) error {
v.isSet = true
return json.Unmarshal(src, &v.value)
}

View File

@ -0,0 +1,106 @@
/*
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"
)
// TpmConfig struct for TpmConfig
type TpmConfig struct {
Socket string `json:"socket"`
}
// NewTpmConfig instantiates a new TpmConfig 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 NewTpmConfig(socket string) *TpmConfig {
this := TpmConfig{}
this.Socket = socket
return &this
}
// NewTpmConfigWithDefaults instantiates a new TpmConfig 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 NewTpmConfigWithDefaults() *TpmConfig {
this := TpmConfig{}
return &this
}
// GetSocket returns the Socket field value
func (o *TpmConfig) GetSocket() string {
if o == nil {
var ret string
return ret
}
return o.Socket
}
// GetSocketOk returns a tuple with the Socket field value
// and a boolean to check if the value has been set.
func (o *TpmConfig) GetSocketOk() (*string, bool) {
if o == nil {
return nil, false
}
return &o.Socket, true
}
// SetSocket sets field value
func (o *TpmConfig) SetSocket(v string) {
o.Socket = v
}
func (o TpmConfig) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if true {
toSerialize["socket"] = o.Socket
}
return json.Marshal(toSerialize)
}
type NullableTpmConfig struct {
value *TpmConfig
isSet bool
}
func (v NullableTpmConfig) Get() *TpmConfig {
return v.value
}
func (v *NullableTpmConfig) Set(val *TpmConfig) {
v.value = val
v.isSet = true
}
func (v NullableTpmConfig) IsSet() bool {
return v.isSet
}
func (v *NullableTpmConfig) Unset() {
v.value = nil
v.isSet = false
}
func NewNullableTpmConfig(val *TpmConfig) *NullableTpmConfig {
return &NullableTpmConfig{value: val, isSet: true}
}
func (v NullableTpmConfig) MarshalJSON() ([]byte, error) {
return json.Marshal(v.value)
}
func (v *NullableTpmConfig) UnmarshalJSON(src []byte) error {
v.isSet = true
return json.Unmarshal(src, &v.value)
}

View File

@ -1,189 +0,0 @@
/*
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"
)
// VmAddDevice struct for VmAddDevice
type VmAddDevice struct {
Path *string `json:"path,omitempty"`
Iommu *bool `json:"iommu,omitempty"`
Id *string `json:"id,omitempty"`
}
// NewVmAddDevice instantiates a new VmAddDevice 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 NewVmAddDevice() *VmAddDevice {
this := VmAddDevice{}
var iommu bool = false
this.Iommu = &iommu
return &this
}
// NewVmAddDeviceWithDefaults instantiates a new VmAddDevice 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 NewVmAddDeviceWithDefaults() *VmAddDevice {
this := VmAddDevice{}
var iommu bool = false
this.Iommu = &iommu
return &this
}
// GetPath returns the Path field value if set, zero value otherwise.
func (o *VmAddDevice) GetPath() string {
if o == nil || o.Path == nil {
var ret string
return ret
}
return *o.Path
}
// GetPathOk returns a tuple with the Path field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *VmAddDevice) GetPathOk() (*string, bool) {
if o == nil || o.Path == nil {
return nil, false
}
return o.Path, true
}
// HasPath returns a boolean if a field has been set.
func (o *VmAddDevice) HasPath() bool {
if o != nil && o.Path != nil {
return true
}
return false
}
// SetPath gets a reference to the given string and assigns it to the Path field.
func (o *VmAddDevice) SetPath(v string) {
o.Path = &v
}
// GetIommu returns the Iommu field value if set, zero value otherwise.
func (o *VmAddDevice) GetIommu() bool {
if o == nil || o.Iommu == nil {
var ret bool
return ret
}
return *o.Iommu
}
// GetIommuOk returns a tuple with the Iommu field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *VmAddDevice) GetIommuOk() (*bool, bool) {
if o == nil || o.Iommu == nil {
return nil, false
}
return o.Iommu, true
}
// HasIommu returns a boolean if a field has been set.
func (o *VmAddDevice) HasIommu() bool {
if o != nil && o.Iommu != nil {
return true
}
return false
}
// SetIommu gets a reference to the given bool and assigns it to the Iommu field.
func (o *VmAddDevice) SetIommu(v bool) {
o.Iommu = &v
}
// GetId returns the Id field value if set, zero value otherwise.
func (o *VmAddDevice) GetId() string {
if o == nil || o.Id == nil {
var ret string
return ret
}
return *o.Id
}
// GetIdOk returns a tuple with the Id field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *VmAddDevice) GetIdOk() (*string, bool) {
if o == nil || o.Id == nil {
return nil, false
}
return o.Id, true
}
// HasId returns a boolean if a field has been set.
func (o *VmAddDevice) HasId() bool {
if o != nil && o.Id != nil {
return true
}
return false
}
// SetId gets a reference to the given string and assigns it to the Id field.
func (o *VmAddDevice) SetId(v string) {
o.Id = &v
}
func (o VmAddDevice) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if o.Path != nil {
toSerialize["path"] = o.Path
}
if o.Iommu != nil {
toSerialize["iommu"] = o.Iommu
}
if o.Id != nil {
toSerialize["id"] = o.Id
}
return json.Marshal(toSerialize)
}
type NullableVmAddDevice struct {
value *VmAddDevice
isSet bool
}
func (v NullableVmAddDevice) Get() *VmAddDevice {
return v.value
}
func (v *NullableVmAddDevice) Set(val *VmAddDevice) {
v.value = val
v.isSet = true
}
func (v NullableVmAddDevice) IsSet() bool {
return v.isSet
}
func (v *NullableVmAddDevice) Unset() {
v.value = nil
v.isSet = false
}
func NewNullableVmAddDevice(val *VmAddDevice) *NullableVmAddDevice {
return &NullableVmAddDevice{value: val, isSet: true}
}
func (v NullableVmAddDevice) MarshalJSON() ([]byte, error) {
return json.Marshal(v.value)
}
func (v *NullableVmAddDevice) UnmarshalJSON(src []byte) error {
v.isSet = true
return json.Unmarshal(src, &v.value)
}

View File

@ -31,11 +31,11 @@ type VmConfig struct {
Vdpa *[]VdpaConfig `json:"vdpa,omitempty"`
Vsock *VsockConfig `json:"vsock,omitempty"`
SgxEpc *[]SgxEpcConfig `json:"sgx_epc,omitempty"`
Tdx *TdxConfig `json:"tdx,omitempty"`
Numa *[]NumaConfig `json:"numa,omitempty"`
Iommu *bool `json:"iommu,omitempty"`
Watchdog *bool `json:"watchdog,omitempty"`
Platform *PlatformConfig `json:"platform,omitempty"`
Tpm *TpmConfig `json:"tpm,omitempty"`
}
// NewVmConfig instantiates a new VmConfig object
@ -536,38 +536,6 @@ func (o *VmConfig) SetSgxEpc(v []SgxEpcConfig) {
o.SgxEpc = &v
}
// GetTdx returns the Tdx field value if set, zero value otherwise.
func (o *VmConfig) GetTdx() TdxConfig {
if o == nil || o.Tdx == nil {
var ret TdxConfig
return ret
}
return *o.Tdx
}
// GetTdxOk returns a tuple with the Tdx field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *VmConfig) GetTdxOk() (*TdxConfig, bool) {
if o == nil || o.Tdx == nil {
return nil, false
}
return o.Tdx, true
}
// HasTdx returns a boolean if a field has been set.
func (o *VmConfig) HasTdx() bool {
if o != nil && o.Tdx != nil {
return true
}
return false
}
// SetTdx gets a reference to the given TdxConfig and assigns it to the Tdx field.
func (o *VmConfig) SetTdx(v TdxConfig) {
o.Tdx = &v
}
// GetNuma returns the Numa field value if set, zero value otherwise.
func (o *VmConfig) GetNuma() []NumaConfig {
if o == nil || o.Numa == nil {
@ -696,6 +664,38 @@ func (o *VmConfig) SetPlatform(v PlatformConfig) {
o.Platform = &v
}
// GetTpm returns the Tpm field value if set, zero value otherwise.
func (o *VmConfig) GetTpm() TpmConfig {
if o == nil || o.Tpm == nil {
var ret TpmConfig
return ret
}
return *o.Tpm
}
// GetTpmOk returns a tuple with the Tpm field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *VmConfig) GetTpmOk() (*TpmConfig, bool) {
if o == nil || o.Tpm == nil {
return nil, false
}
return o.Tpm, true
}
// HasTpm returns a boolean if a field has been set.
func (o *VmConfig) HasTpm() bool {
if o != nil && o.Tpm != nil {
return true
}
return false
}
// SetTpm gets a reference to the given TpmConfig and assigns it to the Tpm field.
func (o *VmConfig) SetTpm(v TpmConfig) {
o.Tpm = &v
}
func (o VmConfig) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
if o.Cpus != nil {
@ -743,9 +743,6 @@ func (o VmConfig) MarshalJSON() ([]byte, error) {
if o.SgxEpc != nil {
toSerialize["sgx_epc"] = o.SgxEpc
}
if o.Tdx != nil {
toSerialize["tdx"] = o.Tdx
}
if o.Numa != nil {
toSerialize["numa"] = o.Numa
}
@ -758,6 +755,9 @@ func (o VmConfig) MarshalJSON() ([]byte, error) {
if o.Platform != nil {
toSerialize["platform"] = o.Platform
}
if o.Tpm != nil {
toSerialize["tpm"] = o.Tpm
}
return json.Marshal(toSerialize)
}

View File

@ -185,7 +185,7 @@ paths:
content:
application/json:
schema:
$ref: "#/components/schemas/VmAddDevice"
$ref: "#/components/schemas/DeviceConfig"
required: true
responses:
200:
@ -502,6 +502,8 @@ components:
PayloadConfig:
type: object
properties:
firmware:
type: string
kernel:
type: string
cmdline:
@ -559,8 +561,6 @@ components:
type: array
items:
$ref: "#/components/schemas/SgxEpcConfig"
tdx:
$ref: "#/components/schemas/TdxConfig"
numa:
type: array
items:
@ -573,6 +573,8 @@ components:
default: false
platform:
$ref: "#/components/schemas/PlatformConfig"
tpm:
$ref: "#/components/schemas/TpmConfig"
description: Virtual machine configuration
CpuAffinity:
@ -650,6 +652,9 @@ components:
type: array
items:
type: string
tdx:
type: boolean
default: false
MemoryZoneConfig:
required:
@ -723,6 +728,9 @@ components:
prefault:
type: boolean
default: false
thp:
type: boolean
default: true
zones:
type: array
items:
@ -818,6 +826,10 @@ components:
default: "255.255.255.0"
mac:
type: string
host_mac:
type: string
mtu:
type: integer
iommu:
type: boolean
default: false
@ -948,6 +960,14 @@ components:
id:
type: string
TpmConfig:
required:
- socket
type: object
properties:
socket:
type: string
VdpaConfig:
required:
- path
@ -1006,15 +1026,6 @@ components:
type: boolean
default: false
TdxConfig:
required:
- firmware
type: object
properties:
firmware:
type: string
description: Path to the firmware that will be used to boot the TDx guest up.
NumaDistance:
required:
- destination
@ -1079,17 +1090,6 @@ components:
type: integer
format: int64
VmAddDevice:
type: object
properties:
path:
type: string
iommu:
type: boolean
default: false
id:
type: string
VmRemoveDevice:
type: object
properties:

View File

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