diff --git a/execdriver/chroot/driver.go b/execdriver/chroot/driver.go index be8eb58a1a..2aa23c9866 100644 --- a/execdriver/chroot/driver.go +++ b/execdriver/chroot/driver.go @@ -13,7 +13,7 @@ const ( ) func init() { - execdriver.RegisterDockerInitFct(DriverName, func(args *execdriver.DockerInitArgs) error { + execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error { if err := mount.ForceMount("proc", "proc", "proc", ""); err != nil { return err } diff --git a/execdriver/driver.go b/execdriver/driver.go index 3de3369dab..e4d512f7bc 100644 --- a/execdriver/driver.go +++ b/execdriver/driver.go @@ -13,16 +13,16 @@ var ( ErrDriverNotFound = errors.New("The requested docker init has not been found") ) -var dockerInitFcts map[string]DockerInitFct +var dockerInitFcts map[string]InitFunc type ( StartCallback func(*Process) - DockerInitFct func(i *DockerInitArgs) error + InitFunc func(i *InitArgs) error ) -func RegisterDockerInitFct(name string, fct DockerInitFct) error { +func RegisterInitFunc(name string, fct InitFunc) error { if dockerInitFcts == nil { - dockerInitFcts = make(map[string]DockerInitFct) + dockerInitFcts = make(map[string]InitFunc) } if _, ok := dockerInitFcts[name]; ok { return ErrDriverAlreadyRegistered @@ -31,7 +31,7 @@ func RegisterDockerInitFct(name string, fct DockerInitFct) error { return nil } -func GetDockerInitFct(name string) (DockerInitFct, error) { +func GetInitFunc(name string) (InitFunc, error) { fct, ok := dockerInitFcts[name] if !ok { return nil, ErrDriverNotFound @@ -39,7 +39,8 @@ func GetDockerInitFct(name string) (DockerInitFct, error) { return fct, nil } -type DockerInitArgs struct { +// Args provided to the init function for a driver +type InitArgs struct { User string Gateway string Ip string @@ -51,6 +52,8 @@ type DockerInitArgs struct { Driver string } +// Driver specific information based on +// processes registered with the driver type Info interface { IsRunning() bool } @@ -58,12 +61,10 @@ type Info interface { type Driver interface { Run(c *Process, startCallback StartCallback) (int, error) // Run executes the process and blocks until the process exits and returns the exit code Kill(c *Process, sig int) error - // TODO: @crosbymichael @creack wait should probably return the exit code Wait(id string) error // Wait on an out of process...process - lxc ghosts - Version() string - Name() string - - Info(id string) Info // "temporary" hack (until we move state from core to plugins) + Version() string // Driver version number + Name() string // Driver name + Info(id string) Info // "temporary" hack (until we move state from core to plugins) } // Network settings of the container diff --git a/execdriver/lxc/driver.go b/execdriver/lxc/driver.go index 1ae136b512..3b4572af96 100644 --- a/execdriver/lxc/driver.go +++ b/execdriver/lxc/driver.go @@ -18,7 +18,7 @@ import ( const DriverName = "lxc" func init() { - execdriver.RegisterDockerInitFct(DriverName, func(args *execdriver.DockerInitArgs) error { + execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error { if err := setupHostname(args); err != nil { return err } diff --git a/execdriver/lxc/init.go b/execdriver/lxc/init.go index dec33e3ad6..7c2b039c50 100644 --- a/execdriver/lxc/init.go +++ b/execdriver/lxc/init.go @@ -13,7 +13,7 @@ import ( "syscall" ) -func setupHostname(args *execdriver.DockerInitArgs) error { +func setupHostname(args *execdriver.InitArgs) error { hostname := getEnv(args, "HOSTNAME") if hostname == "" { return nil @@ -22,7 +22,7 @@ func setupHostname(args *execdriver.DockerInitArgs) error { } // Setup networking -func setupNetworking(args *execdriver.DockerInitArgs) error { +func setupNetworking(args *execdriver.InitArgs) error { if args.Ip != "" { // eth0 iface, err := net.InterfaceByName("eth0") @@ -67,7 +67,7 @@ func setupNetworking(args *execdriver.DockerInitArgs) error { } // Setup working directory -func setupWorkingDirectory(args *execdriver.DockerInitArgs) error { +func setupWorkingDirectory(args *execdriver.InitArgs) error { if args.WorkDir == "" { return nil } @@ -78,7 +78,7 @@ func setupWorkingDirectory(args *execdriver.DockerInitArgs) error { } // Takes care of dropping privileges to the desired user -func changeUser(args *execdriver.DockerInitArgs) error { +func changeUser(args *execdriver.InitArgs) error { if args.User == "" { return nil } @@ -106,7 +106,7 @@ func changeUser(args *execdriver.DockerInitArgs) error { return nil } -func setupCapabilities(args *execdriver.DockerInitArgs) error { +func setupCapabilities(args *execdriver.InitArgs) error { if args.Privileged { return nil @@ -142,7 +142,7 @@ func setupCapabilities(args *execdriver.DockerInitArgs) error { return nil } -func getEnv(args *execdriver.DockerInitArgs, key string) string { +func getEnv(args *execdriver.InitArgs, key string) string { for _, kv := range args.Env { parts := strings.SplitN(kv, "=", 2) if parts[0] == key && len(parts) == 2 { diff --git a/sysinit/sysinit.go b/sysinit/sysinit.go index 96339018ce..7e1ac519cd 100644 --- a/sysinit/sysinit.go +++ b/sysinit/sysinit.go @@ -12,7 +12,7 @@ import ( ) // Clear environment pollution introduced by lxc-start -func setupEnv(args *execdriver.DockerInitArgs) { +func setupEnv(args *execdriver.InitArgs) { os.Clearenv() for _, kv := range args.Env { parts := strings.SplitN(kv, "=", 2) @@ -23,9 +23,9 @@ func setupEnv(args *execdriver.DockerInitArgs) { } } -func executeProgram(args *execdriver.DockerInitArgs) error { +func executeProgram(args *execdriver.InitArgs) error { setupEnv(args) - dockerInitFct, err := execdriver.GetDockerInitFct(args.Driver) + dockerInitFct, err := execdriver.GetInitFunc(args.Driver) if err != nil { panic(err) } @@ -71,7 +71,7 @@ func SysInit() { // Propagate the plugin-specific container env variable env = append(env, "container="+os.Getenv("container")) - args := &execdriver.DockerInitArgs{ + args := &execdriver.InitArgs{ User: *user, Gateway: *gateway, Ip: *ip,