Documentation
¶
Overview ¶
Package virtcontainers manages hardware virtualized containers. Each container belongs to a set of containers sharing the same networking namespace and storage, also known as a sandbox.
Virtcontainers sandboxes are hardware virtualized, i.e. they run on virtual machines. Virtcontainers will create one VM per sandbox, and containers will be created as processes within the sandbox VM.
The virtcontainers package manages both sandboxes and containers lifecycles.
Example (CreateAndStartSandbox) ¶
This example creates and starts a single container sandbox, using qemu as the hypervisor and hyperstart as the VM agent.
package main
import (
"fmt"
"strings"
vc "github.com/kata-containers/runtime/virtcontainers"
)
const containerRootfs = "/var/lib/container/bundle/"
// This example creates and starts a single container sandbox,
// using qemu as the hypervisor and hyperstart as the VM agent.
func main() {
envs := []vc.EnvVar{
{
Var: "PATH",
Value: "/bin:/usr/bin:/sbin:/usr/sbin",
},
}
cmd := vc.Cmd{
Args: strings.Split("/bin/sh", " "),
Envs: envs,
WorkDir: "/",
}
// Define the container command and bundle.
container := vc.ContainerConfig{
ID: "1",
RootFs: containerRootfs,
Cmd: cmd,
}
// Sets the hypervisor configuration.
hypervisorConfig := vc.HypervisorConfig{
KernelPath: "/usr/share/kata-containers/vmlinux.container",
ImagePath: "/usr/share/kata-containers/kata-containers.img",
HypervisorPath: "/usr/bin/qemu-system-x86_64",
}
// Use hyperstart default values for the agent.
agConfig := vc.HyperConfig{}
// VM resources
vmConfig := vc.Resources{
Memory: 1024,
}
// The sandbox configuration:
// - One container
// - Hypervisor is QEMU
// - Agent is hyperstart
sandboxConfig := vc.SandboxConfig{
VMConfig: vmConfig,
HypervisorType: vc.QemuHypervisor,
HypervisorConfig: hypervisorConfig,
AgentType: vc.HyperstartAgent,
AgentConfig: agConfig,
Containers: []vc.ContainerConfig{container},
}
_, err := vc.RunSandbox(sandboxConfig, nil)
if err != nil {
fmt.Printf("Could not run sandbox: %s", err)
}
return
}
Output:
Index ¶
- Constants
- Variables
- func CreateContainer(sandboxID string, containerConfig ContainerConfig) (VCSandbox, VCContainer, error)
- func EnterContainer(sandboxID, containerID string, cmd Cmd) (VCSandbox, VCContainer, *Process, error)
- func KillContainer(sandboxID, containerID string, signal syscall.Signal, all bool) error
- func MaxQemuVCPUs() uint32
- func PauseContainer(sandboxID, containerID string) error
- func ResumeContainer(sandboxID, containerID string) error
- func RunningOnVMM(cpuInfoPath string) (bool, error)
- func SerializeParams(params []Param, delim string) []string
- func SetLogger(logger *logrus.Entry)
- func UpdateContainer(sandboxID, containerID string, resources specs.LinuxResources) error
- type AgentType
- type BlkioStatEntry
- type BlkioStats
- type Bridge
- type CPUDevice
- type CPUStats
- type CPUUsage
- type CgroupStats
- type Cmd
- type Container
- func (c *Container) GetAnnotations() map[string]string
- func (c *Container) GetPid() int
- func (c *Container) GetToken() string
- func (c *Container) ID() string
- func (c *Container) Logger() *logrus.Entry
- func (c *Container) Process() Process
- func (c *Container) Sandbox() VCSandbox
- func (c *Container) SetPid(pid int) error
- type ContainerConfig
- type ContainerResources
- type ContainerStats
- type ContainerStatus
- type ContainerType
- type DNSInfo
- type Endpoint
- type EndpointType
- type EnvVar
- type Factory
- type Hook
- type Hooks
- type HugetlbStats
- type HyperAgentState
- type HyperConfig
- type HypervisorConfig
- func (conf *HypervisorConfig) AddKernelParam(p Param) error
- func (conf *HypervisorConfig) CustomFirmwareAsset() bool
- func (conf *HypervisorConfig) CustomHypervisorAsset() bool
- func (conf *HypervisorConfig) CustomImageAsset() bool
- func (conf *HypervisorConfig) CustomInitrdAsset() bool
- func (conf *HypervisorConfig) CustomKernelAsset() bool
- func (conf *HypervisorConfig) FirmwareAssetPath() (string, error)
- func (conf *HypervisorConfig) HypervisorAssetPath() (string, error)
- func (conf *HypervisorConfig) ImageAssetPath() (string, error)
- func (conf *HypervisorConfig) InitrdAssetPath() (string, error)
- func (conf *HypervisorConfig) KernelAssetPath() (string, error)
- type HypervisorType
- type KataAgentConfig
- type KataAgentState
- type KataShimConfig
- type LinuxCapabilities
- type MemoryData
- type MemoryStats
- type Mount
- type NetInterworkingModel
- type NetlinkIface
- type NetworkConfig
- type NetworkInfo
- type NetworkInterface
- type NetworkInterfacePair
- type NetworkModel
- type NetworkNamespace
- type Param
- type PhysicalEndpoint
- func (endpoint *PhysicalEndpoint) Attach(h hypervisor) error
- func (endpoint *PhysicalEndpoint) Detach(netNsCreated bool, netNsPath string) error
- func (endpoint *PhysicalEndpoint) HardwareAddr() string
- func (endpoint *PhysicalEndpoint) Name() string
- func (endpoint *PhysicalEndpoint) Properties() NetworkInfo
- func (endpoint *PhysicalEndpoint) SetProperties(properties NetworkInfo)
- func (endpoint *PhysicalEndpoint) Type() EndpointType
- type PidsStats
- type Process
- type ProcessList
- type ProcessListOptions
- type ProxyConfig
- type ProxyType
- type QemuState
- type Resources
- type Sandbox
- func (s *Sandbox) AddVhostUserDevice(devInfo api.VhostUserDevice, devType config.DeviceType) error
- func (s *Sandbox) Annotations(key string) (string, error)
- func (s *Sandbox) CreateContainer(contConfig ContainerConfig) (VCContainer, error)
- func (s *Sandbox) DecrementSandboxBlockIndex() error
- func (s *Sandbox) Delete() error
- func (s *Sandbox) DeleteContainer(containerID string) (VCContainer, error)
- func (s *Sandbox) EnterContainer(containerID string, cmd Cmd) (VCContainer, *Process, error)
- func (s *Sandbox) GetAllContainers() []VCContainer
- func (s *Sandbox) GetAndSetSandboxBlockIndex() (int, error)
- func (s *Sandbox) GetAnnotations() map[string]string
- func (s *Sandbox) GetContainer(containerID string) VCContainer
- func (s *Sandbox) HotplugAddDevice(device api.Device, devType config.DeviceType) error
- func (s *Sandbox) HotplugRemoveDevice(device api.Device, devType config.DeviceType) error
- func (s *Sandbox) ID() string
- func (s *Sandbox) IOStream(containerID, processID string) (io.WriteCloser, io.Reader, io.Reader, error)
- func (s *Sandbox) Logger() *logrus.Entry
- func (s *Sandbox) Monitor() (chan error, error)
- func (s *Sandbox) Pause() error
- func (s *Sandbox) Release() error
- func (s *Sandbox) Resume() error
- func (s *Sandbox) SetAnnotations(annotations map[string]string) error
- func (s *Sandbox) SignalProcess(containerID, processID string, signal syscall.Signal, all bool) error
- func (s *Sandbox) StartContainer(containerID string) (VCContainer, error)
- func (s *Sandbox) StatsContainer(containerID string) (ContainerStats, error)
- func (s *Sandbox) Status() SandboxStatus
- func (s *Sandbox) StatusContainer(containerID string) (ContainerStatus, error)
- func (s *Sandbox) UpdateContainer(containerID string, resources specs.LinuxResources) error
- func (s *Sandbox) WaitProcess(containerID, processID string) (int32, error)
- func (s *Sandbox) WinsizeProcess(containerID, processID string, height, width uint32) error
- type SandboxConfig
- type SandboxStatus
- type ShimConfig
- type ShimParams
- type ShimType
- type Socket
- type Sockets
- type SpawnerType
- type State
- type SystemMountsInfo
- type ThrottlingData
- type TypedDevice
- type TypedJSONEndpoint
- type VC
- type VCContainer
- type VCImpl
- func (impl *VCImpl) CreateContainer(sandboxID string, containerConfig ContainerConfig) (VCSandbox, VCContainer, error)
- func (impl *VCImpl) CreateSandbox(sandboxConfig SandboxConfig) (VCSandbox, error)
- func (impl *VCImpl) DeleteContainer(sandboxID, containerID string) (VCContainer, error)
- func (impl *VCImpl) DeleteSandbox(sandboxID string) (VCSandbox, error)
- func (impl *VCImpl) EnterContainer(sandboxID, containerID string, cmd Cmd) (VCSandbox, VCContainer, *Process, error)
- func (impl *VCImpl) FetchSandbox(sandboxID string) (VCSandbox, error)
- func (impl *VCImpl) KillContainer(sandboxID, containerID string, signal syscall.Signal, all bool) error
- func (impl *VCImpl) ListSandbox() ([]SandboxStatus, error)
- func (impl *VCImpl) PauseContainer(sandboxID, containerID string) error
- func (impl *VCImpl) PauseSandbox(sandboxID string) (VCSandbox, error)
- func (impl *VCImpl) ProcessListContainer(sandboxID, containerID string, options ProcessListOptions) (ProcessList, error)
- func (impl *VCImpl) ResumeContainer(sandboxID, containerID string) error
- func (impl *VCImpl) ResumeSandbox(sandboxID string) (VCSandbox, error)
- func (impl *VCImpl) RunSandbox(sandboxConfig SandboxConfig) (VCSandbox, error)
- func (impl *VCImpl) SetFactory(factory Factory)
- func (impl *VCImpl) SetLogger(logger *logrus.Entry)
- func (impl *VCImpl) StartContainer(sandboxID, containerID string) (VCContainer, error)
- func (impl *VCImpl) StartSandbox(sandboxID string) (VCSandbox, error)
- func (impl *VCImpl) StatsContainer(sandboxID, containerID string) (ContainerStats, error)
- func (impl *VCImpl) StatusContainer(sandboxID, containerID string) (ContainerStatus, error)
- func (impl *VCImpl) StatusSandbox(sandboxID string) (SandboxStatus, error)
- func (impl *VCImpl) StopContainer(sandboxID, containerID string) (VCContainer, error)
- func (impl *VCImpl) StopSandbox(sandboxID string) (VCSandbox, error)
- func (impl *VCImpl) UpdateContainer(sandboxID, containerID string, resources specs.LinuxResources) error
- type VCSandbox
- func CreateSandbox(sandboxConfig SandboxConfig, factory Factory) (VCSandbox, error)
- func DeleteSandbox(sandboxID string) (VCSandbox, error)
- func FetchSandbox(sandboxID string) (VCSandbox, error)
- func PauseSandbox(sandboxID string) (VCSandbox, error)
- func ResumeSandbox(sandboxID string) (VCSandbox, error)
- func RunSandbox(sandboxConfig SandboxConfig, factory Factory) (VCSandbox, error)
- func StartSandbox(sandboxID string) (VCSandbox, error)
- func StopSandbox(sandboxID string) (VCSandbox, error)
- type VM
- type VMConfig
- type VhostUserEndpoint
- func (endpoint *VhostUserEndpoint) Attach(h hypervisor) error
- func (endpoint *VhostUserEndpoint) Detach(netNsCreated bool, netNsPath string) error
- func (endpoint *VhostUserEndpoint) HardwareAddr() string
- func (endpoint *VhostUserEndpoint) Name() string
- func (endpoint *VhostUserEndpoint) Properties() NetworkInfo
- func (endpoint *VhostUserEndpoint) SetProperties(properties NetworkInfo)
- func (endpoint *VhostUserEndpoint) Type() EndpointType
- type VirtualEndpoint
- func (endpoint *VirtualEndpoint) Attach(h hypervisor) error
- func (endpoint *VirtualEndpoint) Detach(netNsCreated bool, netNsPath string) error
- func (endpoint *VirtualEndpoint) HardwareAddr() string
- func (endpoint *VirtualEndpoint) Name() string
- func (endpoint *VirtualEndpoint) Properties() NetworkInfo
- func (endpoint *VirtualEndpoint) SetProperties(properties NetworkInfo)
- func (endpoint *VirtualEndpoint) Type() EndpointType
- type Volume
- type Volumes
Examples ¶
Constants ¶
const ( // VirtioBlock means use virtio-blk for hotplugging drives VirtioBlock = "virtio-blk" // VirtioSCSI means use virtio-scsi for hotplugging drives VirtioSCSI = "virtio-scsi" )
const ( // QemuPCLite is the QEMU pc-lite machine type for amd64 QemuPCLite = "pc-lite" // QemuPC is the QEMU pc machine type for amd64 QemuPC = "pc" // QemuQ35 is the QEMU Q35 machine type for amd64 QemuQ35 = "q35" // QemuVirt is the QEMU virt machine type for aarch64 QemuVirt = "virt" // QemuPseries is a QEMU virt machine type for for ppc64le QemuPseries = "pseries" )
const ( // StateReady represents a sandbox/container that's ready to be run StateReady stateString = "ready" // StateRunning represents a sandbox/container that's currently running. StateRunning stateString = "running" // StatePaused represents a sandbox/container that has been paused. StatePaused stateString = "paused" // StateStopped represents a sandbox/container that has been stopped. StateStopped stateString = "stopped" )
const CniPrimaryInterface = "eth0"
CniPrimaryInterface Name chosen for the primary interface If CNI ever support multiple primary interfaces this should be revisited
const DefaultShmSize = 65536 * 1024
DefaultShmSize is the default shm size to be used in case host IPC is used.
Variables ¶
var DefaultNetInterworkingModel = NetXConnectMacVtapModel
DefaultNetInterworkingModel is a package level default that determines how the VM should be connected to the the container network interface
var RunVMStoragePath = filepath.Join("/run", storagePathSuffix, vmPathSuffix)
RunVMStoragePath is the vm directory. It will contain all guest vm sockets and shared mountpoints.
Functions ¶
func CreateContainer ¶
func CreateContainer(sandboxID string, containerConfig ContainerConfig) (VCSandbox, VCContainer, error)
CreateContainer is the virtcontainers container creation entry point. CreateContainer creates a container on a given sandbox.
func EnterContainer ¶
func EnterContainer(sandboxID, containerID string, cmd Cmd) (VCSandbox, VCContainer, *Process, error)
EnterContainer is the virtcontainers container command execution entry point. EnterContainer enters an already running container and runs a given command.
func KillContainer ¶
KillContainer is the virtcontainers entry point to send a signal to a container running inside a sandbox. If all is true, all processes in the container will be sent the signal.
func MaxQemuVCPUs ¶
func MaxQemuVCPUs() uint32
MaxQemuVCPUs returns the maximum number of vCPUs supported
func PauseContainer ¶
PauseContainer is the virtcontainers container pause entry point.
func ResumeContainer ¶
ResumeContainer is the virtcontainers container resume entry point.
func RunningOnVMM ¶
RunningOnVMM checks if the system is running inside a VM.
func SerializeParams ¶
SerializeParams converts []Param to []string
func UpdateContainer ¶
func UpdateContainer(sandboxID, containerID string, resources specs.LinuxResources) error
UpdateContainer is the virtcontainers entry point to update container's resources.
Types ¶
type AgentType ¶
type AgentType string
AgentType describes the type of guest agent a Sandbox should run.
const ( // NoopAgentType is the No-Op agent. NoopAgentType AgentType = "noop" // HyperstartAgent is the Hyper hyperstart agent. HyperstartAgent AgentType = "hyperstart" // KataContainersAgent is the Kata Containers agent. KataContainersAgent AgentType = "kata" // SocketTypeVSOCK is a VSOCK socket type for talking to an agent. SocketTypeVSOCK = "vsock" // SocketTypeUNIX is a UNIX socket type for talking to an agent. // It typically means the agent is living behind a host proxy. SocketTypeUNIX = "unix" )
type BlkioStatEntry ¶
type BlkioStatEntry struct {
Major uint64 `json:"major,omitempty"`
Minor uint64 `json:"minor,omitempty"`
Op string `json:"op,omitempty"`
Value uint64 `json:"value,omitempty"`
}
BlkioStatEntry gather date related to a block device
type BlkioStats ¶
type BlkioStats struct {
// number of bytes tranferred to and from the block device
IoServiceBytesRecursive []BlkioStatEntry `json:"io_service_bytes_recursive,omitempty"`
IoServicedRecursive []BlkioStatEntry `json:"io_serviced_recursive,omitempty"`
IoQueuedRecursive []BlkioStatEntry `json:"io_queue_recursive,omitempty"`
IoServiceTimeRecursive []BlkioStatEntry `json:"io_service_time_recursive,omitempty"`
IoWaitTimeRecursive []BlkioStatEntry `json:"io_wait_time_recursive,omitempty"`
IoMergedRecursive []BlkioStatEntry `json:"io_merged_recursive,omitempty"`
IoTimeRecursive []BlkioStatEntry `json:"io_time_recursive,omitempty"`
SectorsRecursive []BlkioStatEntry `json:"sectors_recursive,omitempty"`
}
BlkioStats describes block io stats
type Bridge ¶
type Bridge struct {
// Address contains information about devices plugged and its address in the bridge
Address map[uint32]string
// Type is the type of the bridge (pci, pcie, etc)
Type bridgeType
//ID is used to identify the bridge in the hypervisor
ID string
// Addr is the PCI/e slot of the bridge
Addr int
}
Bridge is a bridge where devices can be hot plugged
type CPUDevice ¶
type CPUDevice struct {
// ID is used to identify this CPU in the hypervisor options.
ID string
}
CPUDevice represents a CPU device which was hot-added in a running VM
type CPUStats ¶
type CPUStats struct {
CPUUsage CPUUsage `json:"cpu_usage,omitempty"`
ThrottlingData ThrottlingData `json:"throttling_data,omitempty"`
}
CPUStats describes the cpu stats
type CPUUsage ¶
type CPUUsage struct {
// Total CPU time consumed.
// Units: nanoseconds.
TotalUsage uint64 `json:"total_usage,omitempty"`
// Total CPU time consumed per core.
// Units: nanoseconds.
PercpuUsage []uint64 `json:"percpu_usage,omitempty"`
// Time spent by tasks of the cgroup in kernel mode.
// Units: nanoseconds.
UsageInKernelmode uint64 `json:"usage_in_kernelmode"`
// Time spent by tasks of the cgroup in user mode.
// Units: nanoseconds.
UsageInUsermode uint64 `json:"usage_in_usermode"`
}
CPUUsage denotes the usage of a CPU. All CPU stats are aggregate since container inception.
type CgroupStats ¶
type CgroupStats struct {
CPUStats CPUStats `json:"cpu_stats,omitempty"`
MemoryStats MemoryStats `json:"memory_stats,omitempty"`
PidsStats PidsStats `json:"pids_stats,omitempty"`
BlkioStats BlkioStats `json:"blkio_stats,omitempty"`
// the map is in the format "size of hugepage: stats of the hugepage"
HugetlbStats map[string]HugetlbStats `json:"hugetlb_stats,omitempty"`
}
CgroupStats describes all cgroup subsystem stats
type Cmd ¶
type Cmd struct {
Args []string
Envs []EnvVar
SupplementaryGroups []string
// Note that these fields *MUST* remain as strings.
//
// The reason being that we want runtimes to be able to support CLI
// operations like "exec --user=". That option allows the
// specification of a user (either as a string username or a numeric
// UID), and may optionally also include a group (groupame or GID).
//
// Since this type is the interface to allow the runtime to specify
// the user and group the workload can run as, these user and group
// fields cannot be encoded as integer values since that would imply
// the runtime itself would need to perform a UID/GID lookup on the
// user-specified username/groupname. But that isn't practically
// possible given that to do so would require the runtime to access
// the image to allow it to interrogate the appropriate databases to
// convert the username/groupnames to UID/GID values.
//
// Note that this argument applies solely to the _runtime_ supporting
// a "--user=" option when running in a "standalone mode" - there is
// no issue when the runtime is called by a container manager since
// all the user and group mapping is handled by the container manager
// and specified to the runtime in terms of UID/GID's in the
// configuration file generated by the container manager.
User string
PrimaryGroup string
WorkDir string
Console string
Capabilities LinuxCapabilities
Interactive bool
Detach bool
NoNewPrivileges bool
}
Cmd represents a command to execute in a running container.
type Container ¶
type Container struct {
// contains filtered or unexported fields
}
Container is composed of a set of containers and a runtime environment. A Container can be created, deleted, started, stopped, listed, entered, paused and restored.
func (*Container) GetAnnotations ¶
GetAnnotations returns container's annotations
func (*Container) Logger ¶
Logger returns a logrus logger appropriate for logging Container messages
type ContainerConfig ¶
type ContainerConfig struct {
ID string
// RootFs is the container workload image on the host.
RootFs string
// ReadOnlyRootfs indicates if the rootfs should be mounted readonly
ReadonlyRootfs bool
// Cmd specifies the command to run on a container
Cmd Cmd
// Annotations allow clients to store arbitrary values,
// for example to add additional status values required
// to support particular specifications.
Annotations map[string]string
Mounts []Mount
// Device configuration for devices that must be available within the container.
DeviceInfos []config.DeviceInfo
// Resources container resources
Resources ContainerResources
}
ContainerConfig describes one container runtime configuration.
type ContainerResources ¶
type ContainerResources struct {
// VCPUs are the number of vCPUs that are being used by the container
VCPUs uint32
// Mem is the memory that is being used by the container
Mem uint32
}
ContainerResources describes container resources
type ContainerStats ¶
type ContainerStats struct {
CgroupStats *CgroupStats
}
ContainerStats describes a container stats.
func StatsContainer ¶
func StatsContainer(sandboxID, containerID string) (ContainerStats, error)
StatsContainer is the virtcontainers container stats entry point. StatsContainer returns a detailed container stats.
type ContainerStatus ¶
type ContainerStatus struct {
ID string
State State
PID int
StartTime time.Time
RootFs string
// Annotations allow clients to store arbitrary values,
// for example to add additional status values required
// to support particular specifications.
Annotations map[string]string
}
ContainerStatus describes a container status.
func StatusContainer ¶
func StatusContainer(sandboxID, containerID string) (ContainerStatus, error)
StatusContainer is the virtcontainers container status entry point. StatusContainer returns a detailed container status.
type ContainerType ¶
type ContainerType string
ContainerType defines a type of container.
const ( PodContainer ContainerType = "pod_container" PodSandbox ContainerType = "pod_sandbox" UnknownContainerType ContainerType = "unknown_container_type" )
List different types of containers
func (ContainerType) IsSandbox ¶
func (cType ContainerType) IsSandbox() bool
IsSandbox determines if the container type can be considered as a sandbox. We can consider a sandbox in case we have a PodSandbox or a RegularContainer.
type Endpoint ¶
type Endpoint interface {
Properties() NetworkInfo
Name() string
HardwareAddr() string
Type() EndpointType
SetProperties(NetworkInfo)
Attach(hypervisor) error
Detach(netNsCreated bool, netNsPath string) error
}
Endpoint represents a physical or virtual network interface.
type EndpointType ¶
type EndpointType string
EndpointType identifies the type of the network endpoint.
const ( // PhysicalEndpointType is the physical network interface. PhysicalEndpointType EndpointType = "physical" // VirtualEndpointType is the virtual network interface. VirtualEndpointType EndpointType = "virtual" // VhostUserEndpointType is the vhostuser network interface. VhostUserEndpointType EndpointType = "vhost-user" )
func (*EndpointType) Set ¶
func (endpointType *EndpointType) Set(value string) error
Set sets an endpoint type based on the input string.
func (*EndpointType) String ¶
func (endpointType *EndpointType) String() string
String converts an endpoint type to a string.
type Factory ¶
type Factory interface {
// GetVM gets a new VM from the factory.
GetVM(config VMConfig) (*VM, error)
// CloseFactory closes and cleans up the factory.
CloseFactory()
}
Factory controls how a new VM is created.
type HugetlbStats ¶
type HugetlbStats struct {
// current res_counter usage for hugetlb
Usage uint64 `json:"usage,omitempty"`
// maximum usage ever recorded.
MaxUsage uint64 `json:"max_usage,omitempty"`
// number of times hugetlb usage allocation failure.
Failcnt uint64 `json:"failcnt"`
}
HugetlbStats describes hugetable memory stats
type HyperAgentState ¶
HyperAgentState is the structure describing the data stored from this agent implementation.
type HyperConfig ¶
HyperConfig is a structure storing information needed for hyperstart agent initialization.
type HypervisorConfig ¶
type HypervisorConfig struct {
// KernelParams are additional guest kernel parameters.
KernelParams []Param
// HypervisorParams are additional hypervisor parameters.
HypervisorParams []Param
// KernelPath is the guest kernel host path.
KernelPath string
// ImagePath is the guest image host path.
ImagePath string
// InitrdPath is the guest initrd image host path.
// ImagePath and InitrdPath cannot be set at the same time.
InitrdPath string
// FirmwarePath is the bios host path
FirmwarePath string
// MachineAccelerators are machine specific accelerators
MachineAccelerators string
// HypervisorPath is the hypervisor executable host path.
HypervisorPath string
// BlockDeviceDriver specifies the driver to be used for block device
// either VirtioSCSI or VirtioBlock with the default driver being defaultBlockDriver
BlockDeviceDriver string
// HypervisorMachineType specifies the type of machine being
// emulated.
HypervisorMachineType string
// DefaultVCPUs specifies default number of vCPUs for the VM.
DefaultVCPUs uint32
//DefaultMaxVCPUs specifies the maximum number of vCPUs for the VM.
DefaultMaxVCPUs uint32
// DefaultMem specifies default memory size in MiB for the VM.
// Sandbox configuration VMConfig.Memory overwrites this.
DefaultMemSz uint32
// DefaultBridges specifies default number of bridges for the VM.
// Bridges can be used to hot plug devices
DefaultBridges uint32
// DisableBlockDeviceUse disallows a block device from being used.
DisableBlockDeviceUse bool
// EnableIOThreads enables IO to be processed in a separate thread.
// Supported currently for virtio-scsi driver.
EnableIOThreads bool
// Debug changes the default hypervisor and kernel parameters to
// enable debug output where available.
Debug bool
// MemPrealloc specifies if the memory should be pre-allocated
MemPrealloc bool
// HugePages specifies if the memory should be pre-allocated from huge pages
HugePages bool
// Realtime Used to enable/disable realtime
Realtime bool
// Mlock is used to control memory locking when Realtime is enabled
// Realtime=true and Mlock=false, allows for swapping out of VM memory
// enabling higher density
Mlock bool
// DisableNestingChecks is used to override customizations performed
// when running on top of another VMM.
DisableNestingChecks bool
// Msize9p is used as the msize for 9p shares
Msize9p uint32
// UseVSock use a vsock for agent communication
UseVSock bool
// BootToBeTemplate used to indicate if the VM is created to be a template VM
BootToBeTemplate bool
// BootFromTemplate used to indicate if the VM should be created from a template VM
BootFromTemplate bool
// MemoryPath is the memory file path of VM memory. Used when either BootToBeTemplate or
// BootFromTemplate is true.
MemoryPath string
// DevicesStatePath is the VM device state file path. Used when either BootToBeTemplate or
// BootFromTemplate is true.
DevicesStatePath string
// contains filtered or unexported fields
}
HypervisorConfig is the hypervisor configuration.
func (*HypervisorConfig) AddKernelParam ¶
func (conf *HypervisorConfig) AddKernelParam(p Param) error
AddKernelParam allows the addition of new kernel parameters to an existing hypervisor configuration.
func (*HypervisorConfig) CustomFirmwareAsset ¶
func (conf *HypervisorConfig) CustomFirmwareAsset() bool
CustomFirmwareAsset returns true if the firmware asset is a custom one, false otherwise.
func (*HypervisorConfig) CustomHypervisorAsset ¶
func (conf *HypervisorConfig) CustomHypervisorAsset() bool
CustomHypervisorAsset returns true if the hypervisor asset is a custom one, false otherwise.
func (*HypervisorConfig) CustomImageAsset ¶
func (conf *HypervisorConfig) CustomImageAsset() bool
CustomImageAsset returns true if the image asset is a custom one, false otherwise.
func (*HypervisorConfig) CustomInitrdAsset ¶
func (conf *HypervisorConfig) CustomInitrdAsset() bool
CustomInitrdAsset returns true if the initrd asset is a custom one, false otherwise.
func (*HypervisorConfig) CustomKernelAsset ¶
func (conf *HypervisorConfig) CustomKernelAsset() bool
CustomKernelAsset returns true if the kernel asset is a custom one, false otherwise.
func (*HypervisorConfig) FirmwareAssetPath ¶
func (conf *HypervisorConfig) FirmwareAssetPath() (string, error)
FirmwareAssetPath returns the guest firmware path
func (*HypervisorConfig) HypervisorAssetPath ¶
func (conf *HypervisorConfig) HypervisorAssetPath() (string, error)
HypervisorAssetPath returns the VM hypervisor path
func (*HypervisorConfig) ImageAssetPath ¶
func (conf *HypervisorConfig) ImageAssetPath() (string, error)
ImageAssetPath returns the guest image path
func (*HypervisorConfig) InitrdAssetPath ¶
func (conf *HypervisorConfig) InitrdAssetPath() (string, error)
InitrdAssetPath returns the guest initrd path
func (*HypervisorConfig) KernelAssetPath ¶
func (conf *HypervisorConfig) KernelAssetPath() (string, error)
KernelAssetPath returns the guest kernel path
type HypervisorType ¶
type HypervisorType string
HypervisorType describes an hypervisor type.
const ( // QemuHypervisor is the QEMU hypervisor. QemuHypervisor HypervisorType = "qemu" // MockHypervisor is a mock hypervisor for testing purposes MockHypervisor HypervisorType = "mock" )
func (*HypervisorType) Set ¶
func (hType *HypervisorType) Set(value string) error
Set sets an hypervisor type based on the input string.
func (*HypervisorType) String ¶
func (hType *HypervisorType) String() string
String converts an hypervisor type to a string.
type KataAgentConfig ¶
KataAgentConfig is a structure storing information needed to reach the Kata Containers agent.
type KataAgentState ¶
KataAgentState is the structure describing the data stored from this agent implementation.
type KataShimConfig ¶
KataShimConfig is the structure providing specific configuration for kataShim implementation.
type LinuxCapabilities ¶
type LinuxCapabilities struct {
// Bounding is the set of capabilities checked by the kernel.
Bounding []string
// Effective is the set of capabilities checked by the kernel.
Effective []string
// Inheritable is the capabilities preserved across execve.
Inheritable []string
// Permitted is the limiting superset for effective capabilities.
Permitted []string
// Ambient is the ambient set of capabilities that are kept.
Ambient []string
}
LinuxCapabilities specify the capabilities to keep when executing the process inside the container.
type MemoryData ¶
type MemoryData struct {
Usage uint64 `json:"usage,omitempty"`
MaxUsage uint64 `json:"max_usage,omitempty"`
Failcnt uint64 `json:"failcnt"`
Limit uint64 `json:"limit"`
}
MemoryData gather the data related to memory
type MemoryStats ¶
type MemoryStats struct {
// memory used for cache
Cache uint64 `json:"cache,omitempty"`
// usage of memory
Usage MemoryData `json:"usage,omitempty"`
// usage of memory swap
SwapUsage MemoryData `json:"swap_usage,omitempty"`
// usage of kernel memory
KernelUsage MemoryData `json:"kernel_usage,omitempty"`
// usage of kernel TCP memory
KernelTCPUsage MemoryData `json:"kernel_tcp_usage,omitempty"`
// if true, memory usage is accounted for throughout a hierarchy of cgroups.
UseHierarchy bool `json:"use_hierarchy"`
Stats map[string]uint64 `json:"stats,omitempty"`
}
MemoryStats describes the memory stats
type Mount ¶
type Mount struct {
Source string
Destination string
// Type specifies the type of filesystem to mount.
Type string
// Options list all the mount options of the filesystem.
Options []string
// HostPath used to store host side bind mount path
HostPath string
// ReadOnly specifies if the mount should be read only or not
ReadOnly bool
// BlockDevice represents block device that is attached to the
// VM in case this mount is a block device file or a directory
// backed by a block device.
BlockDevice *drivers.BlockDevice
}
Mount describes a container mount.
type NetInterworkingModel ¶
type NetInterworkingModel int
NetInterworkingModel defines the network model connecting the network interface to the virtual machine.
const ( // NetXConnectDefaultModel Ask to use DefaultNetInterworkingModel NetXConnectDefaultModel NetInterworkingModel = iota // NetXConnectBridgedModel uses a linux bridge to interconnect // the container interface to the VM. This is the // safe default that works for most cases except // macvlan and ipvlan NetXConnectBridgedModel // NetXConnectMacVtapModel can be used when the Container network // interface can be bridged using macvtap NetXConnectMacVtapModel // NetXConnectEnlightenedModel can be used when the Network plugins // are enlightened to create VM native interfaces // when requested by the runtime // This will be used for vethtap, macvtap, ipvtap NetXConnectEnlightenedModel // NetXConnectInvalidModel is the last item to check valid values by IsValid() NetXConnectInvalidModel )
func (NetInterworkingModel) IsValid ¶
func (n NetInterworkingModel) IsValid() bool
IsValid checks if a model is valid
func (*NetInterworkingModel) SetModel ¶
func (n *NetInterworkingModel) SetModel(modelName string) error
SetModel change the model string value
type NetlinkIface ¶
NetlinkIface describes fully a network interface.
type NetworkConfig ¶
type NetworkConfig struct {
NetNSPath string
NumInterfaces int
InterworkingModel NetInterworkingModel
}
NetworkConfig is the network configuration related to a network.
type NetworkInfo ¶
type NetworkInfo struct {
Iface NetlinkIface
Addrs []netlink.Addr
Routes []netlink.Route
DNS DNSInfo
}
NetworkInfo gathers all information related to a network interface. It can be used to store the description of the underlying network.
type NetworkInterface ¶
NetworkInterface defines a network interface.
type NetworkInterfacePair ¶
type NetworkInterfacePair struct {
ID string
Name string
VirtIface NetworkInterface
TAPIface NetworkInterface
NetInterworkingModel
VMFds []*os.File
VhostFds []*os.File
}
NetworkInterfacePair defines a pair between VM and virtual network interfaces.
type NetworkModel ¶
type NetworkModel string
NetworkModel describes the type of network specification.
const ( // NoopNetworkModel is the No-Op network. NoopNetworkModel NetworkModel = "noop" // CNINetworkModel is the CNI network. CNINetworkModel NetworkModel = "CNI" // CNMNetworkModel is the CNM network. CNMNetworkModel NetworkModel = "CNM" )
func (*NetworkModel) Set ¶
func (networkType *NetworkModel) Set(value string) error
Set sets a network type based on the input string.
func (*NetworkModel) String ¶
func (networkType *NetworkModel) String() string
String converts a network type to a string.
type NetworkNamespace ¶
NetworkNamespace contains all data related to its network namespace.
func (NetworkNamespace) MarshalJSON ¶
func (n NetworkNamespace) MarshalJSON() ([]byte, error)
MarshalJSON is the custom NetworkNamespace JSON marshalling routine. This is needed to properly marshall Endpoints array.
func (*NetworkNamespace) UnmarshalJSON ¶
func (n *NetworkNamespace) UnmarshalJSON(b []byte) error
UnmarshalJSON is the custom NetworkNamespace unmarshalling routine. This is needed for unmarshalling the Endpoints interfaces array.
type Param ¶
Param is a key/value representation for hypervisor and kernel parameters.
func DeserializeParams ¶
DeserializeParams converts []string to []Param
type PhysicalEndpoint ¶
type PhysicalEndpoint struct {
IfaceName string
HardAddr string
EndpointProperties NetworkInfo
EndpointType EndpointType
BDF string
Driver string
VendorDeviceID string
}
PhysicalEndpoint gathers a physical network interface and its properties
func (*PhysicalEndpoint) Attach ¶
func (endpoint *PhysicalEndpoint) Attach(h hypervisor) error
Attach for physical endpoint binds the physical network interface to vfio-pci and adds device to the hypervisor with vfio-passthrough.
func (*PhysicalEndpoint) Detach ¶
func (endpoint *PhysicalEndpoint) Detach(netNsCreated bool, netNsPath string) error
Detach for physical endpoint unbinds the physical network interface from vfio-pci and binds it back to the saved host driver.
func (*PhysicalEndpoint) HardwareAddr ¶
func (endpoint *PhysicalEndpoint) HardwareAddr() string
HardwareAddr returns the mac address of the physical network interface.
func (*PhysicalEndpoint) Name ¶
func (endpoint *PhysicalEndpoint) Name() string
Name returns name of the physical interface.
func (*PhysicalEndpoint) Properties ¶
func (endpoint *PhysicalEndpoint) Properties() NetworkInfo
Properties returns the properties of the physical interface.
func (*PhysicalEndpoint) SetProperties ¶
func (endpoint *PhysicalEndpoint) SetProperties(properties NetworkInfo)
SetProperties sets the properties of the physical endpoint.
func (*PhysicalEndpoint) Type ¶
func (endpoint *PhysicalEndpoint) Type() EndpointType
Type indentifies the endpoint as a physical endpoint.
type PidsStats ¶
type PidsStats struct {
// number of pids in the cgroup
Current uint64 `json:"current,omitempty"`
// active pids hard limit
Limit uint64 `json:"limit,omitempty"`
}
PidsStats describes the pids stats
type Process ¶
type Process struct {
// Token is the process execution context ID. It must be
// unique per sandbox.
// Token is used to manipulate processes for containers
// that have not started yet, and later identify them
// uniquely within a sandbox.
Token string
// Pid is the process ID as seen by the host software
// stack, e.g. CRI-O, containerd. This is typically the
// shim PID.
Pid int
StartTime time.Time
}
Process gathers data related to a container process.
type ProcessList ¶
type ProcessList []byte
ProcessList represents the list of running processes inside the container
func ProcessListContainer ¶
func ProcessListContainer(sandboxID, containerID string, options ProcessListOptions) (ProcessList, error)
ProcessListContainer is the virtcontainers entry point to list processes running inside a container
type ProcessListOptions ¶
type ProcessListOptions struct {
// Format describes the output format to list the running processes.
// Formats are unrelated to ps(1) formats, only two formats can be specified:
// "json" and "table"
Format string
// Args contains the list of arguments to run ps(1) command.
// If Args is empty the agent will use "-ef" as options to ps(1).
Args []string
}
ProcessListOptions contains the options used to list running processes inside the container
type ProxyConfig ¶
ProxyConfig is a structure storing information needed from any proxy in order to be properly initialized.
type ProxyType ¶
type ProxyType string
ProxyType describes a proxy type.
const ( // NoopProxyType is the noopProxy. NoopProxyType ProxyType = "noopProxy" // NoProxyType is the noProxy. NoProxyType ProxyType = "noProxy" // CCProxyType is the ccProxy. CCProxyType ProxyType = "ccProxy" // KataProxyType is the kataProxy. KataProxyType ProxyType = "kataProxy" // KataBuiltInProxyType is the kataBuiltInProxy. KataBuiltInProxyType ProxyType = "kataBuiltInProxy" )
type QemuState ¶
type QemuState struct {
Bridges []Bridge
// HotpluggedCPUs is the list of CPUs that were hot-added
HotpluggedVCPUs []CPUDevice
HotpluggedMemory int
UUID string
}
QemuState keeps Qemu's state
type Resources ¶
type Resources struct {
// Memory is the amount of available memory in MiB.
Memory uint
}
Resources describes VM resources configuration.
type Sandbox ¶
Sandbox is composed of a set of containers and a runtime environment. A Sandbox can be created, deleted, started, paused, stopped, listed, entered, and restored.
func (*Sandbox) AddVhostUserDevice ¶
func (s *Sandbox) AddVhostUserDevice(devInfo api.VhostUserDevice, devType config.DeviceType) error
AddVhostUserDevice adds a vhost user device to sandbox Sandbox implement DeviceReceiver interface from device/api/interface.go
func (*Sandbox) Annotations ¶
Annotations returns any annotation that a user could have stored through the sandbox.
func (*Sandbox) CreateContainer ¶
func (s *Sandbox) CreateContainer(contConfig ContainerConfig) (VCContainer, error)
CreateContainer creates a new container in the sandbox
func (*Sandbox) DecrementSandboxBlockIndex ¶
DecrementSandboxBlockIndex decrease block indexes Sandbox implement DeviceReceiver interface from device/api/interface.go
func (*Sandbox) Delete ¶
Delete deletes an already created sandbox. The VM in which the sandbox is running will be shut down.
func (*Sandbox) DeleteContainer ¶
func (s *Sandbox) DeleteContainer(containerID string) (VCContainer, error)
DeleteContainer deletes a container from the sandbox
func (*Sandbox) EnterContainer ¶
EnterContainer is the virtcontainers container command execution entry point. EnterContainer enters an already running container and runs a given command.
func (*Sandbox) GetAllContainers ¶
func (s *Sandbox) GetAllContainers() []VCContainer
GetAllContainers returns all containers.
func (*Sandbox) GetAndSetSandboxBlockIndex ¶
GetAndSetSandboxBlockIndex is used for getting and setting virtio-block indexes Sandbox implement DeviceReceiver interface from device/api/interface.go
func (*Sandbox) GetAnnotations ¶
GetAnnotations returns sandbox's annotations
func (*Sandbox) GetContainer ¶
func (s *Sandbox) GetContainer(containerID string) VCContainer
GetContainer returns the container named by the containerID.
func (*Sandbox) HotplugAddDevice ¶
HotplugAddDevice is used for add a device to sandbox Sandbox implement DeviceReceiver interface from device/api/interface.go
func (*Sandbox) HotplugRemoveDevice ¶
HotplugRemoveDevice is used for removing a device from sandbox Sandbox implement DeviceReceiver interface from device/api/interface.go
func (*Sandbox) IOStream ¶
func (s *Sandbox) IOStream(containerID, processID string) (io.WriteCloser, io.Reader, io.Reader, error)
IOStream returns stdin writer, stdout reader and stderr reader of a process
func (*Sandbox) Release ¶
Release closes the agent connection and removes sandbox from internal list.
func (*Sandbox) SetAnnotations ¶
SetAnnotations sets or adds an annotations
func (*Sandbox) SignalProcess ¶
func (s *Sandbox) SignalProcess(containerID, processID string, signal syscall.Signal, all bool) error
SignalProcess sends a signal to a process of a container when all is false. When all is true, it sends the signal to all processes of a container.
func (*Sandbox) StartContainer ¶
func (s *Sandbox) StartContainer(containerID string) (VCContainer, error)
StartContainer starts a container in the sandbox
func (*Sandbox) StatsContainer ¶
func (s *Sandbox) StatsContainer(containerID string) (ContainerStats, error)
StatsContainer return the stats of a running container
func (*Sandbox) Status ¶
func (s *Sandbox) Status() SandboxStatus
Status gets the status of the sandbox TODO: update container status properly, see kata-containers/runtime#253
func (*Sandbox) StatusContainer ¶
func (s *Sandbox) StatusContainer(containerID string) (ContainerStatus, error)
StatusContainer gets the status of a container TODO: update container status properly, see kata-containers/runtime#253
func (*Sandbox) UpdateContainer ¶
func (s *Sandbox) UpdateContainer(containerID string, resources specs.LinuxResources) error
UpdateContainer update a running container.
func (*Sandbox) WaitProcess ¶
WaitProcess waits on a container process and return its exit code
type SandboxConfig ¶
type SandboxConfig struct {
ID string
Hostname string
// Field specific to OCI specs, needed to setup all the hooks
Hooks Hooks
// VMConfig is the VM configuration to set for this sandbox.
VMConfig Resources
HypervisorType HypervisorType
HypervisorConfig HypervisorConfig
AgentType AgentType
AgentConfig interface{}
ProxyType ProxyType
ProxyConfig ProxyConfig
ShimType ShimType
ShimConfig interface{}
NetworkModel NetworkModel
NetworkConfig NetworkConfig
// Volumes is a list of shared volumes between the host and the Sandbox.
Volumes []Volume
// Containers describe the list of containers within a Sandbox.
// This list can be empty and populated by adding containers
// to the Sandbox a posteriori.
Containers []ContainerConfig
// Annotations keys must be unique strings and must be name-spaced
// with e.g. reverse domain notation (org.clearlinux.key).
Annotations map[string]string
ShmSize uint64
SharePidNs bool
// Stateful keeps sandbox resources in memory across APIs. Users will be responsible
// for calling Release() to release the memory resources.
Stateful bool
}
SandboxConfig is a Sandbox configuration.
type SandboxStatus ¶
type SandboxStatus struct {
ID string
State State
Hypervisor HypervisorType
HypervisorConfig HypervisorConfig
Agent AgentType
ContainersStatus []ContainerStatus
// Annotations allow clients to store arbitrary values,
// for example to add additional status values required
// to support particular specifications.
Annotations map[string]string
}
SandboxStatus describes a sandbox status.
func ListSandbox ¶
func ListSandbox() ([]SandboxStatus, error)
ListSandbox is the virtcontainers sandbox listing entry point.
func StatusSandbox ¶
func StatusSandbox(sandboxID string) (SandboxStatus, error)
StatusSandbox is the virtcontainers sandbox status entry point.
type ShimConfig ¶
ShimConfig is the structure providing specific configuration for shim implementations.
type ShimParams ¶
type ShimParams struct {
Container string
Token string
URL string
Console string
Terminal bool
Detach bool
PID int
CreateNS []ns.NSType
EnterNS []ns.Namespace
}
ShimParams is the structure providing specific parameters needed for the execution of the shim binary.
type ShimType ¶
type ShimType string
ShimType describes a shim type.
const ( // CCShimType is the ccShim. CCShimType ShimType = "ccShim" // NoopShimType is the noopShim. NoopShimType ShimType = "noopShim" // KataShimType is the Kata Containers shim type. KataShimType ShimType = "kataShim" // KataBuiltInShimType is the Kata Containers builtin shim type. KataBuiltInShimType ShimType = "kataBuiltInShim" )
type Socket ¶
Socket defines a socket to communicate between the host and any process inside the VM.
type Sockets ¶
type Sockets []Socket
Sockets is a Socket list.
type SpawnerType ¶
type SpawnerType string
SpawnerType describes the type of guest agent a Sandbox should run.
const ( // NsEnter is the nsenter spawner type NsEnter SpawnerType = "nsenter" )
func (*SpawnerType) Set ¶
func (spawnerType *SpawnerType) Set(value string) error
Set sets an agent type based on the input string.
func (*SpawnerType) String ¶
func (spawnerType *SpawnerType) String() string
String converts an agent type to a string.
type State ¶
type State struct {
State stateString `json:"state"`
// Index of the block device passed to hypervisor.
BlockIndex int `json:"blockIndex"`
// File system of the rootfs incase it is block device
Fstype string `json:"fstype"`
// Bool to indicate if the drive for a container was hotplugged.
HotpluggedDrive bool `json:"hotpluggedDrive"`
// PCI slot at which the block device backing the container rootfs is attached.
RootfsPCIAddr string `json:"rootfsPCIAddr"`
// Pid is the process id of the sandbox container which is the first
// container to be started.
Pid int `json:"pid"`
}
State is a sandbox state structure.
type SystemMountsInfo ¶
type SystemMountsInfo struct {
// Indicates if /dev has been passed as a bind mount for the host /dev
BindMountDev bool
// Size of /dev/shm assigned on the host.
DevShmSize uint
}
SystemMountsInfo describes additional information for system mounts that the agent needs to handle
type ThrottlingData ¶
type ThrottlingData struct {
// Number of periods with throttling active
Periods uint64 `json:"periods,omitempty"`
// Number of periods when the container hit its throttling limit.
ThrottledPeriods uint64 `json:"throttled_periods,omitempty"`
// Aggregate time the container was throttled for in nanoseconds.
ThrottledTime uint64 `json:"throttled_time,omitempty"`
}
ThrottlingData gather the date related to container cpu throttling.
type TypedDevice ¶
type TypedDevice struct {
Type string
// Data is assigned the Device object.
// This being declared as RawMessage prevents it from being marshalled/unmarshalled.
// We do that explicitly depending on Type.
Data json.RawMessage
}
TypedDevice is used as an intermediate representation for marshalling and unmarshalling Device implementations.
type TypedJSONEndpoint ¶
type TypedJSONEndpoint struct {
Type EndpointType
Data json.RawMessage
}
TypedJSONEndpoint is used as an intermediate representation for marshalling and unmarshalling Endpoint objects.
type VC ¶
type VC interface {
SetLogger(logger *logrus.Entry)
SetFactory(Factory)
CreateSandbox(sandboxConfig SandboxConfig) (VCSandbox, error)
DeleteSandbox(sandboxID string) (VCSandbox, error)
FetchSandbox(sandboxID string) (VCSandbox, error)
ListSandbox() ([]SandboxStatus, error)
PauseSandbox(sandboxID string) (VCSandbox, error)
ResumeSandbox(sandboxID string) (VCSandbox, error)
RunSandbox(sandboxConfig SandboxConfig) (VCSandbox, error)
StartSandbox(sandboxID string) (VCSandbox, error)
StatusSandbox(sandboxID string) (SandboxStatus, error)
StopSandbox(sandboxID string) (VCSandbox, error)
CreateContainer(sandboxID string, containerConfig ContainerConfig) (VCSandbox, VCContainer, error)
DeleteContainer(sandboxID, containerID string) (VCContainer, error)
EnterContainer(sandboxID, containerID string, cmd Cmd) (VCSandbox, VCContainer, *Process, error)
KillContainer(sandboxID, containerID string, signal syscall.Signal, all bool) error
StartContainer(sandboxID, containerID string) (VCContainer, error)
StatusContainer(sandboxID, containerID string) (ContainerStatus, error)
StatsContainer(sandboxID, containerID string) (ContainerStats, error)
StopContainer(sandboxID, containerID string) (VCContainer, error)
ProcessListContainer(sandboxID, containerID string, options ProcessListOptions) (ProcessList, error)
UpdateContainer(sandboxID, containerID string, resources specs.LinuxResources) error
PauseContainer(sandboxID, containerID string) error
ResumeContainer(sandboxID, containerID string) error
}
VC is the Virtcontainers interface
type VCContainer ¶
type VCContainer interface {
GetAnnotations() map[string]string
GetPid() int
GetToken() string
ID() string
Sandbox() VCSandbox
Process() Process
SetPid(pid int) error
}
VCContainer is the Container interface (required since virtcontainers.Container only contains private fields)
func DeleteContainer ¶
func DeleteContainer(sandboxID, containerID string) (VCContainer, error)
DeleteContainer is the virtcontainers container deletion entry point. DeleteContainer deletes a Container from a Sandbox. If the container is running, it needs to be stopped first.
func StartContainer ¶
func StartContainer(sandboxID, containerID string) (VCContainer, error)
StartContainer is the virtcontainers container starting entry point. StartContainer starts an already created container.
func StopContainer ¶
func StopContainer(sandboxID, containerID string) (VCContainer, error)
StopContainer is the virtcontainers container stopping entry point. StopContainer stops an already running container.
type VCImpl ¶
type VCImpl struct {
// contains filtered or unexported fields
}
VCImpl is the official virtcontainers function of the same name.
func (*VCImpl) CreateContainer ¶
func (impl *VCImpl) CreateContainer(sandboxID string, containerConfig ContainerConfig) (VCSandbox, VCContainer, error)
CreateContainer implements the VC function of the same name.
func (*VCImpl) CreateSandbox ¶
func (impl *VCImpl) CreateSandbox(sandboxConfig SandboxConfig) (VCSandbox, error)
CreateSandbox implements the VC function of the same name.
func (*VCImpl) DeleteContainer ¶
func (impl *VCImpl) DeleteContainer(sandboxID, containerID string) (VCContainer, error)
DeleteContainer implements the VC function of the same name.
func (*VCImpl) DeleteSandbox ¶
DeleteSandbox implements the VC function of the same name.
func (*VCImpl) EnterContainer ¶
func (impl *VCImpl) EnterContainer(sandboxID, containerID string, cmd Cmd) (VCSandbox, VCContainer, *Process, error)
EnterContainer implements the VC function of the same name.
func (*VCImpl) FetchSandbox ¶
FetchSandbox will find out and connect to an existing sandbox and return the sandbox structure.
func (*VCImpl) KillContainer ¶
func (impl *VCImpl) KillContainer(sandboxID, containerID string, signal syscall.Signal, all bool) error
KillContainer implements the VC function of the same name.
func (*VCImpl) ListSandbox ¶
func (impl *VCImpl) ListSandbox() ([]SandboxStatus, error)
ListSandbox implements the VC function of the same name.
func (*VCImpl) PauseContainer ¶
PauseContainer implements the VC function of the same name.
func (*VCImpl) PauseSandbox ¶
PauseSandbox implements the VC function of the same name.
func (*VCImpl) ProcessListContainer ¶
func (impl *VCImpl) ProcessListContainer(sandboxID, containerID string, options ProcessListOptions) (ProcessList, error)
ProcessListContainer implements the VC function of the same name.
func (*VCImpl) ResumeContainer ¶
ResumeContainer implements the VC function of the same name.
func (*VCImpl) ResumeSandbox ¶
ResumeSandbox implements the VC function of the same name.
func (*VCImpl) RunSandbox ¶
func (impl *VCImpl) RunSandbox(sandboxConfig SandboxConfig) (VCSandbox, error)
RunSandbox implements the VC function of the same name.
func (*VCImpl) SetFactory ¶
SetFactory implements the VC function of the same name.
func (*VCImpl) StartContainer ¶
func (impl *VCImpl) StartContainer(sandboxID, containerID string) (VCContainer, error)
StartContainer implements the VC function of the same name.
func (*VCImpl) StartSandbox ¶
StartSandbox implements the VC function of the same name.
func (*VCImpl) StatsContainer ¶
func (impl *VCImpl) StatsContainer(sandboxID, containerID string) (ContainerStats, error)
StatsContainer implements the VC function of the same name.
func (*VCImpl) StatusContainer ¶
func (impl *VCImpl) StatusContainer(sandboxID, containerID string) (ContainerStatus, error)
StatusContainer implements the VC function of the same name.
func (*VCImpl) StatusSandbox ¶
func (impl *VCImpl) StatusSandbox(sandboxID string) (SandboxStatus, error)
StatusSandbox implements the VC function of the same name.
func (*VCImpl) StopContainer ¶
func (impl *VCImpl) StopContainer(sandboxID, containerID string) (VCContainer, error)
StopContainer implements the VC function of the same name.
func (*VCImpl) StopSandbox ¶
StopSandbox implements the VC function of the same name.
func (*VCImpl) UpdateContainer ¶
func (impl *VCImpl) UpdateContainer(sandboxID, containerID string, resources specs.LinuxResources) error
UpdateContainer implements the VC function of the same name.
type VCSandbox ¶
type VCSandbox interface {
Annotations(key string) (string, error)
GetAllContainers() []VCContainer
GetAnnotations() map[string]string
GetContainer(containerID string) VCContainer
ID() string
SetAnnotations(annotations map[string]string) error
Pause() error
Resume() error
Release() error
Monitor() (chan error, error)
Delete() error
Status() SandboxStatus
CreateContainer(contConfig ContainerConfig) (VCContainer, error)
DeleteContainer(contID string) (VCContainer, error)
StartContainer(containerID string) (VCContainer, error)
StatusContainer(containerID string) (ContainerStatus, error)
StatsContainer(containerID string) (ContainerStats, error)
EnterContainer(containerID string, cmd Cmd) (VCContainer, *Process, error)
UpdateContainer(containerID string, resources specs.LinuxResources) error
WaitProcess(containerID, processID string) (int32, error)
SignalProcess(containerID, processID string, signal syscall.Signal, all bool) error
WinsizeProcess(containerID, processID string, height, width uint32) error
IOStream(containerID, processID string) (io.WriteCloser, io.Reader, io.Reader, error)
}
VCSandbox is the Sandbox interface (required since virtcontainers.Sandbox only contains private fields)
func CreateSandbox ¶
func CreateSandbox(sandboxConfig SandboxConfig, factory Factory) (VCSandbox, error)
CreateSandbox is the virtcontainers sandbox creation entry point. CreateSandbox creates a sandbox and its containers. It does not start them.
func DeleteSandbox ¶
DeleteSandbox is the virtcontainers sandbox deletion entry point. DeleteSandbox will stop an already running container and then delete it.
func FetchSandbox ¶
FetchSandbox is the virtcontainers sandbox fetching entry point. FetchSandbox will find out and connect to an existing sandbox and return the sandbox structure. The caller is responsible of calling VCSandbox.Release() after done with it.
func PauseSandbox ¶
PauseSandbox is the virtcontainers pausing entry point which pauses an already running sandbox.
func ResumeSandbox ¶
ResumeSandbox is the virtcontainers resuming entry point which resumes (or unpauses) and already paused sandbox.
func RunSandbox ¶
func RunSandbox(sandboxConfig SandboxConfig, factory Factory) (VCSandbox, error)
RunSandbox is the virtcontainers sandbox running entry point. RunSandbox creates a sandbox and its containers and then it starts them.
func StartSandbox ¶
StartSandbox is the virtcontainers sandbox starting entry point. StartSandbox will talk to the given hypervisor to start an existing sandbox and all its containers. It returns the sandbox ID.
func StopSandbox ¶
StopSandbox is the virtcontainers sandbox stopping entry point. StopSandbox will talk to the given agent to stop an existing sandbox and destroy all containers within that sandbox.
type VM ¶
type VM struct {
// contains filtered or unexported fields
}
VM is abstraction of a virtual machine.
func (*VM) OnlineCPUMemory ¶
OnlineCPUMemory puts the hotplugged CPU and memory online.
type VMConfig ¶
type VMConfig struct {
HypervisorType HypervisorType
HypervisorConfig HypervisorConfig
AgentType AgentType
AgentConfig interface{}
}
VMConfig is a collection of all info that a new blackbox VM needs.
type VhostUserEndpoint ¶
type VhostUserEndpoint struct {
// Path to the vhost-user socket on the host system
SocketPath string
// MAC address of the interface
HardAddr string
IfaceName string
EndpointProperties NetworkInfo
EndpointType EndpointType
}
VhostUserEndpoint represents a vhost-user socket based network interface
func (*VhostUserEndpoint) Attach ¶
func (endpoint *VhostUserEndpoint) Attach(h hypervisor) error
Attach for vhostuser endpoint
func (*VhostUserEndpoint) Detach ¶
func (endpoint *VhostUserEndpoint) Detach(netNsCreated bool, netNsPath string) error
Detach for vhostuser endpoint
func (*VhostUserEndpoint) HardwareAddr ¶
func (endpoint *VhostUserEndpoint) HardwareAddr() string
HardwareAddr returns the mac address of the vhostuser network interface
func (*VhostUserEndpoint) Name ¶
func (endpoint *VhostUserEndpoint) Name() string
Name returns name of the interface.
func (*VhostUserEndpoint) Properties ¶
func (endpoint *VhostUserEndpoint) Properties() NetworkInfo
Properties returns the properties of the interface.
func (*VhostUserEndpoint) SetProperties ¶
func (endpoint *VhostUserEndpoint) SetProperties(properties NetworkInfo)
SetProperties sets the properties of the endpoint.
func (*VhostUserEndpoint) Type ¶
func (endpoint *VhostUserEndpoint) Type() EndpointType
Type indentifies the endpoint as a vhostuser endpoint.
type VirtualEndpoint ¶
type VirtualEndpoint struct {
NetPair NetworkInterfacePair
EndpointProperties NetworkInfo
Physical bool
EndpointType EndpointType
}
VirtualEndpoint gathers a network pair and its properties.
func (*VirtualEndpoint) Attach ¶
func (endpoint *VirtualEndpoint) Attach(h hypervisor) error
Attach for virtual endpoint bridges the network pair and adds the tap interface of the network pair to the hypervisor.
func (*VirtualEndpoint) Detach ¶
func (endpoint *VirtualEndpoint) Detach(netNsCreated bool, netNsPath string) error
Detach for the virtual endpoint tears down the tap and bridge created for the veth interface.
func (*VirtualEndpoint) HardwareAddr ¶
func (endpoint *VirtualEndpoint) HardwareAddr() string
HardwareAddr returns the mac address that is assigned to the tap interface in th network pair.
func (*VirtualEndpoint) Name ¶
func (endpoint *VirtualEndpoint) Name() string
Name returns name of the veth interface in the network pair.
func (*VirtualEndpoint) Properties ¶
func (endpoint *VirtualEndpoint) Properties() NetworkInfo
Properties returns properties for the veth interface in the network pair.
func (*VirtualEndpoint) SetProperties ¶
func (endpoint *VirtualEndpoint) SetProperties(properties NetworkInfo)
SetProperties sets the properties for the endpoint.
func (*VirtualEndpoint) Type ¶
func (endpoint *VirtualEndpoint) Type() EndpointType
Type identifies the endpoint as a virtual endpoint.
Source Files
¶
- agent.go
- api.go
- asset.go
- bridge.go
- capabilities.go
- cc_proxy.go
- cc_shim.go
- cni.go
- cnm.go
- container.go
- doc.go
- errors.go
- factory.go
- filesystem.go
- hook.go
- hyperstart_agent.go
- hypervisor.go
- implementation.go
- interfaces.go
- iostream.go
- kata_agent.go
- kata_builtin_proxy.go
- kata_builtin_shim.go
- kata_proxy.go
- kata_shim.go
- mock_hypervisor.go
- monitor.go
- mount.go
- network.go
- no_proxy.go
- noop_agent.go
- noop_network.go
- noop_proxy.go
- noop_shim.go
- nsenter.go
- proxy.go
- qemu.go
- qemu_amd64.go
- qemu_arch_base.go
- sandbox.go
- sandboxlist.go
- shim.go
- spawner.go
- syscall.go
- types.go
- vm.go
Directories
¶
| Path | Synopsis |
|---|---|
|
device
|
|
|
hack
|
|
|
virtc
command
|
|
|
hook
|
|
|
mock
command
|
|
|
pkg
|
|
|
uuid
Package uuid can be used to generate 128 bit UUIDs compatible with rfc4122.
|
Package uuid can be used to generate 128 bit UUIDs compatible with rfc4122. |
|
shim
|
|
|
mock/cc-shim
command
|
|
|
mock/kata-shim
command
|
|


