containerd/runtime/container.go

91 lines
2.4 KiB
Go
Raw Normal View History

package runtime
2015-11-05 23:29:53 +00:00
import (
"os"
"time"
"github.com/opencontainers/specs"
)
2015-11-10 21:44:35 +00:00
type Process interface {
Pid() (int, error)
Spec() specs.Process
2015-11-10 21:44:35 +00:00
Signal(os.Signal) error
}
type Status string
const (
Paused Status = "paused"
Running Status = "running"
)
type State struct {
Status Status
}
2015-11-10 21:44:35 +00:00
type Stdio struct {
Stderr string
Stdout string
}
type Stat struct {
// Timestamp is the time that the statistics where collected
Timestamp time.Time
// Data is the raw stats
// TODO: it is currently an interface because we don't know what type of exec drivers
// we will have or what the structure should look like at the moment os the containers
// can return what they want and we could marshal to json or whatever.
Data interface{}
}
type Checkpoint struct {
// Timestamp is the time that checkpoint happened
Timestamp time.Time
// Name is the name of the checkpoint
Name string
// Tcp checkpoints open tcp connections
Tcp bool
// UnixSockets persists unix sockets in the checkpoint
UnixSockets bool
// Shell persists tty sessions in the checkpoint
Shell bool
// Exit exits the container after the checkpoint is finished
Exit bool
}
2015-11-05 23:29:53 +00:00
type Container interface {
// ID returns the container ID
2015-11-06 00:40:57 +00:00
ID() string
// Start starts the init process of the container
2015-11-06 21:01:55 +00:00
Start() error
// Path returns the path to the bundle
2015-11-10 19:38:26 +00:00
Path() string
// Pid returns the container's init process id
2015-11-06 00:40:57 +00:00
Pid() (int, error)
// SetExited sets the exit status of the container after it's init dies
2015-11-05 23:29:53 +00:00
SetExited(status int)
// Delete deletes the container
2015-11-05 23:29:53 +00:00
Delete() error
// Processes returns all the containers processes that have been added
2015-11-10 21:44:35 +00:00
Processes() ([]Process, error)
// RemoveProcess removes a specific process for the container because it exited
RemoveProcess(pid int) error
// State returns the containers runtime state
State() State
// Resume resumes a paused container
Resume() error
// Pause pauses a running container
Pause() error
// Checkpoints returns all the checkpoints for a container
Checkpoints() ([]Checkpoint, error)
// Checkpoint creates a new checkpoint
Checkpoint(Checkpoint) error
// DeleteCheckpoint deletes the checkpoint for the provided name
DeleteCheckpoint(name string) error
// Restore restores the container to that of the checkpoint provided by name
Restore(name string) error
// Stats returns realtime container stats and resource information
Stats() (*Stat, error)
2015-11-05 23:29:53 +00:00
}