mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-27 12:08:58 +00:00
CCv0: Merge main into CCv0 branch
Merge remote-tracking branch 'upstream/main' into CCv0 Fixes: #5553 Signed-off-by: Megan Wright <megan.wright@ibm.com>
This commit is contained in:
commit
61ec234b6a
@ -64,8 +64,8 @@ The kata-runtime is controlled by TOKIO_RUNTIME_WORKER_THREADS to run the OS thr
|
|||||||
├─ TTRPC listener thread(M * tokio task)
|
├─ TTRPC listener thread(M * tokio task)
|
||||||
├─ TTRPC client handler thread(7 * M * tokio task)
|
├─ TTRPC client handler thread(7 * M * tokio task)
|
||||||
├─ container stdin io thread(M * tokio task)
|
├─ container stdin io thread(M * tokio task)
|
||||||
├─ container stdin io thread(M * tokio task)
|
├─ container stdout io thread(M * tokio task)
|
||||||
└─ container stdin io thread(M * tokio task)
|
└─ container stderr io thread(M * tokio task)
|
||||||
```
|
```
|
||||||
### Extensible Framework
|
### Extensible Framework
|
||||||
The Kata 3.x runtime is designed with the extension of service, runtime, and hypervisor, combined with configuration to meet the needs of different scenarios. At present, the service provides a register mechanism to support multiple services. Services could interact with runtime through messages. In addition, the runtime handler handles messages from services. To meet the needs of a binary that supports multiple runtimes and hypervisors, the startup must obtain the runtime handler type and hypervisor type through configuration.
|
The Kata 3.x runtime is designed with the extension of service, runtime, and hypervisor, combined with configuration to meet the needs of different scenarios. At present, the service provides a register mechanism to support multiple services. Services could interact with runtime through messages. In addition, the runtime handler handles messages from services. To meet the needs of a binary that supports multiple runtimes and hypervisors, the startup must obtain the runtime handler type and hypervisor type through configuration.
|
||||||
|
@ -24,7 +24,7 @@ architectures:
|
|||||||
|
|
||||||
| Installation method | Description | Automatic updates | Use case | Availability
|
| Installation method | Description | Automatic updates | Use case | Availability
|
||||||
|------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------|-----------------------------------------------------------------------------------------------|----------- |
|
|------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------|-----------------------------------------------------------------------------------------------|----------- |
|
||||||
| [Using kata-deploy](#kata-deploy-installation) | The preferred way to deploy the Kata Containers distributed binaries on a Kubernetes cluster | **No!** | Best way to give it a try on kata-containers on an already up and running Kubernetes cluster. | No |
|
| [Using kata-deploy](#kata-deploy-installation) | The preferred way to deploy the Kata Containers distributed binaries on a Kubernetes cluster | **No!** | Best way to give it a try on kata-containers on an already up and running Kubernetes cluster. | Yes |
|
||||||
| [Using official distro packages](#official-packages) | Kata packages provided by Linux distributions official repositories | yes | Recommended for most users. | No |
|
| [Using official distro packages](#official-packages) | Kata packages provided by Linux distributions official repositories | yes | Recommended for most users. | No |
|
||||||
| [Using snap](#snap-installation) | Easy to install | yes | Good alternative to official distro packages. | No |
|
| [Using snap](#snap-installation) | Easy to install | yes | Good alternative to official distro packages. | No |
|
||||||
| [Automatic](#automatic-installation) | Run a single command to install a full system | **No!** | For those wanting the latest release quickly. | No |
|
| [Automatic](#automatic-installation) | Run a single command to install a full system | **No!** | For those wanting the latest release quickly. | No |
|
||||||
@ -32,7 +32,8 @@ architectures:
|
|||||||
| [Build from source](#build-from-source-installation) | Build the software components manually | **No!** | Power users and developers only. | Yes |
|
| [Build from source](#build-from-source-installation) | Build the software components manually | **No!** | Power users and developers only. | Yes |
|
||||||
|
|
||||||
### Kata Deploy Installation
|
### Kata Deploy Installation
|
||||||
`ToDo`
|
|
||||||
|
Follow the [`kata-deploy`](../../tools/packaging/kata-deploy/README.md).
|
||||||
### Official packages
|
### Official packages
|
||||||
`ToDo`
|
`ToDo`
|
||||||
### Snap Installation
|
### Snap Installation
|
||||||
|
@ -61,6 +61,9 @@ spec:
|
|||||||
name: eosgx-demo-job-1
|
name: eosgx-demo-job-1
|
||||||
image: oeciteam/oe-helloworld:latest
|
image: oeciteam/oe-helloworld:latest
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /dev
|
||||||
|
name: dev-mount
|
||||||
securityContext:
|
securityContext:
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
capabilities:
|
capabilities:
|
||||||
|
5
src/agent/Cargo.lock
generated
5
src/agent/Cargo.lock
generated
@ -1889,10 +1889,11 @@ checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libseccomp"
|
name = "libseccomp"
|
||||||
version = "0.2.3"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "49bda1fbf25c42ac8942ff7df1eb6172a3bc36299e84be0dba8c888a7db68c80"
|
checksum = "21c57fd8981a80019807b7b68118618d29a87177c63d704fc96e6ecd003ae5b3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
"libc",
|
"libc",
|
||||||
"libseccomp-sys",
|
"libseccomp-sys",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
|
@ -32,7 +32,7 @@ tokio = { version = "1.2.0", features = ["sync", "io-util", "process", "time", "
|
|||||||
futures = "0.3.17"
|
futures = "0.3.17"
|
||||||
async-trait = "0.1.31"
|
async-trait = "0.1.31"
|
||||||
inotify = "0.9.2"
|
inotify = "0.9.2"
|
||||||
libseccomp = { version = "0.2.3", optional = true }
|
libseccomp = { version = "0.3.0", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serial_test = "0.5.0"
|
serial_test = "0.5.0"
|
||||||
|
@ -529,7 +529,9 @@ impl Handle {
|
|||||||
.map_err(|e| anyhow!("Failed to parse IP {}: {:?}", ip_address, e))?;
|
.map_err(|e| anyhow!("Failed to parse IP {}: {:?}", ip_address, e))?;
|
||||||
|
|
||||||
// Import rtnetlink objects that make sense only for this function
|
// Import rtnetlink objects that make sense only for this function
|
||||||
use packet::constants::{NDA_UNSPEC, NLM_F_ACK, NLM_F_CREATE, NLM_F_EXCL, NLM_F_REQUEST};
|
use packet::constants::{
|
||||||
|
NDA_UNSPEC, NLM_F_ACK, NLM_F_CREATE, NLM_F_REPLACE, NLM_F_REQUEST,
|
||||||
|
};
|
||||||
use packet::neighbour::{NeighbourHeader, NeighbourMessage};
|
use packet::neighbour::{NeighbourHeader, NeighbourMessage};
|
||||||
use packet::nlas::neighbour::Nla;
|
use packet::nlas::neighbour::Nla;
|
||||||
use packet::{NetlinkMessage, NetlinkPayload, RtnlMessage};
|
use packet::{NetlinkMessage, NetlinkPayload, RtnlMessage};
|
||||||
@ -572,7 +574,7 @@ impl Handle {
|
|||||||
|
|
||||||
// Send request and ACK
|
// Send request and ACK
|
||||||
let mut req = NetlinkMessage::from(RtnlMessage::NewNeighbour(message));
|
let mut req = NetlinkMessage::from(RtnlMessage::NewNeighbour(message));
|
||||||
req.header.flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_EXCL | NLM_F_CREATE;
|
req.header.flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_CREATE | NLM_F_REPLACE;
|
||||||
|
|
||||||
let mut response = self.handle.request(req)?;
|
let mut response = self.handle.request(req)?;
|
||||||
while let Some(message) = response.next().await {
|
while let Some(message) = response.next().await {
|
||||||
|
@ -329,7 +329,7 @@ impl Sandbox {
|
|||||||
// Reject non-file, symlinks and non-executable files
|
// Reject non-file, symlinks and non-executable files
|
||||||
if !entry.file_type()?.is_file()
|
if !entry.file_type()?.is_file()
|
||||||
|| entry.file_type()?.is_symlink()
|
|| entry.file_type()?.is_symlink()
|
||||||
|| entry.metadata()?.permissions().mode() & 0o777 & 0o111 == 0
|
|| entry.metadata()?.permissions().mode() & 0o111 == 0
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ ifneq (,$(DBCMD))
|
|||||||
SYSCONFIG_DB = $(abspath $(SYSCONFDIR)/$(CONFIG_FILE_DB))
|
SYSCONFIG_DB = $(abspath $(SYSCONFDIR)/$(CONFIG_FILE_DB))
|
||||||
SYSCONFIG_PATHS += $(SYSCONFIG_DB)
|
SYSCONFIG_PATHS += $(SYSCONFIG_DB)
|
||||||
CONFIGS += $(CONFIG_DB)
|
CONFIGS += $(CONFIG_DB)
|
||||||
# dragonball-specific options (all should be suffixed by "_dragonball")
|
# dragonball-specific options (all should be suffixed by "_DB")
|
||||||
DEFMAXVCPUS_DB := 1
|
DEFMAXVCPUS_DB := 1
|
||||||
DEFBLOCKSTORAGEDRIVER_DB := virtio-blk
|
DEFBLOCKSTORAGEDRIVER_DB := virtio-blk
|
||||||
DEFNETWORKMODEL_DB := tcfilter
|
DEFNETWORKMODEL_DB := tcfilter
|
||||||
@ -357,15 +357,15 @@ endef
|
|||||||
|
|
||||||
.DEFAULT_GOAL := default
|
.DEFAULT_GOAL := default
|
||||||
|
|
||||||
|
GENERATED_FILES += $(CONFIGS)
|
||||||
|
|
||||||
runtime: $(TARGET)
|
runtime: $(TARGET)
|
||||||
|
|
||||||
$(TARGET): $(GENERATED_CODE) $(TARGET_PATH)
|
$(TARGET): $(GENERATED_FILES) $(TARGET_PATH)
|
||||||
|
|
||||||
$(TARGET_PATH): $(SOURCES) | show-summary
|
$(TARGET_PATH): $(SOURCES) | show-summary
|
||||||
@RUSTFLAGS="$(EXTRA_RUSTFLAGS) --deny warnings" cargo build --target $(TRIPLE) --$(BUILD_TYPE) $(EXTRA_RUSTFEATURES)
|
@RUSTFLAGS="$(EXTRA_RUSTFLAGS) --deny warnings" cargo build --target $(TRIPLE) --$(BUILD_TYPE) $(EXTRA_RUSTFEATURES)
|
||||||
|
|
||||||
GENERATED_FILES += $(CONFIGS)
|
|
||||||
|
|
||||||
$(GENERATED_FILES): %: %.in
|
$(GENERATED_FILES): %: %.in
|
||||||
@sed \
|
@sed \
|
||||||
$(foreach r,$(GENERATED_REPLACEMENTS),-e 's|@$r@|$($r)|g') \
|
$(foreach r,$(GENERATED_REPLACEMENTS),-e 's|@$r@|$($r)|g') \
|
||||||
@ -490,7 +490,7 @@ install-runtime: runtime
|
|||||||
|
|
||||||
install-configs: $(CONFIGS)
|
install-configs: $(CONFIGS)
|
||||||
$(foreach f,$(CONFIGS),$(call INSTALL_FILE,$f,$(dir $(CONFIG_PATH)))) \
|
$(foreach f,$(CONFIGS),$(call INSTALL_FILE,$f,$(dir $(CONFIG_PATH)))) \
|
||||||
sudo ln -sf $(DEFAULT_HYPERVISOR_CONFIG) $(DESTDIR)/$(CONFIG_PATH)
|
ln -sf $(DEFAULT_HYPERVISOR_CONFIG) $(DESTDIR)/$(CONFIG_PATH)
|
||||||
|
|
||||||
.PHONY: \
|
.PHONY: \
|
||||||
help \
|
help \
|
||||||
|
@ -130,7 +130,11 @@ impl KataAgent {
|
|||||||
|
|
||||||
pub(crate) async fn agent_sock(&self) -> Result<String> {
|
pub(crate) async fn agent_sock(&self) -> Result<String> {
|
||||||
let inner = self.inner.read().await;
|
let inner = self.inner.read().await;
|
||||||
Ok(inner.socket_address.clone())
|
Ok(format!(
|
||||||
|
"{}:{}",
|
||||||
|
inner.socket_address.clone(),
|
||||||
|
inner.config.server_port
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn agent_config(&self) -> AgentConfig {
|
pub(crate) async fn agent_config(&self) -> AgentConfig {
|
||||||
|
@ -15,7 +15,10 @@ use common::{
|
|||||||
};
|
};
|
||||||
use containerd_shim_protos::events::task::TaskOOM;
|
use containerd_shim_protos::events::task::TaskOOM;
|
||||||
use hypervisor::{dragonball::Dragonball, Hypervisor, HYPERVISOR_DRAGONBALL};
|
use hypervisor::{dragonball::Dragonball, Hypervisor, HYPERVISOR_DRAGONBALL};
|
||||||
use kata_types::config::TomlConfig;
|
use kata_types::config::{
|
||||||
|
default::{DEFAULT_AGENT_LOG_PORT, DEFAULT_AGENT_VSOCK_PORT},
|
||||||
|
TomlConfig,
|
||||||
|
};
|
||||||
use resource::{
|
use resource::{
|
||||||
manager::ManagerArgs,
|
manager::ManagerArgs,
|
||||||
network::{NetworkConfig, NetworkWithNetNsConfig},
|
network::{NetworkConfig, NetworkWithNetNsConfig},
|
||||||
@ -299,8 +302,8 @@ impl Persist for VirtSandbox {
|
|||||||
let agent = Arc::new(KataAgent::new(kata_types::config::Agent {
|
let agent = Arc::new(KataAgent::new(kata_types::config::Agent {
|
||||||
debug: true,
|
debug: true,
|
||||||
enable_tracing: false,
|
enable_tracing: false,
|
||||||
server_port: 1024,
|
server_port: DEFAULT_AGENT_VSOCK_PORT,
|
||||||
log_port: 1025,
|
log_port: DEFAULT_AGENT_LOG_PORT,
|
||||||
dial_timeout_ms: 10,
|
dial_timeout_ms: 10,
|
||||||
reconnect_timeout_ms: 3_000,
|
reconnect_timeout_ms: 3_000,
|
||||||
request_timeout_ms: 30_000,
|
request_timeout_ms: 30_000,
|
||||||
|
@ -51,13 +51,14 @@ func statsToMetrics(stats *vc.ContainerStats) *cgroupsv1.Metrics {
|
|||||||
|
|
||||||
func setHugetlbStats(vcHugetlb map[string]vc.HugetlbStats) []*cgroupsv1.HugetlbStat {
|
func setHugetlbStats(vcHugetlb map[string]vc.HugetlbStats) []*cgroupsv1.HugetlbStat {
|
||||||
var hugetlbStats []*cgroupsv1.HugetlbStat
|
var hugetlbStats []*cgroupsv1.HugetlbStat
|
||||||
for _, v := range vcHugetlb {
|
for k, v := range vcHugetlb {
|
||||||
hugetlbStats = append(
|
hugetlbStats = append(
|
||||||
hugetlbStats,
|
hugetlbStats,
|
||||||
&cgroupsv1.HugetlbStat{
|
&cgroupsv1.HugetlbStat{
|
||||||
Usage: v.Usage,
|
Usage: v.Usage,
|
||||||
Max: v.MaxUsage,
|
Max: v.MaxUsage,
|
||||||
Failcnt: v.Failcnt,
|
Failcnt: v.Failcnt,
|
||||||
|
Pagesize: k,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
goruntime "runtime"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/containernetworking/plugins/pkg/ns"
|
"github.com/containernetworking/plugins/pkg/ns"
|
||||||
@ -27,30 +26,7 @@ const procMountInfoFile = "/proc/self/mountinfo"
|
|||||||
// into runtime.LockOSThread(), meaning it won't be executed in a
|
// into runtime.LockOSThread(), meaning it won't be executed in a
|
||||||
// different thread than the one expected by the caller.
|
// different thread than the one expected by the caller.
|
||||||
func EnterNetNS(networkID string, cb func() error) error {
|
func EnterNetNS(networkID string, cb func() error) error {
|
||||||
if networkID == "" {
|
return vc.EnterNetNS(networkID, cb)
|
||||||
return cb()
|
|
||||||
}
|
|
||||||
|
|
||||||
goruntime.LockOSThread()
|
|
||||||
defer goruntime.UnlockOSThread()
|
|
||||||
|
|
||||||
currentNS, err := ns.GetCurrentNS()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer currentNS.Close()
|
|
||||||
|
|
||||||
targetNS, err := ns.GetNS(networkID)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := targetNS.Set(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer currentNS.Set()
|
|
||||||
|
|
||||||
return cb()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetupNetworkNamespace create a network namespace
|
// SetupNetworkNamespace create a network namespace
|
||||||
|
@ -100,7 +100,7 @@ type clhClient interface {
|
|||||||
// Add/remove CPUs to/from the VM
|
// Add/remove CPUs to/from the VM
|
||||||
VmResizePut(ctx context.Context, vmResize chclient.VmResize) (*http.Response, error)
|
VmResizePut(ctx context.Context, vmResize chclient.VmResize) (*http.Response, error)
|
||||||
// Add VFIO PCI device to the VM
|
// 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
|
// Add a new disk device to the VM
|
||||||
VmAddDiskPut(ctx context.Context, diskConfig chclient.DiskConfig) (chclient.PciDeviceInfo, *http.Response, error)
|
VmAddDiskPut(ctx context.Context, diskConfig chclient.DiskConfig) (chclient.PciDeviceInfo, *http.Response, error)
|
||||||
// Remove a device from the VM
|
// Remove a device from the VM
|
||||||
@ -136,8 +136,8 @@ func (c *clhClientApi) VmResizePut(ctx context.Context, vmResize chclient.VmResi
|
|||||||
return c.ApiInternal.VmResizePut(ctx).VmResize(vmResize).Execute()
|
return c.ApiInternal.VmResizePut(ctx).VmResize(vmResize).Execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *clhClientApi) VmAddDevicePut(ctx context.Context, vmAddDevice chclient.VmAddDevice) (chclient.PciDeviceInfo, *http.Response, error) {
|
func (c *clhClientApi) VmAddDevicePut(ctx context.Context, deviceConfig chclient.DeviceConfig) (chclient.PciDeviceInfo, *http.Response, error) {
|
||||||
return c.ApiInternal.VmAddDevicePut(ctx).VmAddDevice(vmAddDevice).Execute()
|
return c.ApiInternal.VmAddDevicePut(ctx).DeviceConfig(deviceConfig).Execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *clhClientApi) VmAddDiskPut(ctx context.Context, diskConfig chclient.DiskConfig) (chclient.PciDeviceInfo, *http.Response, error) {
|
func (c *clhClientApi) VmAddDiskPut(ctx context.Context, diskConfig chclient.DiskConfig) (chclient.PciDeviceInfo, *http.Response, error) {
|
||||||
@ -808,8 +808,7 @@ func (clh *cloudHypervisor) hotPlugVFIODevice(device *config.VFIODev) error {
|
|||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
// Create the clh device config via the constructor to ensure default values are properly assigned
|
// Create the clh device config via the constructor to ensure default values are properly assigned
|
||||||
clhDevice := *chclient.NewVmAddDevice()
|
clhDevice := *chclient.NewDeviceConfig(device.SysfsDev)
|
||||||
clhDevice.Path = &device.SysfsDev
|
|
||||||
pciInfo, _, err := cl.VmAddDevicePut(ctx, clhDevice)
|
pciInfo, _, err := cl.VmAddDevicePut(ctx, clhDevice)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to hotplug device %+v %s", device, openAPIClientError(err))
|
return fmt.Errorf("Failed to hotplug device %+v %s", device, openAPIClientError(err))
|
||||||
|
@ -104,7 +104,7 @@ func (c *clhClientMock) VmResizePut(ctx context.Context, vmResize chclient.VmRes
|
|||||||
}
|
}
|
||||||
|
|
||||||
//nolint:golint
|
//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
|
return chclient.PciDeviceInfo{}, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1045,6 +1045,15 @@ func doNetNS(netNSPath string, cb func(ns.NetNS) error) error {
|
|||||||
return cb(targetNS)
|
return cb(targetNS)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnterNetNS is free from any call to a go routine, and it calls
|
||||||
|
// into runtime.LockOSThread(), meaning it won't be executed in a
|
||||||
|
// different thread than the one expected by the caller.
|
||||||
|
func EnterNetNS(networkID string, cb func() error) error {
|
||||||
|
return doNetNS(networkID, func(nn ns.NetNS) error {
|
||||||
|
return cb()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func deleteNetNS(netNSPath string) error {
|
func deleteNetNS(netNSPath string) error {
|
||||||
n, err := ns.GetNS(netNSPath)
|
n, err := ns.GetNS(netNSPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -34,7 +34,6 @@ docs/SendMigrationData.md
|
|||||||
docs/SgxEpcConfig.md
|
docs/SgxEpcConfig.md
|
||||||
docs/TokenBucket.md
|
docs/TokenBucket.md
|
||||||
docs/VdpaConfig.md
|
docs/VdpaConfig.md
|
||||||
docs/VmAddDevice.md
|
|
||||||
docs/VmConfig.md
|
docs/VmConfig.md
|
||||||
docs/VmCoredumpData.md
|
docs/VmCoredumpData.md
|
||||||
docs/VmInfo.md
|
docs/VmInfo.md
|
||||||
@ -74,7 +73,6 @@ model_send_migration_data.go
|
|||||||
model_sgx_epc_config.go
|
model_sgx_epc_config.go
|
||||||
model_token_bucket.go
|
model_token_bucket.go
|
||||||
model_vdpa_config.go
|
model_vdpa_config.go
|
||||||
model_vm_add_device.go
|
|
||||||
model_vm_config.go
|
model_vm_config.go
|
||||||
model_vm_coredump_data.go
|
model_vm_coredump_data.go
|
||||||
model_vm_info.go
|
model_vm_info.go
|
||||||
|
@ -136,7 +136,6 @@ Class | Method | HTTP request | Description
|
|||||||
- [SgxEpcConfig](docs/SgxEpcConfig.md)
|
- [SgxEpcConfig](docs/SgxEpcConfig.md)
|
||||||
- [TokenBucket](docs/TokenBucket.md)
|
- [TokenBucket](docs/TokenBucket.md)
|
||||||
- [VdpaConfig](docs/VdpaConfig.md)
|
- [VdpaConfig](docs/VdpaConfig.md)
|
||||||
- [VmAddDevice](docs/VmAddDevice.md)
|
|
||||||
- [VmConfig](docs/VmConfig.md)
|
- [VmConfig](docs/VmConfig.md)
|
||||||
- [VmCoredumpData](docs/VmCoredumpData.md)
|
- [VmCoredumpData](docs/VmCoredumpData.md)
|
||||||
- [VmInfo](docs/VmInfo.md)
|
- [VmInfo](docs/VmInfo.md)
|
||||||
|
@ -171,7 +171,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/VmAddDevice'
|
$ref: '#/components/schemas/DeviceConfig'
|
||||||
description: The path of the new device
|
description: The path of the new device
|
||||||
required: true
|
required: true
|
||||||
responses:
|
responses:
|
||||||
@ -1808,20 +1808,6 @@ components:
|
|||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
type: object
|
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:
|
VmRemoveDevice:
|
||||||
example:
|
example:
|
||||||
id: id
|
id: id
|
||||||
|
@ -38,8 +38,8 @@ func (r ApiBootVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
BootVM Boot the previously created VM instance.
|
BootVM Boot the previously created VM instance.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiBootVMRequest
|
@return ApiBootVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) BootVM(ctx _context.Context) ApiBootVMRequest {
|
func (a *DefaultApiService) BootVM(ctx _context.Context) ApiBootVMRequest {
|
||||||
return ApiBootVMRequest{
|
return ApiBootVMRequest{
|
||||||
@ -133,8 +133,8 @@ func (r ApiCreateVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
CreateVM Create the cloud-hypervisor Virtual Machine (VM) instance. The instance is not booted, only created.
|
CreateVM Create the cloud-hypervisor Virtual Machine (VM) instance. The instance is not booted, only created.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiCreateVMRequest
|
@return ApiCreateVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) CreateVM(ctx _context.Context) ApiCreateVMRequest {
|
func (a *DefaultApiService) CreateVM(ctx _context.Context) ApiCreateVMRequest {
|
||||||
return ApiCreateVMRequest{
|
return ApiCreateVMRequest{
|
||||||
@ -226,8 +226,8 @@ func (r ApiDeleteVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
DeleteVM Delete the cloud-hypervisor Virtual Machine (VM) instance.
|
DeleteVM Delete the cloud-hypervisor Virtual Machine (VM) instance.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiDeleteVMRequest
|
@return ApiDeleteVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) DeleteVM(ctx _context.Context) ApiDeleteVMRequest {
|
func (a *DefaultApiService) DeleteVM(ctx _context.Context) ApiDeleteVMRequest {
|
||||||
return ApiDeleteVMRequest{
|
return ApiDeleteVMRequest{
|
||||||
@ -314,8 +314,8 @@ func (r ApiPauseVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
PauseVM Pause a previously booted VM instance.
|
PauseVM Pause a previously booted VM instance.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiPauseVMRequest
|
@return ApiPauseVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) PauseVM(ctx _context.Context) ApiPauseVMRequest {
|
func (a *DefaultApiService) PauseVM(ctx _context.Context) ApiPauseVMRequest {
|
||||||
return ApiPauseVMRequest{
|
return ApiPauseVMRequest{
|
||||||
@ -402,8 +402,8 @@ func (r ApiPowerButtonVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
PowerButtonVM Trigger a power button in the VM
|
PowerButtonVM Trigger a power button in the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiPowerButtonVMRequest
|
@return ApiPowerButtonVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) PowerButtonVM(ctx _context.Context) ApiPowerButtonVMRequest {
|
func (a *DefaultApiService) PowerButtonVM(ctx _context.Context) ApiPowerButtonVMRequest {
|
||||||
return ApiPowerButtonVMRequest{
|
return ApiPowerButtonVMRequest{
|
||||||
@ -490,8 +490,8 @@ func (r ApiRebootVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
RebootVM Reboot the VM instance.
|
RebootVM Reboot the VM instance.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiRebootVMRequest
|
@return ApiRebootVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) RebootVM(ctx _context.Context) ApiRebootVMRequest {
|
func (a *DefaultApiService) RebootVM(ctx _context.Context) ApiRebootVMRequest {
|
||||||
return ApiRebootVMRequest{
|
return ApiRebootVMRequest{
|
||||||
@ -578,8 +578,8 @@ func (r ApiResumeVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
ResumeVM Resume a previously paused VM instance.
|
ResumeVM Resume a previously paused VM instance.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiResumeVMRequest
|
@return ApiResumeVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) ResumeVM(ctx _context.Context) ApiResumeVMRequest {
|
func (a *DefaultApiService) ResumeVM(ctx _context.Context) ApiResumeVMRequest {
|
||||||
return ApiResumeVMRequest{
|
return ApiResumeVMRequest{
|
||||||
@ -666,8 +666,8 @@ func (r ApiShutdownVMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
ShutdownVM Shut the VM instance down.
|
ShutdownVM Shut the VM instance down.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiShutdownVMRequest
|
@return ApiShutdownVMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) ShutdownVM(ctx _context.Context) ApiShutdownVMRequest {
|
func (a *DefaultApiService) ShutdownVM(ctx _context.Context) ApiShutdownVMRequest {
|
||||||
return ApiShutdownVMRequest{
|
return ApiShutdownVMRequest{
|
||||||
@ -754,8 +754,8 @@ func (r ApiShutdownVMMRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
ShutdownVMM Shuts the cloud-hypervisor VMM.
|
ShutdownVMM Shuts the cloud-hypervisor VMM.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiShutdownVMMRequest
|
@return ApiShutdownVMMRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) ShutdownVMM(ctx _context.Context) ApiShutdownVMMRequest {
|
func (a *DefaultApiService) ShutdownVMM(ctx _context.Context) ApiShutdownVMMRequest {
|
||||||
return ApiShutdownVMMRequest{
|
return ApiShutdownVMMRequest{
|
||||||
@ -831,14 +831,14 @@ func (a *DefaultApiService) ShutdownVMMExecute(r ApiShutdownVMMRequest) (*_netht
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ApiVmAddDevicePutRequest struct {
|
type ApiVmAddDevicePutRequest struct {
|
||||||
ctx _context.Context
|
ctx _context.Context
|
||||||
ApiService *DefaultApiService
|
ApiService *DefaultApiService
|
||||||
vmAddDevice *VmAddDevice
|
deviceConfig *DeviceConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
// The path of the new device
|
// The path of the new device
|
||||||
func (r ApiVmAddDevicePutRequest) VmAddDevice(vmAddDevice VmAddDevice) ApiVmAddDevicePutRequest {
|
func (r ApiVmAddDevicePutRequest) DeviceConfig(deviceConfig DeviceConfig) ApiVmAddDevicePutRequest {
|
||||||
r.vmAddDevice = &vmAddDevice
|
r.deviceConfig = &deviceConfig
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -849,8 +849,8 @@ func (r ApiVmAddDevicePutRequest) Execute() (PciDeviceInfo, *_nethttp.Response,
|
|||||||
/*
|
/*
|
||||||
VmAddDevicePut Add a new device to the VM
|
VmAddDevicePut Add a new device to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddDevicePutRequest
|
@return ApiVmAddDevicePutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddDevicePut(ctx _context.Context) ApiVmAddDevicePutRequest {
|
func (a *DefaultApiService) VmAddDevicePut(ctx _context.Context) ApiVmAddDevicePutRequest {
|
||||||
return ApiVmAddDevicePutRequest{
|
return ApiVmAddDevicePutRequest{
|
||||||
@ -860,8 +860,7 @@ func (a *DefaultApiService) VmAddDevicePut(ctx _context.Context) ApiVmAddDeviceP
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddDevicePutExecute(r ApiVmAddDevicePutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddDevicePutExecute(r ApiVmAddDevicePutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -882,8 +881,8 @@ func (a *DefaultApiService) VmAddDevicePutExecute(r ApiVmAddDevicePutRequest) (P
|
|||||||
localVarHeaderParams := make(map[string]string)
|
localVarHeaderParams := make(map[string]string)
|
||||||
localVarQueryParams := _neturl.Values{}
|
localVarQueryParams := _neturl.Values{}
|
||||||
localVarFormParams := _neturl.Values{}
|
localVarFormParams := _neturl.Values{}
|
||||||
if r.vmAddDevice == nil {
|
if r.deviceConfig == nil {
|
||||||
return localVarReturnValue, nil, reportError("vmAddDevice is required and must be specified")
|
return localVarReturnValue, nil, reportError("deviceConfig is required and must be specified")
|
||||||
}
|
}
|
||||||
|
|
||||||
// to determine the Content-Type header
|
// to determine the Content-Type header
|
||||||
@ -904,7 +903,7 @@ func (a *DefaultApiService) VmAddDevicePutExecute(r ApiVmAddDevicePutRequest) (P
|
|||||||
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
|
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
|
||||||
}
|
}
|
||||||
// body params
|
// body params
|
||||||
localVarPostBody = r.vmAddDevice
|
localVarPostBody = r.deviceConfig
|
||||||
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
|
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return localVarReturnValue, nil, err
|
return localVarReturnValue, nil, err
|
||||||
@ -961,8 +960,8 @@ func (r ApiVmAddDiskPutRequest) Execute() (PciDeviceInfo, *_nethttp.Response, er
|
|||||||
/*
|
/*
|
||||||
VmAddDiskPut Add a new disk to the VM
|
VmAddDiskPut Add a new disk to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddDiskPutRequest
|
@return ApiVmAddDiskPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddDiskPut(ctx _context.Context) ApiVmAddDiskPutRequest {
|
func (a *DefaultApiService) VmAddDiskPut(ctx _context.Context) ApiVmAddDiskPutRequest {
|
||||||
return ApiVmAddDiskPutRequest{
|
return ApiVmAddDiskPutRequest{
|
||||||
@ -972,8 +971,7 @@ func (a *DefaultApiService) VmAddDiskPut(ctx _context.Context) ApiVmAddDiskPutRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddDiskPutExecute(r ApiVmAddDiskPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddDiskPutExecute(r ApiVmAddDiskPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -1073,8 +1071,8 @@ func (r ApiVmAddFsPutRequest) Execute() (PciDeviceInfo, *_nethttp.Response, erro
|
|||||||
/*
|
/*
|
||||||
VmAddFsPut Add a new virtio-fs device to the VM
|
VmAddFsPut Add a new virtio-fs device to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddFsPutRequest
|
@return ApiVmAddFsPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddFsPut(ctx _context.Context) ApiVmAddFsPutRequest {
|
func (a *DefaultApiService) VmAddFsPut(ctx _context.Context) ApiVmAddFsPutRequest {
|
||||||
return ApiVmAddFsPutRequest{
|
return ApiVmAddFsPutRequest{
|
||||||
@ -1084,8 +1082,7 @@ func (a *DefaultApiService) VmAddFsPut(ctx _context.Context) ApiVmAddFsPutReques
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddFsPutExecute(r ApiVmAddFsPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddFsPutExecute(r ApiVmAddFsPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -1185,8 +1182,8 @@ func (r ApiVmAddNetPutRequest) Execute() (PciDeviceInfo, *_nethttp.Response, err
|
|||||||
/*
|
/*
|
||||||
VmAddNetPut Add a new network device to the VM
|
VmAddNetPut Add a new network device to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddNetPutRequest
|
@return ApiVmAddNetPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddNetPut(ctx _context.Context) ApiVmAddNetPutRequest {
|
func (a *DefaultApiService) VmAddNetPut(ctx _context.Context) ApiVmAddNetPutRequest {
|
||||||
return ApiVmAddNetPutRequest{
|
return ApiVmAddNetPutRequest{
|
||||||
@ -1196,8 +1193,7 @@ func (a *DefaultApiService) VmAddNetPut(ctx _context.Context) ApiVmAddNetPutRequ
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddNetPutExecute(r ApiVmAddNetPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddNetPutExecute(r ApiVmAddNetPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -1297,8 +1293,8 @@ func (r ApiVmAddPmemPutRequest) Execute() (PciDeviceInfo, *_nethttp.Response, er
|
|||||||
/*
|
/*
|
||||||
VmAddPmemPut Add a new pmem device to the VM
|
VmAddPmemPut Add a new pmem device to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddPmemPutRequest
|
@return ApiVmAddPmemPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddPmemPut(ctx _context.Context) ApiVmAddPmemPutRequest {
|
func (a *DefaultApiService) VmAddPmemPut(ctx _context.Context) ApiVmAddPmemPutRequest {
|
||||||
return ApiVmAddPmemPutRequest{
|
return ApiVmAddPmemPutRequest{
|
||||||
@ -1308,8 +1304,7 @@ func (a *DefaultApiService) VmAddPmemPut(ctx _context.Context) ApiVmAddPmemPutRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddPmemPutExecute(r ApiVmAddPmemPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddPmemPutExecute(r ApiVmAddPmemPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -1409,8 +1404,8 @@ func (r ApiVmAddVdpaPutRequest) Execute() (PciDeviceInfo, *_nethttp.Response, er
|
|||||||
/*
|
/*
|
||||||
VmAddVdpaPut Add a new vDPA device to the VM
|
VmAddVdpaPut Add a new vDPA device to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddVdpaPutRequest
|
@return ApiVmAddVdpaPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddVdpaPut(ctx _context.Context) ApiVmAddVdpaPutRequest {
|
func (a *DefaultApiService) VmAddVdpaPut(ctx _context.Context) ApiVmAddVdpaPutRequest {
|
||||||
return ApiVmAddVdpaPutRequest{
|
return ApiVmAddVdpaPutRequest{
|
||||||
@ -1420,8 +1415,7 @@ func (a *DefaultApiService) VmAddVdpaPut(ctx _context.Context) ApiVmAddVdpaPutRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddVdpaPutExecute(r ApiVmAddVdpaPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddVdpaPutExecute(r ApiVmAddVdpaPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -1521,8 +1515,8 @@ func (r ApiVmAddVsockPutRequest) Execute() (PciDeviceInfo, *_nethttp.Response, e
|
|||||||
/*
|
/*
|
||||||
VmAddVsockPut Add a new vsock device to the VM
|
VmAddVsockPut Add a new vsock device to the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmAddVsockPutRequest
|
@return ApiVmAddVsockPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmAddVsockPut(ctx _context.Context) ApiVmAddVsockPutRequest {
|
func (a *DefaultApiService) VmAddVsockPut(ctx _context.Context) ApiVmAddVsockPutRequest {
|
||||||
return ApiVmAddVsockPutRequest{
|
return ApiVmAddVsockPutRequest{
|
||||||
@ -1532,8 +1526,7 @@ func (a *DefaultApiService) VmAddVsockPut(ctx _context.Context) ApiVmAddVsockPut
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return PciDeviceInfo
|
||||||
// @return PciDeviceInfo
|
|
||||||
func (a *DefaultApiService) VmAddVsockPutExecute(r ApiVmAddVsockPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmAddVsockPutExecute(r ApiVmAddVsockPutRequest) (PciDeviceInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodPut
|
localVarHTTPMethod = _nethttp.MethodPut
|
||||||
@ -1633,8 +1626,8 @@ func (r ApiVmCoredumpPutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmCoredumpPut Takes a VM coredump.
|
VmCoredumpPut Takes a VM coredump.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmCoredumpPutRequest
|
@return ApiVmCoredumpPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmCoredumpPut(ctx _context.Context) ApiVmCoredumpPutRequest {
|
func (a *DefaultApiService) VmCoredumpPut(ctx _context.Context) ApiVmCoredumpPutRequest {
|
||||||
return ApiVmCoredumpPutRequest{
|
return ApiVmCoredumpPutRequest{
|
||||||
@ -1726,8 +1719,8 @@ func (r ApiVmCountersGetRequest) Execute() (map[string]map[string]int64, *_netht
|
|||||||
/*
|
/*
|
||||||
VmCountersGet Get counters from the VM
|
VmCountersGet Get counters from the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmCountersGetRequest
|
@return ApiVmCountersGetRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmCountersGet(ctx _context.Context) ApiVmCountersGetRequest {
|
func (a *DefaultApiService) VmCountersGet(ctx _context.Context) ApiVmCountersGetRequest {
|
||||||
return ApiVmCountersGetRequest{
|
return ApiVmCountersGetRequest{
|
||||||
@ -1737,8 +1730,7 @@ func (a *DefaultApiService) VmCountersGet(ctx _context.Context) ApiVmCountersGet
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return map[string]map[string]int64
|
||||||
// @return map[string]map[string]int64
|
|
||||||
func (a *DefaultApiService) VmCountersGetExecute(r ApiVmCountersGetRequest) (map[string]map[string]int64, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmCountersGetExecute(r ApiVmCountersGetRequest) (map[string]map[string]int64, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodGet
|
localVarHTTPMethod = _nethttp.MethodGet
|
||||||
@ -1826,8 +1818,8 @@ func (r ApiVmInfoGetRequest) Execute() (VmInfo, *_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmInfoGet Returns general information about the cloud-hypervisor Virtual Machine (VM) instance.
|
VmInfoGet Returns general information about the cloud-hypervisor Virtual Machine (VM) instance.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmInfoGetRequest
|
@return ApiVmInfoGetRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmInfoGet(ctx _context.Context) ApiVmInfoGetRequest {
|
func (a *DefaultApiService) VmInfoGet(ctx _context.Context) ApiVmInfoGetRequest {
|
||||||
return ApiVmInfoGetRequest{
|
return ApiVmInfoGetRequest{
|
||||||
@ -1837,8 +1829,7 @@ func (a *DefaultApiService) VmInfoGet(ctx _context.Context) ApiVmInfoGetRequest
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return VmInfo
|
||||||
// @return VmInfo
|
|
||||||
func (a *DefaultApiService) VmInfoGetExecute(r ApiVmInfoGetRequest) (VmInfo, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmInfoGetExecute(r ApiVmInfoGetRequest) (VmInfo, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodGet
|
localVarHTTPMethod = _nethttp.MethodGet
|
||||||
@ -1933,8 +1924,8 @@ func (r ApiVmReceiveMigrationPutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmReceiveMigrationPut Receive a VM migration from URL
|
VmReceiveMigrationPut Receive a VM migration from URL
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmReceiveMigrationPutRequest
|
@return ApiVmReceiveMigrationPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmReceiveMigrationPut(ctx _context.Context) ApiVmReceiveMigrationPutRequest {
|
func (a *DefaultApiService) VmReceiveMigrationPut(ctx _context.Context) ApiVmReceiveMigrationPutRequest {
|
||||||
return ApiVmReceiveMigrationPutRequest{
|
return ApiVmReceiveMigrationPutRequest{
|
||||||
@ -2033,8 +2024,8 @@ func (r ApiVmRemoveDevicePutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmRemoveDevicePut Remove a device from the VM
|
VmRemoveDevicePut Remove a device from the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmRemoveDevicePutRequest
|
@return ApiVmRemoveDevicePutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmRemoveDevicePut(ctx _context.Context) ApiVmRemoveDevicePutRequest {
|
func (a *DefaultApiService) VmRemoveDevicePut(ctx _context.Context) ApiVmRemoveDevicePutRequest {
|
||||||
return ApiVmRemoveDevicePutRequest{
|
return ApiVmRemoveDevicePutRequest{
|
||||||
@ -2133,8 +2124,8 @@ func (r ApiVmResizePutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmResizePut Resize the VM
|
VmResizePut Resize the VM
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmResizePutRequest
|
@return ApiVmResizePutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmResizePut(ctx _context.Context) ApiVmResizePutRequest {
|
func (a *DefaultApiService) VmResizePut(ctx _context.Context) ApiVmResizePutRequest {
|
||||||
return ApiVmResizePutRequest{
|
return ApiVmResizePutRequest{
|
||||||
@ -2233,8 +2224,8 @@ func (r ApiVmResizeZonePutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmResizeZonePut Resize a memory zone
|
VmResizeZonePut Resize a memory zone
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmResizeZonePutRequest
|
@return ApiVmResizeZonePutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmResizeZonePut(ctx _context.Context) ApiVmResizeZonePutRequest {
|
func (a *DefaultApiService) VmResizeZonePut(ctx _context.Context) ApiVmResizeZonePutRequest {
|
||||||
return ApiVmResizeZonePutRequest{
|
return ApiVmResizeZonePutRequest{
|
||||||
@ -2333,8 +2324,8 @@ func (r ApiVmRestorePutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmRestorePut Restore a VM from a snapshot.
|
VmRestorePut Restore a VM from a snapshot.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmRestorePutRequest
|
@return ApiVmRestorePutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmRestorePut(ctx _context.Context) ApiVmRestorePutRequest {
|
func (a *DefaultApiService) VmRestorePut(ctx _context.Context) ApiVmRestorePutRequest {
|
||||||
return ApiVmRestorePutRequest{
|
return ApiVmRestorePutRequest{
|
||||||
@ -2433,8 +2424,8 @@ func (r ApiVmSendMigrationPutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmSendMigrationPut Send a VM migration to URL
|
VmSendMigrationPut Send a VM migration to URL
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmSendMigrationPutRequest
|
@return ApiVmSendMigrationPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmSendMigrationPut(ctx _context.Context) ApiVmSendMigrationPutRequest {
|
func (a *DefaultApiService) VmSendMigrationPut(ctx _context.Context) ApiVmSendMigrationPutRequest {
|
||||||
return ApiVmSendMigrationPutRequest{
|
return ApiVmSendMigrationPutRequest{
|
||||||
@ -2533,8 +2524,8 @@ func (r ApiVmSnapshotPutRequest) Execute() (*_nethttp.Response, error) {
|
|||||||
/*
|
/*
|
||||||
VmSnapshotPut Returns a VM snapshot.
|
VmSnapshotPut Returns a VM snapshot.
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmSnapshotPutRequest
|
@return ApiVmSnapshotPutRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmSnapshotPut(ctx _context.Context) ApiVmSnapshotPutRequest {
|
func (a *DefaultApiService) VmSnapshotPut(ctx _context.Context) ApiVmSnapshotPutRequest {
|
||||||
return ApiVmSnapshotPutRequest{
|
return ApiVmSnapshotPutRequest{
|
||||||
@ -2626,8 +2617,8 @@ func (r ApiVmmPingGetRequest) Execute() (VmmPingResponse, *_nethttp.Response, er
|
|||||||
/*
|
/*
|
||||||
VmmPingGet Ping the VMM to check for API server availability
|
VmmPingGet Ping the VMM to check for API server availability
|
||||||
|
|
||||||
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
||||||
@return ApiVmmPingGetRequest
|
@return ApiVmmPingGetRequest
|
||||||
*/
|
*/
|
||||||
func (a *DefaultApiService) VmmPingGet(ctx _context.Context) ApiVmmPingGetRequest {
|
func (a *DefaultApiService) VmmPingGet(ctx _context.Context) ApiVmmPingGetRequest {
|
||||||
return ApiVmmPingGetRequest{
|
return ApiVmmPingGetRequest{
|
||||||
@ -2637,8 +2628,7 @@ func (a *DefaultApiService) VmmPingGet(ctx _context.Context) ApiVmmPingGetReques
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Execute executes the request
|
// Execute executes the request
|
||||||
//
|
// @return VmmPingResponse
|
||||||
// @return VmmPingResponse
|
|
||||||
func (a *DefaultApiService) VmmPingGetExecute(r ApiVmmPingGetRequest) (VmmPingResponse, *_nethttp.Response, error) {
|
func (a *DefaultApiService) VmmPingGetExecute(r ApiVmmPingGetRequest) (VmmPingResponse, *_nethttp.Response, error) {
|
||||||
var (
|
var (
|
||||||
localVarHTTPMethod = _nethttp.MethodGet
|
localVarHTTPMethod = _nethttp.MethodGet
|
||||||
|
@ -554,7 +554,7 @@ No authorization required
|
|||||||
|
|
||||||
## VmAddDevicePut
|
## VmAddDevicePut
|
||||||
|
|
||||||
> PciDeviceInfo VmAddDevicePut(ctx).VmAddDevice(vmAddDevice).Execute()
|
> PciDeviceInfo VmAddDevicePut(ctx).DeviceConfig(deviceConfig).Execute()
|
||||||
|
|
||||||
Add a new device to the VM
|
Add a new device to the VM
|
||||||
|
|
||||||
@ -571,11 +571,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
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()
|
configuration := openapiclient.NewConfiguration()
|
||||||
api_client := openapiclient.NewAPIClient(configuration)
|
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 {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.VmAddDevicePut``: %v\n", err)
|
fmt.Fprintf(os.Stderr, "Error when calling `DefaultApi.VmAddDevicePut``: %v\n", err)
|
||||||
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
|
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
|
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
|
### Return type
|
||||||
|
|
||||||
|
@ -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)
|
|
||||||
|
|
||||||
|
|
@ -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)
|
|
||||||
}
|
|
@ -185,7 +185,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/VmAddDevice"
|
$ref: "#/components/schemas/DeviceConfig"
|
||||||
required: true
|
required: true
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
@ -1077,17 +1077,6 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
format: int64
|
format: int64
|
||||||
|
|
||||||
VmAddDevice:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
path:
|
|
||||||
type: string
|
|
||||||
iommu:
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
|
|
||||||
VmRemoveDevice:
|
VmRemoveDevice:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
2
src/tools/kata-ctl/.gitignore
vendored
2
src/tools/kata-ctl/.gitignore
vendored
@ -1 +1 @@
|
|||||||
/vendor/
|
src/ops/version.rs
|
||||||
|
1035
src/tools/kata-ctl/Cargo.lock
generated
Normal file
1035
src/tools/kata-ctl/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,6 +3,9 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
|
||||||
|
[workspace]
|
||||||
|
resolver = "2"
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "kata-ctl"
|
name = "kata-ctl"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
@ -14,8 +17,12 @@ anyhow = "1.0.31"
|
|||||||
clap = { version = "3.2.20", features = ["derive", "cargo"] }
|
clap = { version = "3.2.20", features = ["derive", "cargo"] }
|
||||||
serde_json = "1.0.85"
|
serde_json = "1.0.85"
|
||||||
thiserror = "1.0.35"
|
thiserror = "1.0.35"
|
||||||
|
privdrop = "0.5.2"
|
||||||
|
nix = "0.25.0"
|
||||||
|
|
||||||
|
[target.'cfg(target_arch = "s390x")'.dependencies]
|
||||||
|
reqwest = { version = "0.11", default-features = false, features = ["json", "blocking", "native-tls"] }
|
||||||
|
|
||||||
# See: https://github.com/kata-containers/kata-containers/issues/5438
|
|
||||||
[target.'cfg(not(target_arch = "s390x"))'.dependencies]
|
[target.'cfg(not(target_arch = "s390x"))'.dependencies]
|
||||||
reqwest = { version = "0.11", default-features = false, features = ["json", "blocking", "rustls-tls"] }
|
reqwest = { version = "0.11", default-features = false, features = ["json", "blocking", "rustls-tls"] }
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
// Copyright (c) 2022 Intel Corporation
|
// Copyright (c) 2022 Intel Corporation
|
||||||
|
// Copyright (c) 2022 IBM Corp.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
//
|
//
|
||||||
@ -7,9 +8,44 @@
|
|||||||
pub use arch_specific::*;
|
pub use arch_specific::*;
|
||||||
|
|
||||||
mod arch_specific {
|
mod arch_specific {
|
||||||
use anyhow::Result;
|
use crate::check;
|
||||||
|
use anyhow::{anyhow, Result};
|
||||||
|
|
||||||
|
const PROC_CPUINFO: &str = "/proc/cpuinfo";
|
||||||
|
const CPUINFO_DELIMITER: &str = "processor ";
|
||||||
|
const CPUINFO_FEATURES_TAG: &str = "features";
|
||||||
|
const CPU_FEATURES_REQ: &[&str] = &["sie"];
|
||||||
|
|
||||||
|
// check cpu
|
||||||
|
fn check_cpu() -> Result<()> {
|
||||||
|
println!("INFO: check CPU: s390x");
|
||||||
|
|
||||||
|
let cpu_info = check::get_single_cpu_info(PROC_CPUINFO, CPUINFO_DELIMITER)?;
|
||||||
|
|
||||||
|
let cpu_features = check::get_cpu_flags(&cpu_info, CPUINFO_FEATURES_TAG).map_err(|e| {
|
||||||
|
anyhow!(
|
||||||
|
"Error parsing CPU features, file {:?}, {:?}",
|
||||||
|
PROC_CPUINFO,
|
||||||
|
e
|
||||||
|
)
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let missing_cpu_features = check::check_cpu_flags(&cpu_features, CPU_FEATURES_REQ)?;
|
||||||
|
if !missing_cpu_features.is_empty() {
|
||||||
|
eprintln!("WARNING: Missing CPU flags {:?}", missing_cpu_features);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn check() -> Result<()> {
|
pub fn check() -> Result<()> {
|
||||||
unimplemented!("Check not implemented in s390x");
|
println!("INFO: check: s390x");
|
||||||
|
|
||||||
|
let _cpu_result = check_cpu();
|
||||||
|
|
||||||
|
// TODO: add additional checks, e.g, kernel modules as in go runtime
|
||||||
|
// TODO: collect outcome of tests to determine if checks pass or not
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,32 +6,22 @@
|
|||||||
// Contains checks that are not architecture-specific
|
// Contains checks that are not architecture-specific
|
||||||
|
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::{anyhow, Result};
|
||||||
// See: https://github.com/kata-containers/kata-containers/issues/5438
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
use reqwest::header::{CONTENT_TYPE, USER_AGENT};
|
use reqwest::header::{CONTENT_TYPE, USER_AGENT};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
const KATA_GITHUB_URL: &str =
|
const KATA_GITHUB_URL: &str =
|
||||||
"https://api.github.com/repos/kata-containers/kata-containers/releases/latest";
|
"https://api.github.com/repos/kata-containers/kata-containers/releases/latest";
|
||||||
|
|
||||||
|
#[cfg(any(target_arch = "s390x", target_arch = "x86_64"))]
|
||||||
fn get_cpu_info(cpu_info_file: &str) -> Result<String> {
|
fn get_cpu_info(cpu_info_file: &str) -> Result<String> {
|
||||||
let contents = fs::read_to_string(cpu_info_file)?;
|
let contents = std::fs::read_to_string(cpu_info_file)?;
|
||||||
Ok(contents)
|
Ok(contents)
|
||||||
}
|
}
|
||||||
|
|
||||||
// get_single_cpu_info returns the contents of the first cpu from
|
// get_single_cpu_info returns the contents of the first cpu from
|
||||||
// the specified cpuinfo file by parsing based on a specified delimiter
|
// the specified cpuinfo file by parsing based on a specified delimiter
|
||||||
|
#[cfg(any(target_arch = "s390x", target_arch = "x86_64"))]
|
||||||
pub fn get_single_cpu_info(cpu_info_file: &str, substring: &str) -> Result<String> {
|
pub fn get_single_cpu_info(cpu_info_file: &str, substring: &str) -> Result<String> {
|
||||||
let contents = get_cpu_info(cpu_info_file)?;
|
let contents = get_cpu_info(cpu_info_file)?;
|
||||||
|
|
||||||
@ -51,6 +41,7 @@ pub fn get_single_cpu_info(cpu_info_file: &str, substring: &str) -> Result<Strin
|
|||||||
|
|
||||||
// get_cpu_flags returns a string of cpu flags from cpuinfo, passed in
|
// get_cpu_flags returns a string of cpu flags from cpuinfo, passed in
|
||||||
// as a string
|
// as a string
|
||||||
|
#[cfg(any(target_arch = "s390x", target_arch = "x86_64"))]
|
||||||
pub fn get_cpu_flags(cpu_info: &str, cpu_flags_tag: &str) -> Result<String> {
|
pub fn get_cpu_flags(cpu_info: &str, cpu_flags_tag: &str) -> Result<String> {
|
||||||
if cpu_info.is_empty() {
|
if cpu_info.is_empty() {
|
||||||
return Err(anyhow!("cpu_info string is empty"))?;
|
return Err(anyhow!("cpu_info string is empty"))?;
|
||||||
@ -74,6 +65,7 @@ pub fn get_cpu_flags(cpu_info: &str, cpu_flags_tag: &str) -> Result<String> {
|
|||||||
|
|
||||||
// get_missing_strings searches for required (strings) in data and returns
|
// get_missing_strings searches for required (strings) in data and returns
|
||||||
// a vector containing the missing strings
|
// a vector containing the missing strings
|
||||||
|
#[cfg(any(target_arch = "s390x", target_arch = "x86_64"))]
|
||||||
fn get_missing_strings(data: &str, required: &'static [&'static str]) -> Result<Vec<String>> {
|
fn get_missing_strings(data: &str, required: &'static [&'static str]) -> Result<Vec<String>> {
|
||||||
let mut missing: Vec<String> = Vec::new();
|
let mut missing: Vec<String> = Vec::new();
|
||||||
|
|
||||||
@ -86,6 +78,7 @@ fn get_missing_strings(data: &str, required: &'static [&'static str]) -> Result<
|
|||||||
Ok(missing)
|
Ok(missing)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(any(target_arch = "s390x", target_arch = "x86_64"))]
|
||||||
pub fn check_cpu_flags(
|
pub fn check_cpu_flags(
|
||||||
retrieved_flags: &str,
|
retrieved_flags: &str,
|
||||||
required_flags: &'static [&'static str],
|
required_flags: &'static [&'static str],
|
||||||
@ -95,6 +88,7 @@ pub fn check_cpu_flags(
|
|||||||
Ok(missing_flags)
|
Ok(missing_flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(any(target_arch = "x86_64"))]
|
||||||
pub fn check_cpu_attribs(
|
pub fn check_cpu_attribs(
|
||||||
cpu_info: &str,
|
cpu_info: &str,
|
||||||
required_attribs: &'static [&'static str],
|
required_attribs: &'static [&'static str],
|
||||||
@ -110,11 +104,6 @@ pub fn run_network_checks() -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
fn get_kata_version_by_url(url: &str) -> std::result::Result<String, reqwest::Error> {
|
fn get_kata_version_by_url(url: &str) -> std::result::Result<String, reqwest::Error> {
|
||||||
let content = reqwest::blocking::Client::new()
|
let content = reqwest::blocking::Client::new()
|
||||||
.get(url)
|
.get(url)
|
||||||
@ -127,11 +116,6 @@ fn get_kata_version_by_url(url: &str) -> std::result::Result<String, reqwest::Er
|
|||||||
Ok(version.to_string())
|
Ok(version.to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
fn handle_reqwest_error(e: reqwest::Error) -> anyhow::Error {
|
fn handle_reqwest_error(e: reqwest::Error) -> anyhow::Error {
|
||||||
if e.is_connect() {
|
if e.is_connect() {
|
||||||
return anyhow!(e).context("http connection failure: connection refused");
|
return anyhow!(e).context("http connection failure: connection refused");
|
||||||
@ -152,11 +136,6 @@ fn handle_reqwest_error(e: reqwest::Error) -> anyhow::Error {
|
|||||||
anyhow!(e).context("unknown http connection failure: {:?}")
|
anyhow!(e).context("unknown http connection failure: {:?}")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
pub fn check_version() -> Result<()> {
|
pub fn check_version() -> Result<()> {
|
||||||
let version = get_kata_version_by_url(KATA_GITHUB_URL).map_err(handle_reqwest_error)?;
|
let version = get_kata_version_by_url(KATA_GITHUB_URL).map_err(handle_reqwest_error)?;
|
||||||
|
|
||||||
@ -165,6 +144,7 @@ pub fn check_version() -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(any(target_arch = "s390x", target_arch = "x86_64"))]
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -190,11 +170,6 @@ mod tests {
|
|||||||
assert_eq!(expected, actual);
|
assert_eq!(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_version_by_empty_url() {
|
fn check_version_by_empty_url() {
|
||||||
const TEST_URL: &str = "http:";
|
const TEST_URL: &str = "http:";
|
||||||
@ -203,11 +178,6 @@ mod tests {
|
|||||||
assert_eq!(expected, actual);
|
assert_eq!(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_version_by_garbage_url() {
|
fn check_version_by_garbage_url() {
|
||||||
const TEST_URL: &str = "_localhost_";
|
const TEST_URL: &str = "_localhost_";
|
||||||
@ -216,11 +186,6 @@ mod tests {
|
|||||||
assert_eq!(expected, actual);
|
assert_eq!(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_version_by_invalid_url() {
|
fn check_version_by_invalid_url() {
|
||||||
const TEST_URL: &str = "http://localhost :80";
|
const TEST_URL: &str = "http://localhost :80";
|
||||||
@ -229,11 +194,6 @@ mod tests {
|
|||||||
assert_eq!(expected, actual);
|
assert_eq!(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_latest_version() {
|
fn check_latest_version() {
|
||||||
let version = get_kata_version_by_url(KATA_GITHUB_URL).unwrap();
|
let version = get_kata_version_by_url(KATA_GITHUB_URL).unwrap();
|
||||||
|
@ -7,6 +7,7 @@ mod arch;
|
|||||||
mod args;
|
mod args;
|
||||||
mod check;
|
mod check;
|
||||||
mod ops;
|
mod ops;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
@ -32,16 +32,7 @@ pub fn handle_check(checkcmd: CheckArgument) -> Result<()> {
|
|||||||
|
|
||||||
CheckSubCommand::CheckVersionOnly => {
|
CheckSubCommand::CheckVersionOnly => {
|
||||||
// retrieve latest release
|
// retrieve latest release
|
||||||
#[cfg(any(
|
|
||||||
target_arch = "aarch64",
|
|
||||||
target_arch = "powerpc64le",
|
|
||||||
target_arch = "x86_64"
|
|
||||||
))]
|
|
||||||
check::check_version()?;
|
check::check_version()?;
|
||||||
|
|
||||||
// See: https://github.com/kata-containers/kata-containers/issues/5438
|
|
||||||
#[cfg(target_arch = "s390x")]
|
|
||||||
unimplemented!("Network check not implemented on s390x")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
33
src/tools/kata-ctl/src/utils.rs
Normal file
33
src/tools/kata-ctl/src/utils.rs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Copyright (c) 2022 Intel Corporation
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
//
|
||||||
|
|
||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
use anyhow::{anyhow, Result};
|
||||||
|
|
||||||
|
const NON_PRIV_USER: &str = "nobody";
|
||||||
|
|
||||||
|
pub fn drop_privs() -> Result<()> {
|
||||||
|
if nix::unistd::Uid::effective().is_root() {
|
||||||
|
privdrop::PrivDrop::default()
|
||||||
|
.chroot("/")
|
||||||
|
.user(NON_PRIV_USER)
|
||||||
|
.apply()
|
||||||
|
.map_err(|e| anyhow!("Failed to drop privileges to user {}: {}", NON_PRIV_USER, e))?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_drop_privs() {
|
||||||
|
let res = drop_privs();
|
||||||
|
assert!(res.is_ok());
|
||||||
|
}
|
||||||
|
}
|
@ -143,6 +143,7 @@ $ kubectl apply -f https://raw.githubusercontent.com/kata-containers/kata-contai
|
|||||||
The following removes the test pods:
|
The following removes the test pods:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-dragonball.yaml
|
||||||
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-clh.yaml
|
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-clh.yaml
|
||||||
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-fc.yaml
|
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-fc.yaml
|
||||||
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-qemu.yaml
|
$ kubectl delete -f https://raw.githubusercontent.com/kata-containers/kata-containers/main/tools/packaging/kata-deploy/examples/test-deploy-kata-qemu.yaml
|
||||||
|
@ -47,6 +47,7 @@ pull_virtiofsd_released_binary() {
|
|||||||
init_env() {
|
init_env() {
|
||||||
source "$HOME/.cargo/env"
|
source "$HOME/.cargo/env"
|
||||||
|
|
||||||
|
extra_rust_flags=" -C link-self-contained=yes"
|
||||||
case ${ARCH} in
|
case ${ARCH} in
|
||||||
"aarch64")
|
"aarch64")
|
||||||
LIBC="musl"
|
LIBC="musl"
|
||||||
@ -60,6 +61,7 @@ init_env() {
|
|||||||
"s390x")
|
"s390x")
|
||||||
LIBC="gnu"
|
LIBC="gnu"
|
||||||
ARCH_LIBC=${ARCH}-linux-${LIBC}
|
ARCH_LIBC=${ARCH}-linux-${LIBC}
|
||||||
|
extra_rust_flags=""
|
||||||
;;
|
;;
|
||||||
"x86_64")
|
"x86_64")
|
||||||
LIBC="musl"
|
LIBC="musl"
|
||||||
@ -76,7 +78,7 @@ build_virtiofsd_from_source() {
|
|||||||
git clone --depth 1 --branch ${virtiofsd_version} ${virtiofsd_repo} virtiofsd
|
git clone --depth 1 --branch ${virtiofsd_version} ${virtiofsd_repo} virtiofsd
|
||||||
pushd virtiofsd
|
pushd virtiofsd
|
||||||
|
|
||||||
export RUSTFLAGS='-C target-feature=+crt-static -C link-self-contained=yes'
|
export RUSTFLAGS='-C target-feature=+crt-static'${extra_rust_flags}
|
||||||
export LIBSECCOMP_LINK_TYPE=static
|
export LIBSECCOMP_LINK_TYPE=static
|
||||||
export LIBSECCOMP_LIB_PATH=/usr/lib/${ARCH_LIBC}
|
export LIBSECCOMP_LIB_PATH=/usr/lib/${ARCH_LIBC}
|
||||||
export LIBCAPNG_LINK_TYPE=static
|
export LIBCAPNG_LINK_TYPE=static
|
||||||
|
@ -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: "2115a4156891804e5fc7bbd0d1831d2e92a0c50e"
|
version: "b4e39427080293c674b8db627ee6daf1f1b56806"
|
||||||
|
|
||||||
firecracker:
|
firecracker:
|
||||||
description: "Firecracker micro-VMM"
|
description: "Firecracker micro-VMM"
|
||||||
@ -353,7 +353,7 @@ languages:
|
|||||||
golangci-lint:
|
golangci-lint:
|
||||||
description: "golangci-lint"
|
description: "golangci-lint"
|
||||||
notes: "'version' is the default minimum version used by this project."
|
notes: "'version' is the default minimum version used by this project."
|
||||||
version: "1.41.1"
|
version: "1.46.2"
|
||||||
meta:
|
meta:
|
||||||
description: |
|
description: |
|
||||||
'newest-version' is the latest version known to work when
|
'newest-version' is the latest version known to work when
|
||||||
|
Loading…
Reference in New Issue
Block a user