Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
| ... | ... |
@@ -13,7 +13,7 @@ const ( |
| 13 | 13 |
) |
| 14 | 14 |
|
| 15 | 15 |
func init() {
|
| 16 |
- execdriver.RegisterDockerInitFct(DriverName, func(args *execdriver.DockerInitArgs) error {
|
|
| 16 |
+ execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error {
|
|
| 17 | 17 |
if err := mount.ForceMount("proc", "proc", "proc", ""); err != nil {
|
| 18 | 18 |
return err |
| 19 | 19 |
} |
| ... | ... |
@@ -13,16 +13,16 @@ var ( |
| 13 | 13 |
ErrDriverNotFound = errors.New("The requested docker init has not been found")
|
| 14 | 14 |
) |
| 15 | 15 |
|
| 16 |
-var dockerInitFcts map[string]DockerInitFct |
|
| 16 |
+var dockerInitFcts map[string]InitFunc |
|
| 17 | 17 |
|
| 18 | 18 |
type ( |
| 19 | 19 |
StartCallback func(*Process) |
| 20 |
- DockerInitFct func(i *DockerInitArgs) error |
|
| 20 |
+ InitFunc func(i *InitArgs) error |
|
| 21 | 21 |
) |
| 22 | 22 |
|
| 23 |
-func RegisterDockerInitFct(name string, fct DockerInitFct) error {
|
|
| 23 |
+func RegisterInitFunc(name string, fct InitFunc) error {
|
|
| 24 | 24 |
if dockerInitFcts == nil {
|
| 25 |
- dockerInitFcts = make(map[string]DockerInitFct) |
|
| 25 |
+ dockerInitFcts = make(map[string]InitFunc) |
|
| 26 | 26 |
} |
| 27 | 27 |
if _, ok := dockerInitFcts[name]; ok {
|
| 28 | 28 |
return ErrDriverAlreadyRegistered |
| ... | ... |
@@ -31,7 +31,7 @@ func RegisterDockerInitFct(name string, fct DockerInitFct) error {
|
| 31 | 31 |
return nil |
| 32 | 32 |
} |
| 33 | 33 |
|
| 34 |
-func GetDockerInitFct(name string) (DockerInitFct, error) {
|
|
| 34 |
+func GetInitFunc(name string) (InitFunc, error) {
|
|
| 35 | 35 |
fct, ok := dockerInitFcts[name] |
| 36 | 36 |
if !ok {
|
| 37 | 37 |
return nil, ErrDriverNotFound |
| ... | ... |
@@ -39,7 +39,8 @@ func GetDockerInitFct(name string) (DockerInitFct, error) {
|
| 39 | 39 |
return fct, nil |
| 40 | 40 |
} |
| 41 | 41 |
|
| 42 |
-type DockerInitArgs struct {
|
|
| 42 |
+// Args provided to the init function for a driver |
|
| 43 |
+type InitArgs struct {
|
|
| 43 | 44 |
User string |
| 44 | 45 |
Gateway string |
| 45 | 46 |
Ip string |
| ... | ... |
@@ -51,6 +52,8 @@ type DockerInitArgs struct {
|
| 51 | 51 |
Driver string |
| 52 | 52 |
} |
| 53 | 53 |
|
| 54 |
+// Driver specific information based on |
|
| 55 |
+// processes registered with the driver |
|
| 54 | 56 |
type Info interface {
|
| 55 | 57 |
IsRunning() bool |
| 56 | 58 |
} |
| ... | ... |
@@ -58,12 +61,10 @@ type Info interface {
|
| 58 | 58 |
type Driver interface {
|
| 59 | 59 |
Run(c *Process, startCallback StartCallback) (int, error) // Run executes the process and blocks until the process exits and returns the exit code |
| 60 | 60 |
Kill(c *Process, sig int) error |
| 61 |
- // TODO: @crosbymichael @creack wait should probably return the exit code |
|
| 62 | 61 |
Wait(id string) error // Wait on an out of process...process - lxc ghosts |
| 63 |
- Version() string |
|
| 64 |
- Name() string |
|
| 65 |
- |
|
| 66 |
- Info(id string) Info // "temporary" hack (until we move state from core to plugins) |
|
| 62 |
+ Version() string // Driver version number |
|
| 63 |
+ Name() string // Driver name |
|
| 64 |
+ Info(id string) Info // "temporary" hack (until we move state from core to plugins) |
|
| 67 | 65 |
} |
| 68 | 66 |
|
| 69 | 67 |
// Network settings of the container |
| ... | ... |
@@ -18,7 +18,7 @@ import ( |
| 18 | 18 |
const DriverName = "lxc" |
| 19 | 19 |
|
| 20 | 20 |
func init() {
|
| 21 |
- execdriver.RegisterDockerInitFct(DriverName, func(args *execdriver.DockerInitArgs) error {
|
|
| 21 |
+ execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error {
|
|
| 22 | 22 |
if err := setupHostname(args); err != nil {
|
| 23 | 23 |
return err |
| 24 | 24 |
} |
| ... | ... |
@@ -13,7 +13,7 @@ import ( |
| 13 | 13 |
"syscall" |
| 14 | 14 |
) |
| 15 | 15 |
|
| 16 |
-func setupHostname(args *execdriver.DockerInitArgs) error {
|
|
| 16 |
+func setupHostname(args *execdriver.InitArgs) error {
|
|
| 17 | 17 |
hostname := getEnv(args, "HOSTNAME") |
| 18 | 18 |
if hostname == "" {
|
| 19 | 19 |
return nil |
| ... | ... |
@@ -22,7 +22,7 @@ func setupHostname(args *execdriver.DockerInitArgs) error {
|
| 22 | 22 |
} |
| 23 | 23 |
|
| 24 | 24 |
// Setup networking |
| 25 |
-func setupNetworking(args *execdriver.DockerInitArgs) error {
|
|
| 25 |
+func setupNetworking(args *execdriver.InitArgs) error {
|
|
| 26 | 26 |
if args.Ip != "" {
|
| 27 | 27 |
// eth0 |
| 28 | 28 |
iface, err := net.InterfaceByName("eth0")
|
| ... | ... |
@@ -67,7 +67,7 @@ func setupNetworking(args *execdriver.DockerInitArgs) error {
|
| 67 | 67 |
} |
| 68 | 68 |
|
| 69 | 69 |
// Setup working directory |
| 70 |
-func setupWorkingDirectory(args *execdriver.DockerInitArgs) error {
|
|
| 70 |
+func setupWorkingDirectory(args *execdriver.InitArgs) error {
|
|
| 71 | 71 |
if args.WorkDir == "" {
|
| 72 | 72 |
return nil |
| 73 | 73 |
} |
| ... | ... |
@@ -78,7 +78,7 @@ func setupWorkingDirectory(args *execdriver.DockerInitArgs) error {
|
| 78 | 78 |
} |
| 79 | 79 |
|
| 80 | 80 |
// Takes care of dropping privileges to the desired user |
| 81 |
-func changeUser(args *execdriver.DockerInitArgs) error {
|
|
| 81 |
+func changeUser(args *execdriver.InitArgs) error {
|
|
| 82 | 82 |
if args.User == "" {
|
| 83 | 83 |
return nil |
| 84 | 84 |
} |
| ... | ... |
@@ -106,7 +106,7 @@ func changeUser(args *execdriver.DockerInitArgs) error {
|
| 106 | 106 |
return nil |
| 107 | 107 |
} |
| 108 | 108 |
|
| 109 |
-func setupCapabilities(args *execdriver.DockerInitArgs) error {
|
|
| 109 |
+func setupCapabilities(args *execdriver.InitArgs) error {
|
|
| 110 | 110 |
|
| 111 | 111 |
if args.Privileged {
|
| 112 | 112 |
return nil |
| ... | ... |
@@ -142,7 +142,7 @@ func setupCapabilities(args *execdriver.DockerInitArgs) error {
|
| 142 | 142 |
return nil |
| 143 | 143 |
} |
| 144 | 144 |
|
| 145 |
-func getEnv(args *execdriver.DockerInitArgs, key string) string {
|
|
| 145 |
+func getEnv(args *execdriver.InitArgs, key string) string {
|
|
| 146 | 146 |
for _, kv := range args.Env {
|
| 147 | 147 |
parts := strings.SplitN(kv, "=", 2) |
| 148 | 148 |
if parts[0] == key && len(parts) == 2 {
|
| ... | ... |
@@ -12,7 +12,7 @@ import ( |
| 12 | 12 |
) |
| 13 | 13 |
|
| 14 | 14 |
// Clear environment pollution introduced by lxc-start |
| 15 |
-func setupEnv(args *execdriver.DockerInitArgs) {
|
|
| 15 |
+func setupEnv(args *execdriver.InitArgs) {
|
|
| 16 | 16 |
os.Clearenv() |
| 17 | 17 |
for _, kv := range args.Env {
|
| 18 | 18 |
parts := strings.SplitN(kv, "=", 2) |
| ... | ... |
@@ -23,9 +23,9 @@ func setupEnv(args *execdriver.DockerInitArgs) {
|
| 23 | 23 |
} |
| 24 | 24 |
} |
| 25 | 25 |
|
| 26 |
-func executeProgram(args *execdriver.DockerInitArgs) error {
|
|
| 26 |
+func executeProgram(args *execdriver.InitArgs) error {
|
|
| 27 | 27 |
setupEnv(args) |
| 28 |
- dockerInitFct, err := execdriver.GetDockerInitFct(args.Driver) |
|
| 28 |
+ dockerInitFct, err := execdriver.GetInitFunc(args.Driver) |
|
| 29 | 29 |
if err != nil {
|
| 30 | 30 |
panic(err) |
| 31 | 31 |
} |
| ... | ... |
@@ -71,7 +71,7 @@ func SysInit() {
|
| 71 | 71 |
// Propagate the plugin-specific container env variable |
| 72 | 72 |
env = append(env, "container="+os.Getenv("container"))
|
| 73 | 73 |
|
| 74 |
- args := &execdriver.DockerInitArgs{
|
|
| 74 |
+ args := &execdriver.InitArgs{
|
|
| 75 | 75 |
User: *user, |
| 76 | 76 |
Gateway: *gateway, |
| 77 | 77 |
Ip: *ip, |