execdriver

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2014 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotRunning              = errors.New("Process could not be started")
	ErrWaitTimeoutReached      = errors.New("Wait timeout reached")
	ErrDriverAlreadyRegistered = errors.New("A driver already registered this docker init function")
	ErrDriverNotFound          = errors.New("The requested docker init has not been found")
)

Functions

func RegisterInitFunc

func RegisterInitFunc(name string, fct InitFunc) error

func SetTerminal added in v0.9.0

func SetTerminal(command *Command, pipes *Pipes) error

Types

type Command

type Command struct {
	exec.Cmd `json:"-"`

	ID         string     `json:"id"`
	Privileged bool       `json:"privileged"`
	User       string     `json:"user"`
	Rootfs     string     `json:"rootfs"`   // root fs of the container
	InitPath   string     `json:"initpath"` // dockerinit
	Entrypoint string     `json:"entrypoint"`
	Arguments  []string   `json:"arguments"`
	WorkingDir string     `json:"working_dir"`
	ConfigPath string     `json:"config_path"` // this should be able to be removed when the lxc template is moved into the driver
	Tty        bool       `json:"tty"`
	Network    *Network   `json:"network"` // if network is nil then networking is disabled
	Config     []string   `json:"config"`  //  generic values that specific drivers can consume
	Resources  *Resources `json:"resources"`

	Terminal     Terminal `json:"-"`             // standard or tty terminal
	Console      string   `json:"-"`             // dev/console path
	ContainerPid int      `json:"container_pid"` // the pid for the process inside a container
}

Process wrapps an os/exec.Cmd to add more metadata

func (*Command) Pid

func (c *Command) Pid() int

Return the pid of the process If the process is nil -1 will be returned

type Driver

type Driver interface {
	Run(c *Command, pipes *Pipes, startCallback StartCallback) (int, error) // Run executes the process and blocks until the process exits and returns the exit code
	Kill(c *Command, sig int) error
	Name() string                                 // Driver name
	Info(id string) Info                          // "temporary" hack (until we move state from core to plugins)
	GetPidsForContainer(id string) ([]int, error) // Returns a list of pids for the given container.
}

type Info

type Info interface {
	IsRunning() bool
}

Driver specific information based on processes registered with the driver

type InitArgs

type InitArgs struct {
	User       string
	Gateway    string
	Ip         string
	WorkDir    string
	Privileged bool
	Env        []string
	Args       []string
	Mtu        int
	Driver     string
	Console    string
	Pipe       int
	Root       string
}

Args provided to the init function for a driver

type InitFunc

type InitFunc func(i *InitArgs) error

func GetInitFunc

func GetInitFunc(name string) (InitFunc, error)

type Network

type Network struct {
	Gateway     string `json:"gateway"`
	IPAddress   string `json:"ip"`
	Bridge      string `json:"bridge"`
	IPPrefixLen int    `json:"ip_prefix_len"`
	Mtu         int    `json:"mtu"`
}

Network settings of the container

type Pipes added in v0.9.0

type Pipes struct {
	Stdin          io.ReadCloser
	Stdout, Stderr io.Writer
}

Pipes is a wrapper around a containers output for stdin, stdout, stderr

func NewPipes added in v0.9.0

func NewPipes(stdin io.ReadCloser, stdout, stderr io.Writer, useStdin bool) *Pipes

type Resources

type Resources struct {
	Memory     int64 `json:"memory"`
	MemorySwap int64 `json:"memory_swap"`
	CpuShares  int64 `json:"cpu_shares"`
}

type StartCallback

type StartCallback func(*Command)

type StdConsole added in v0.9.0

type StdConsole struct {
}

func NewStdConsole added in v0.9.0

func NewStdConsole(command *Command, pipes *Pipes) (*StdConsole, error)

func (*StdConsole) AttachPipes added in v0.9.0

func (s *StdConsole) AttachPipes(command *exec.Cmd, pipes *Pipes) error

func (*StdConsole) Close added in v0.9.0

func (s *StdConsole) Close() error

func (*StdConsole) Resize added in v0.9.0

func (s *StdConsole) Resize(h, w int) error

type Terminal added in v0.9.0

type Terminal interface {
	io.Closer
	Resize(height, width int) error
}

Terminal in an interface for drivers to implement if they want to support Close and Resize calls from the core

type TtyConsole added in v0.9.0

type TtyConsole struct {
	MasterPty *os.File
	SlavePty  *os.File
}

func NewTtyConsole added in v0.9.0

func NewTtyConsole(command *Command, pipes *Pipes) (*TtyConsole, error)

func (*TtyConsole) AttachPipes added in v0.9.0

func (t *TtyConsole) AttachPipes(command *exec.Cmd, pipes *Pipes) error

func (*TtyConsole) Close added in v0.9.0

func (t *TtyConsole) Close() error

func (*TtyConsole) Master added in v0.9.0

func (t *TtyConsole) Master() *os.File

func (*TtyConsole) Resize added in v0.9.0

func (t *TtyConsole) Resize(h, w int) error

type TtyTerminal added in v0.9.0

type TtyTerminal interface {
	Master() *os.File
}

Directories

Path Synopsis
These types are wrappers around the libcontainer Terminal interface so that we can resuse the docker implementations where possible.
These types are wrappers around the libcontainer Terminal interface so that we can resuse the docker implementations where possible.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL