diff --git a/components/engine/builtins/builtins.go b/components/engine/builtins/builtins.go index 40d421f154..572e16252a 100644 --- a/components/engine/builtins/builtins.go +++ b/components/engine/builtins/builtins.go @@ -1,11 +1,16 @@ package builtins import ( - api "github.com/dotcloud/docker/api/server" + "runtime" + + "github.com/dotcloud/docker/api" + apiserver "github.com/dotcloud/docker/api/server" "github.com/dotcloud/docker/daemon/networkdriver/bridge" + "github.com/dotcloud/docker/dockerversion" "github.com/dotcloud/docker/engine" "github.com/dotcloud/docker/registry" "github.com/dotcloud/docker/server" + "github.com/dotcloud/docker/utils" ) func Register(eng *engine.Engine) error { @@ -15,12 +20,15 @@ func Register(eng *engine.Engine) error { if err := remote(eng); err != nil { return err } + if err := eng.Register("version", dockerVersion); err != nil { + return err + } return registry.NewService().Install(eng) } // remote: a RESTful api for cross-docker communication func remote(eng *engine.Engine) error { - return eng.Register("serveapi", api.ServeApi) + return eng.Register("serveapi", apiserver.ServeApi) } // daemon: a default execution and storage backend for Docker on Linux, @@ -44,3 +52,21 @@ func daemon(eng *engine.Engine) error { } return eng.Register("init_networkdriver", bridge.InitDriver) } + +// builtins jobs independent of any subsystem +func dockerVersion(job *engine.Job) engine.Status { + v := &engine.Env{} + v.Set("Version", dockerversion.VERSION) + v.SetJson("ApiVersion", api.APIVERSION) + v.Set("GitCommit", dockerversion.GITCOMMIT) + v.Set("GoVersion", runtime.Version()) + v.Set("Os", runtime.GOOS) + v.Set("Arch", runtime.GOARCH) + if kernelVersion, err := utils.GetKernelVersion(); err == nil { + v.Set("KernelVersion", kernelVersion.String()) + } + if _, err := v.WriteTo(job.Stdout); err != nil { + return job.Error(err) + } + return engine.StatusOK +} diff --git a/components/engine/server/server.go b/components/engine/server/server.go index ac2bb0cada..7c25d0306f 100644 --- a/components/engine/server/server.go +++ b/components/engine/server/server.go @@ -41,7 +41,6 @@ import ( "syscall" "time" - "github.com/dotcloud/docker/api" "github.com/dotcloud/docker/archive" "github.com/dotcloud/docker/daemon" "github.com/dotcloud/docker/daemonconfig" @@ -128,7 +127,6 @@ func InitServer(job *engine.Job) engine.Status { "logs": srv.ContainerLogs, "changes": srv.ContainerChanges, "top": srv.ContainerTop, - "version": srv.DockerVersion, "load": srv.ImageLoad, "build": srv.Build, "pull": srv.ImagePull, @@ -807,23 +805,6 @@ func (srv *Server) DockerInfo(job *engine.Job) engine.Status { return engine.StatusOK } -func (srv *Server) DockerVersion(job *engine.Job) engine.Status { - v := &engine.Env{} - v.Set("Version", dockerversion.VERSION) - v.SetJson("ApiVersion", api.APIVERSION) - v.Set("GitCommit", dockerversion.GITCOMMIT) - v.Set("GoVersion", runtime.Version()) - v.Set("Os", runtime.GOOS) - v.Set("Arch", runtime.GOARCH) - if kernelVersion, err := utils.GetKernelVersion(); err == nil { - v.Set("KernelVersion", kernelVersion.String()) - } - if _, err := v.WriteTo(job.Stdout); err != nil { - return job.Error(err) - } - return engine.StatusOK -} - func (srv *Server) ImageHistory(job *engine.Job) engine.Status { if n := len(job.Args); n != 1 { return job.Errorf("Usage: %s IMAGE", job.Name)