package hcsv2

import "github.com/Microsoft/opengcs/internal/runtime/hcsv2"

Index

Constants

const UVMContainerID = "00000000-0000-0000-0000-000000000000"

UVMContainerID is the ContainerID that will be sent on any prot.MessageBase for V2 where the specific message is targeted at the UVM itself.

Types

type Container

type Container struct {
	// contains filtered or unexported fields
}

func (*Container) Delete

func (c *Container) Delete(ctx context.Context) error

func (*Container) ExecProcess

func (c *Container) ExecProcess(ctx context.Context, process *oci.Process, conSettings stdio.ConnectionSettings) (int, error)

func (*Container) GetAllProcessPids

func (c *Container) GetAllProcessPids(ctx context.Context) ([]int, error)

GetAllProcessPids returns all process pids in the container namespace.

func (*Container) GetProcess

func (c *Container) GetProcess(pid uint32) (Process, error)

GetProcess returns the Process with the matching 'pid'. If the 'pid' does not exit returns error.

func (*Container) GetStats

func (c *Container) GetStats(ctx context.Context) (*v1.Metrics, error)

GetStats returns the cgroup metrics for the container.

func (*Container) Kill

func (c *Container) Kill(ctx context.Context, signal syscall.Signal) error

Kill sends 'signal' to the container process.

func (*Container) Start

func (c *Container) Start(ctx context.Context, conSettings stdio.ConnectionSettings) (int, error)

func (*Container) Update

func (c *Container) Update(ctx context.Context, resources string) error

func (*Container) Wait

func (c *Container) Wait() prot.NotificationType

Wait waits for the container's init process to exit.

type Host

type Host struct {
	// contains filtered or unexported fields
}

Host is the structure tracking all UVM host state including all containers and processes.

func NewHost

func NewHost(rtime runtime.Runtime, vsock transport.Transport) *Host

func (*Host) CreateContainer

func (h *Host) CreateContainer(ctx context.Context, id string, settings *prot.VMHostedContainerSettingsV2) (_ *Container, err error)

func (*Host) GetContainer

func (h *Host) GetContainer(id string) (*Container, error)

func (*Host) GetExternalProcess

func (h *Host) GetExternalProcess(pid int) (Process, error)

func (*Host) ModifyHostSettings

func (h *Host) ModifyHostSettings(ctx context.Context, settings *prot.ModifySettingRequest) error

func (*Host) RemoveContainer

func (h *Host) RemoveContainer(id string)

func (*Host) RunExternalProcess

func (h *Host) RunExternalProcess(ctx context.Context, params prot.ProcessParameters, conSettings stdio.ConnectionSettings) (_ int, err error)

RunExternalProcess runs a process in the utility VM.

func (*Host) Shutdown

func (h *Host) Shutdown()

Shutdown terminates this UVM. This is a destructive call and will destroy all state that has not been cleaned before calling this function.

type Process

type Process interface {
	// Kill sends `signal` to the process.
	//
	// If the process has already exited returns `gcserr.HrErrNotFound` by contract.
	Kill(ctx context.Context, signal syscall.Signal) error
	// Pid returns the process id of the process.
	Pid() int
	// ResizeConsole resizes the tty to `height`x`width` for the process.
	ResizeConsole(ctx context.Context, height, width uint16) error
	// Wait returns a channel that can be used to wait for the process to exit
	// and gather the exit code. The second channel must be signaled from the
	// caller when the caller has completed its use of this call to Wait.
	Wait() (<-chan int, chan<- bool)
}

Source Files

container.go network.go nvidia_utils.go process.go sandbox_container.go spec.go standalone_container.go uvm.go workload_container.go

Version
v0.4.0 (latest)
Published
Dec 4, 2020
Platform
linux/amd64
Imports
38 packages
Last checked
12 hours ago

Tools for package owners.