package libcontainerd import "io" // State constants used in state change reporting. const ( StateStart = "start-container" StatePause = "pause" StateResume = "resume" StateExit = "exit" StateRestart = "restart" StateRestore = "restore" StateStartProcess = "start-process" StateExitProcess = "exit-process" StateOOM = "oom" // fake state stateLive = "live" ) // StateInfo contains description about the new state container has entered. type StateInfo struct { // FIXME: event? State string Pid uint32 ExitCode uint32 ProcessID string OOMKilled bool // TODO Windows containerd factor out } // Backend defines callbacks that the client of the library needs to implement. type Backend interface { StateChanged(containerID string, state StateInfo) error AttachStreams(processFriendlyName string, io IOPipe) error } // Client provides access to containerd features. type Client interface { Create(containerID string, spec Spec, options ...CreateOption) error Signal(containerID string, sig int) error AddProcess(containerID, processFriendlyName string, process Process) error Resize(containerID, processFriendlyName string, width, height int) error Pause(containerID string) error Resume(containerID string) error Restore(containerID string, options ...CreateOption) error Stats(containerID string) (*Stats, error) GetPidsForContainer(containerID string) ([]int, error) Summary(containerID string) ([]Summary, error) UpdateResources(containerID string, resources Resources) error } // CreateOption allows to configure parameters of container creation. type CreateOption interface { Apply(interface{}) error } // IOPipe contains the stdio streams. type IOPipe struct { Stdin io.WriteCloser Stdout io.Reader Stderr io.Reader Terminal bool // Whether stderr is connected on Windows }