瀏覽代碼

Move execdriver construction into execdriver/execdrivers

This can't be in execdriver (dependency loop) but should not be
hardcoded inside runtime.go either. So we put it in a subpackage.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Alexander Larsson 11 年之前
父節點
當前提交
07c35b41a5
共有 2 個文件被更改,包括 26 次插入17 次删除
  1. 23 0
      execdriver/execdrivers/execdrivers.go
  2. 3 17
      runtime/runtime.go

+ 23 - 0
execdriver/execdrivers/execdrivers.go

@@ -0,0 +1,23 @@
+package execdrivers
+
+import (
+	"fmt"
+	"github.com/dotcloud/docker/execdriver"
+	"github.com/dotcloud/docker/execdriver/lxc"
+	"github.com/dotcloud/docker/execdriver/native"
+	"github.com/dotcloud/docker/pkg/sysinfo"
+	"path"
+)
+
+func NewDriver(name, root string, sysInfo *sysinfo.SysInfo) (execdriver.Driver, error) {
+	switch name {
+	case "lxc":
+		// we want to five the lxc driver the full docker root because it needs
+		// to access and write config and template files in /var/lib/docker/containers/*
+		// to be backwards compatible
+		return lxc.NewDriver(root, sysInfo.AppArmor)
+	case "native":
+		return native.NewDriver(path.Join(root, "execdriver", "native"))
+	}
+	return nil, fmt.Errorf("unknown exec driver %s", name)
+}

+ 3 - 17
runtime/runtime.go

@@ -8,8 +8,8 @@ import (
 	"github.com/dotcloud/docker/dockerversion"
 	"github.com/dotcloud/docker/dockerversion"
 	"github.com/dotcloud/docker/engine"
 	"github.com/dotcloud/docker/engine"
 	"github.com/dotcloud/docker/execdriver"
 	"github.com/dotcloud/docker/execdriver"
+	"github.com/dotcloud/docker/execdriver/execdrivers"
 	"github.com/dotcloud/docker/execdriver/lxc"
 	"github.com/dotcloud/docker/execdriver/lxc"
-	"github.com/dotcloud/docker/execdriver/native"
 	"github.com/dotcloud/docker/graph"
 	"github.com/dotcloud/docker/graph"
 	"github.com/dotcloud/docker/graphdriver"
 	"github.com/dotcloud/docker/graphdriver"
 	"github.com/dotcloud/docker/graphdriver/aufs"
 	"github.com/dotcloud/docker/graphdriver/aufs"
@@ -732,22 +732,8 @@ func NewRuntimeFromDirectory(config *daemonconfig.Config, eng *engine.Engine) (*
 		sysInitPath = localCopy
 		sysInitPath = localCopy
 	}
 	}
 
 
-	var (
-		ed      execdriver.Driver
-		sysInfo = sysinfo.New(false)
-	)
-
-	switch config.ExecDriver {
-	case "lxc":
-		// we want to five the lxc driver the full docker root because it needs
-		// to access and write config and template files in /var/lib/docker/containers/*
-		// to be backwards compatible
-		ed, err = lxc.NewDriver(config.Root, sysInfo.AppArmor)
-	case "native":
-		ed, err = native.NewDriver(path.Join(config.Root, "execdriver", "native"))
-	default:
-		return nil, fmt.Errorf("unknown exec driver %s", config.ExecDriver)
-	}
+	sysInfo := sysinfo.New(false)
+	ed, err := execdrivers.NewDriver(config.ExecDriver, config.Root, sysInfo)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}