
This moves the shim's API and protos out of the containerd services package and into the linux runtime package. This is because the shim is an implementation detail of the linux runtime that we have and it is not a containerd user facing api. Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package plugin
|
|
|
|
import "context"
|
|
|
|
type TaskInfo struct {
|
|
ID string
|
|
ContainerID string
|
|
Runtime string
|
|
Spec []byte
|
|
Namespace string
|
|
}
|
|
|
|
type Task interface {
|
|
// Information of the container
|
|
Info() TaskInfo
|
|
// Start the container's user defined process
|
|
Start(context.Context) error
|
|
// State returns the container's state
|
|
State(context.Context) (State, error)
|
|
// Pause pauses the container process
|
|
Pause(context.Context) error
|
|
// Resume unpauses the container process
|
|
Resume(context.Context) error
|
|
// Kill signals a container
|
|
Kill(context.Context, uint32, uint32, bool) error
|
|
// Exec adds a process into the container
|
|
Exec(context.Context, ExecOpts) (Process, error)
|
|
// Processes returns all pids for the container
|
|
Processes(context.Context) ([]uint32, error)
|
|
// Pty resizes the processes pty/console
|
|
ResizePty(context.Context, uint32, ConsoleSize) error
|
|
// CloseStdin closes the processes stdin
|
|
CloseIO(context.Context, uint32) error
|
|
// Checkpoint checkpoints a container to an image with live system data
|
|
Checkpoint(context.Context, string, map[string]string) error
|
|
// DeleteProcess deletes a specific exec process via the pid
|
|
DeleteProcess(context.Context, uint32) (*Exit, error)
|
|
}
|
|
|
|
type ExecOpts struct {
|
|
Spec []byte
|
|
IO IO
|
|
}
|
|
|
|
type Process interface {
|
|
// State returns the process state
|
|
State(context.Context) (State, error)
|
|
// Kill signals a container
|
|
Kill(context.Context, uint32, bool) error
|
|
}
|
|
|
|
type ConsoleSize struct {
|
|
Width uint32
|
|
Height uint32
|
|
}
|
|
|
|
type Status int
|
|
|
|
const (
|
|
CreatedStatus Status = iota + 1
|
|
RunningStatus
|
|
StoppedStatus
|
|
DeletedStatus
|
|
PausedStatus
|
|
)
|
|
|
|
type State struct {
|
|
// Status is the current status of the container
|
|
Status Status
|
|
// Pid is the main process id for the container
|
|
Pid uint32
|
|
Stdin string
|
|
Stdout string
|
|
Stderr string
|
|
Terminal bool
|
|
}
|