Bläddra i källkod

Merge pull request #20205 from calavera/remove_last_daemon_references

Remove daemon dependency from api/server.
Alexander Morozov 9 år sedan
förälder
incheckning
2658341b5f

+ 1 - 2
api/server/router/container/backend.go

@@ -5,7 +5,6 @@ import (
 	"time"
 
 	"github.com/docker/docker/api/types/backend"
-	"github.com/docker/docker/daemon/exec"
 	"github.com/docker/docker/pkg/archive"
 	"github.com/docker/docker/pkg/version"
 	"github.com/docker/engine-api/types"
@@ -15,7 +14,7 @@ import (
 // execBackend includes functions to implement to provide exec functionality.
 type execBackend interface {
 	ContainerExecCreate(config *types.ExecConfig) (string, error)
-	ContainerExecInspect(id string) (*exec.Config, error)
+	ContainerExecInspect(id string) (*backend.ExecInspect, error)
 	ContainerExecResize(name string, height, width int) error
 	ContainerExecStart(name string, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) error
 	ExecExists(name string) (bool, error)

+ 8 - 19
api/server/server.go

@@ -9,14 +9,6 @@ import (
 	"github.com/Sirupsen/logrus"
 	"github.com/docker/docker/api/server/httputils"
 	"github.com/docker/docker/api/server/router"
-	"github.com/docker/docker/api/server/router/build"
-	"github.com/docker/docker/api/server/router/container"
-	"github.com/docker/docker/api/server/router/image"
-	"github.com/docker/docker/api/server/router/network"
-	"github.com/docker/docker/api/server/router/system"
-	"github.com/docker/docker/api/server/router/volume"
-	"github.com/docker/docker/builder/dockerfile"
-	"github.com/docker/docker/daemon"
 	"github.com/docker/docker/pkg/authorization"
 	"github.com/docker/docker/utils"
 	"github.com/docker/go-connections/sockets"
@@ -174,14 +166,11 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc) http.HandlerFunc {
 	}
 }
 
-// InitRouters initializes a list of routers for the server.
-func (s *Server) InitRouters(d *daemon.Daemon) {
-	s.addRouter(container.NewRouter(d))
-	s.addRouter(image.NewRouter(d))
-	s.addRouter(network.NewRouter(d))
-	s.addRouter(system.NewRouter(d))
-	s.addRouter(volume.NewRouter(d))
-	s.addRouter(build.NewRouter(dockerfile.NewBuildManager(d)))
+// AddRouters initializes a list of routers for the server.
+func (s *Server) AddRouters(routers ...router.Router) {
+	for _, r := range routers {
+		s.addRouter(r)
+	}
 }
 
 // addRouter adds a new router to the server.
@@ -231,13 +220,13 @@ func (s *Server) initRouterSwapper() {
 // Reload reads configuration changes and modifies the
 // server according to those changes.
 // Currently, only the --debug configuration is taken into account.
-func (s *Server) Reload(config *daemon.Config) {
+func (s *Server) Reload(debug bool) {
 	debugEnabled := utils.IsDebugEnabled()
 	switch {
-	case debugEnabled && !config.Debug: // disable debug
+	case debugEnabled && !debug: // disable debug
 		utils.DisableDebug()
 		s.routerSwapper.Swap(s.createMux())
-	case config.Debug && !debugEnabled: // enable debug
+	case debug && !debugEnabled: // enable debug
 		utils.EnableDebug()
 		s.routerSwapper.Swap(s.createMux())
 	}

+ 25 - 0
api/types/backend/backend.go

@@ -42,3 +42,28 @@ type ContainerStatsConfig struct {
 	Stop      <-chan bool
 	Version   string
 }
+
+// ExecInspect holds information about a running process started
+// with docker exec.
+type ExecInspect struct {
+	ID            string
+	Running       bool
+	ExitCode      *int
+	ProcessConfig *ExecProcessConfig
+	OpenStdin     bool
+	OpenStderr    bool
+	OpenStdout    bool
+	CanRemove     bool
+	ContainerID   string
+	DetachKeys    []byte
+}
+
+// ExecProcessConfig holds information about the exec process
+// running on the host.
+type ExecProcessConfig struct {
+	Tty        bool     `json:"tty"`
+	Entrypoint string   `json:"entrypoint"`
+	Arguments  []string `json:"arguments"`
+	Privileged *bool    `json:"privileged,omitempty"`
+	User       string   `json:"user,omitempty"`
+}

+ 18 - 4
daemon/inspect.go

@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"time"
 
+	"github.com/docker/docker/api/types/backend"
 	"github.com/docker/docker/container"
-	"github.com/docker/docker/daemon/exec"
 	"github.com/docker/docker/daemon/network"
 	"github.com/docker/docker/pkg/version"
 	"github.com/docker/engine-api/types"
@@ -175,12 +175,26 @@ func (daemon *Daemon) getInspectData(container *container.Container, size bool)
 
 // ContainerExecInspect returns low-level information about the exec
 // command. An error is returned if the exec cannot be found.
-func (daemon *Daemon) ContainerExecInspect(id string) (*exec.Config, error) {
-	eConfig, err := daemon.getExecConfig(id)
+func (daemon *Daemon) ContainerExecInspect(id string) (*backend.ExecInspect, error) {
+	e, err := daemon.getExecConfig(id)
 	if err != nil {
 		return nil, err
 	}
-	return eConfig, nil
+
+	pc := inspectExecProcessConfig(e)
+
+	return &backend.ExecInspect{
+		ID:            e.ID,
+		Running:       e.Running,
+		ExitCode:      e.ExitCode,
+		ProcessConfig: pc,
+		OpenStdin:     e.OpenStdin,
+		OpenStdout:    e.OpenStdout,
+		OpenStderr:    e.OpenStderr,
+		CanRemove:     e.CanRemove,
+		ContainerID:   e.ContainerID,
+		DetachKeys:    e.DetachKeys,
+	}, nil
 }
 
 // VolumeInspect looks up a volume by name. An error is returned if

+ 12 - 0
daemon/inspect_unix.go

@@ -3,7 +3,9 @@
 package daemon
 
 import (
+	"github.com/docker/docker/api/types/backend"
 	"github.com/docker/docker/container"
+	"github.com/docker/docker/daemon/exec"
 	"github.com/docker/engine-api/types"
 	"github.com/docker/engine-api/types/versions/v1p19"
 )
@@ -77,3 +79,13 @@ func addMountPoints(container *container.Container) []types.MountPoint {
 	}
 	return mountPoints
 }
+
+func inspectExecProcessConfig(e *exec.Config) *backend.ExecProcessConfig {
+	return &backend.ExecProcessConfig{
+		Tty:        e.ProcessConfig.Tty,
+		Entrypoint: e.ProcessConfig.Entrypoint,
+		Arguments:  e.ProcessConfig.Arguments,
+		Privileged: &e.ProcessConfig.Privileged,
+		User:       e.ProcessConfig.User,
+	}
+}

+ 10 - 0
daemon/inspect_windows.go

@@ -1,7 +1,9 @@
 package daemon
 
 import (
+	"github.com/docker/docker/api/types/backend"
 	"github.com/docker/docker/container"
+	"github.com/docker/docker/daemon/exec"
 	"github.com/docker/engine-api/types"
 )
 
@@ -28,3 +30,11 @@ func addMountPoints(container *container.Container) []types.MountPoint {
 func (daemon *Daemon) containerInspectPre120(name string) (*types.ContainerJSON, error) {
 	return daemon.containerInspectCurrent(name, false)
 }
+
+func inspectExecProcessConfig(e *exec.Config) *backend.ExecProcessConfig {
+	return &backend.ExecProcessConfig{
+		Tty:        e.ProcessConfig.Tty,
+		Entrypoint: e.ProcessConfig.Entrypoint,
+		Arguments:  e.ProcessConfig.Arguments,
+	}
+}

+ 18 - 2
docker/daemon.go

@@ -14,6 +14,13 @@ import (
 	"github.com/Sirupsen/logrus"
 	"github.com/docker/distribution/uuid"
 	apiserver "github.com/docker/docker/api/server"
+	"github.com/docker/docker/api/server/router/build"
+	"github.com/docker/docker/api/server/router/container"
+	"github.com/docker/docker/api/server/router/image"
+	"github.com/docker/docker/api/server/router/network"
+	systemrouter "github.com/docker/docker/api/server/router/system"
+	"github.com/docker/docker/api/server/router/volume"
+	"github.com/docker/docker/builder/dockerfile"
 	"github.com/docker/docker/cli"
 	"github.com/docker/docker/cliconfig"
 	"github.com/docker/docker/daemon"
@@ -270,14 +277,14 @@ func (cli *DaemonCli) CmdDaemon(args ...string) error {
 		"graphdriver": d.GraphDriverName(),
 	}).Info("Docker daemon")
 
-	api.InitRouters(d)
+	initRouters(api, d)
 
 	reload := func(config *daemon.Config) {
 		if err := d.Reload(config); err != nil {
 			logrus.Errorf("Error reconfiguring the daemon: %v", err)
 			return
 		}
-		api.Reload(config)
+		api.Reload(config.Debug)
 	}
 
 	setupConfigReloadTrap(*configFile, cli.flags, reload)
@@ -373,3 +380,12 @@ func loadDaemonCliConfig(config *daemon.Config, daemonFlags *flag.FlagSet, commo
 
 	return config, nil
 }
+
+func initRouters(s *apiserver.Server, d *daemon.Daemon) {
+	s.AddRouters(container.NewRouter(d),
+		image.NewRouter(d),
+		network.NewRouter(d),
+		systemrouter.NewRouter(d),
+		volume.NewRouter(d),
+		build.NewRouter(dockerfile.NewBuildManager(d)))
+}