| package plugin |
| |
| import "context" |
| |
| type TaskInfo struct { |
| ID string |
| ContainerID string |
| Runtime string |
| Spec []byte |
| } |
| |
| 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 |
| Pty(context.Context, uint32, ConsoleSize) error |
| // CloseStdin closes the processes stdin |
| CloseStdin(context.Context, uint32) error |
| // Checkpoint checkpoints a container to an image with live system data |
| Checkpoint(context.Context, CheckpointOpts) error |
| } |
| |
| type CheckpointOpts struct { |
| Exit bool |
| AllowTCP bool |
| AllowUnixSockets bool |
| AllowTerminal bool |
| FileLocks bool |
| EmptyNamespaces []string |
| Path string |
| } |
| |
| 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 interface { |
| // Status is the current status of the container |
| Status() Status |
| // Pid is the main process id for the container |
| Pid() uint32 |
| } |