2290eaaccd
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
90 lines
2.4 KiB
Go
90 lines
2.4 KiB
Go
package runtime
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/opencontainers/specs"
|
|
)
|
|
|
|
type Process interface {
|
|
Pid() (int, error)
|
|
Spec() specs.Process
|
|
Signal(os.Signal) error
|
|
}
|
|
|
|
type Status string
|
|
|
|
const (
|
|
Paused Status = "paused"
|
|
Running Status = "running"
|
|
)
|
|
|
|
type State struct {
|
|
Status Status
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
type Container interface {
|
|
// ID returns the container ID
|
|
ID() string
|
|
// Start starts the init process of the container
|
|
Start() error
|
|
// Path returns the path to the bundle
|
|
Path() string
|
|
// Pid returns the container's init process id
|
|
Pid() (int, error)
|
|
// SetExited sets the exit status of the container after it's init dies
|
|
SetExited(status int)
|
|
// Delete deletes the container
|
|
Delete() error
|
|
// Processes returns all the containers processes that have been added
|
|
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)
|
|
}
|