summaryrefslogtreecommitdiff
path: root/execdriver/driver.go
diff options
context:
space:
mode:
Diffstat (limited to 'execdriver/driver.go')
-rw-r--r--execdriver/driver.go127
1 files changed, 0 insertions, 127 deletions
diff --git a/execdriver/driver.go b/execdriver/driver.go
deleted file mode 100644
index ec8f48f52d..0000000000
--- a/execdriver/driver.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package execdriver
-
-import (
- "errors"
- "io"
- "os"
- "os/exec"
-)
-
-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")
-)
-
-var dockerInitFcts map[string]InitFunc
-
-type (
- StartCallback func(*Command)
- InitFunc func(i *InitArgs) error
-)
-
-func RegisterInitFunc(name string, fct InitFunc) error {
- if dockerInitFcts == nil {
- dockerInitFcts = make(map[string]InitFunc)
- }
- if _, ok := dockerInitFcts[name]; ok {
- return ErrDriverAlreadyRegistered
- }
- dockerInitFcts[name] = fct
- return nil
-}
-
-func GetInitFunc(name string) (InitFunc, error) {
- fct, ok := dockerInitFcts[name]
- if !ok {
- return nil, ErrDriverNotFound
- }
- return fct, nil
-}
-
-// Args provided to the init function for a driver
-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
-}
-
-// Driver specific information based on
-// processes registered with the driver
-type Info interface {
- IsRunning() bool
-}
-
-// Terminal in an interface for drivers to implement
-// if they want to support Close and Resize calls from
-// the core
-type Terminal interface {
- io.Closer
- Resize(height, width int) error
-}
-
-type TtyTerminal interface {
- Master() *os.File
-}
-
-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.
-}
-
-// Network settings of the container
-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"`
-}
-
-type Resources struct {
- Memory int64 `json:"memory"`
- MemorySwap int64 `json:"memory_swap"`
- CpuShares int64 `json:"cpu_shares"`
-}
-
-// Process wrapps an os/exec.Cmd to add more metadata
-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
-}
-
-// Return the pid of the process
-// If the process is nil -1 will be returned
-func (c *Command) Pid() int {
- return c.ContainerPid
-}