From 94715e8e643f0bc9aa57841b346f5196f75f0dc0 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 8 Aug 2014 03:01:55 +0000 Subject: [PATCH] Move "info" to daemon/info.go Signed-off-by: Solomon Hykes --- daemon/daemon.go | 1 + daemon/info.go | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ server/init.go | 1 - server/server.go | 68 -------------------------------------------- 4 files changed, 75 insertions(+), 69 deletions(-) create mode 100644 daemon/info.go diff --git a/daemon/daemon.go b/daemon/daemon.go index 2dab2523b2..4753219652 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -118,6 +118,7 @@ func (daemon *Daemon) Install(eng *engine.Engine) error { "create": daemon.ContainerCreate, "delete": daemon.ContainerDestroy, "export": daemon.ContainerExport, + "info": daemon.CmdInfo, "kill": daemon.ContainerKill, "logs": daemon.ContainerLogs, "pause": daemon.ContainerPause, diff --git a/daemon/info.go b/daemon/info.go new file mode 100644 index 0000000000..215d82acdc --- /dev/null +++ b/daemon/info.go @@ -0,0 +1,74 @@ +package daemon + +import ( + "os" + "runtime" + + "github.com/docker/docker/dockerversion" + "github.com/docker/docker/engine" + "github.com/docker/docker/pkg/parsers/kernel" + "github.com/docker/docker/pkg/parsers/operatingsystem" + "github.com/docker/docker/registry" + "github.com/docker/docker/utils" +) + +func (daemon *Daemon) CmdInfo(job *engine.Job) engine.Status { + images, _ := daemon.Graph().Map() + var imgcount int + if images == nil { + imgcount = 0 + } else { + imgcount = len(images) + } + kernelVersion := "" + if kv, err := kernel.GetKernelVersion(); err == nil { + kernelVersion = kv.String() + } + + operatingSystem := "" + if s, err := operatingsystem.GetOperatingSystem(); err == nil { + operatingSystem = s + } + if inContainer, err := operatingsystem.IsContainerized(); err != nil { + utils.Errorf("Could not determine if daemon is containerized: %v", err) + operatingSystem += " (error determining if containerized)" + } else if inContainer { + operatingSystem += " (containerized)" + } + + // if we still have the original dockerinit binary from before we copied it locally, let's return the path to that, since that's more intuitive (the copied path is trivial to derive by hand given VERSION) + initPath := utils.DockerInitPath("") + if initPath == "" { + // if that fails, we'll just return the path from the daemon + initPath = daemon.SystemInitPath() + } + + cjob := job.Eng.Job("subscribers_count") + env, _ := cjob.Stdout.AddEnv() + if err := cjob.Run(); err != nil { + return job.Error(err) + } + v := &engine.Env{} + v.SetInt("Containers", len(daemon.List())) + v.SetInt("Images", imgcount) + v.Set("Driver", daemon.GraphDriver().String()) + v.SetJson("DriverStatus", daemon.GraphDriver().Status()) + v.SetBool("MemoryLimit", daemon.SystemConfig().MemoryLimit) + v.SetBool("SwapLimit", daemon.SystemConfig().SwapLimit) + v.SetBool("IPv4Forwarding", !daemon.SystemConfig().IPv4ForwardingDisabled) + v.SetBool("Debug", os.Getenv("DEBUG") != "") + v.SetInt("NFd", utils.GetTotalUsedFds()) + v.SetInt("NGoroutines", runtime.NumGoroutine()) + v.Set("ExecutionDriver", daemon.ExecutionDriver().Name()) + v.SetInt("NEventsListener", env.GetInt("count")) + v.Set("KernelVersion", kernelVersion) + v.Set("OperatingSystem", operatingSystem) + v.Set("IndexServerAddress", registry.IndexServerAddress()) + v.Set("InitSha1", dockerversion.INITSHA1) + v.Set("InitPath", initPath) + v.SetList("Sockets", daemon.Sockets) + if _, err := v.WriteTo(job.Stdout); err != nil { + return job.Error(err) + } + return engine.StatusOK +} diff --git a/server/init.go b/server/init.go index 1814e6f534..082fb0d1cd 100644 --- a/server/init.go +++ b/server/init.go @@ -86,7 +86,6 @@ func InitServer(job *engine.Job) engine.Status { job.Eng.Hack_SetGlobalVar("httpapi.daemon", srv.daemon) for name, handler := range map[string]engine.Handler{ - "info": srv.DockerInfo, "build": srv.Build, "pull": srv.ImagePull, "push": srv.ImagePush, diff --git a/server/server.go b/server/server.go index 3c8f0708a9..e5233a604c 100644 --- a/server/server.go +++ b/server/server.go @@ -22,81 +22,13 @@ package server import ( - "os" - "runtime" "sync" "time" "github.com/docker/docker/daemon" - "github.com/docker/docker/dockerversion" "github.com/docker/docker/engine" - "github.com/docker/docker/pkg/parsers/kernel" - "github.com/docker/docker/pkg/parsers/operatingsystem" - "github.com/docker/docker/registry" - "github.com/docker/docker/utils" ) -func (srv *Server) DockerInfo(job *engine.Job) engine.Status { - images, _ := srv.daemon.Graph().Map() - var imgcount int - if images == nil { - imgcount = 0 - } else { - imgcount = len(images) - } - kernelVersion := "" - if kv, err := kernel.GetKernelVersion(); err == nil { - kernelVersion = kv.String() - } - - operatingSystem := "" - if s, err := operatingsystem.GetOperatingSystem(); err == nil { - operatingSystem = s - } - if inContainer, err := operatingsystem.IsContainerized(); err != nil { - utils.Errorf("Could not determine if daemon is containerized: %v", err) - operatingSystem += " (error determining if containerized)" - } else if inContainer { - operatingSystem += " (containerized)" - } - - // if we still have the original dockerinit binary from before we copied it locally, let's return the path to that, since that's more intuitive (the copied path is trivial to derive by hand given VERSION) - initPath := utils.DockerInitPath("") - if initPath == "" { - // if that fails, we'll just return the path from the daemon - initPath = srv.daemon.SystemInitPath() - } - - cjob := job.Eng.Job("subscribers_count") - env, _ := cjob.Stdout.AddEnv() - if err := cjob.Run(); err != nil { - return job.Error(err) - } - v := &engine.Env{} - v.SetInt("Containers", len(srv.daemon.List())) - v.SetInt("Images", imgcount) - v.Set("Driver", srv.daemon.GraphDriver().String()) - v.SetJson("DriverStatus", srv.daemon.GraphDriver().Status()) - v.SetBool("MemoryLimit", srv.daemon.SystemConfig().MemoryLimit) - v.SetBool("SwapLimit", srv.daemon.SystemConfig().SwapLimit) - v.SetBool("IPv4Forwarding", !srv.daemon.SystemConfig().IPv4ForwardingDisabled) - v.SetBool("Debug", os.Getenv("DEBUG") != "") - v.SetInt("NFd", utils.GetTotalUsedFds()) - v.SetInt("NGoroutines", runtime.NumGoroutine()) - v.Set("ExecutionDriver", srv.daemon.ExecutionDriver().Name()) - v.SetInt("NEventsListener", env.GetInt("count")) - v.Set("KernelVersion", kernelVersion) - v.Set("OperatingSystem", operatingSystem) - v.Set("IndexServerAddress", registry.IndexServerAddress()) - v.Set("InitSha1", dockerversion.INITSHA1) - v.Set("InitPath", initPath) - v.SetList("Sockets", srv.daemon.Sockets) - if _, err := v.WriteTo(job.Stdout); err != nil { - return job.Error(err) - } - return engine.StatusOK -} - func (srv *Server) SetRunning(status bool) { srv.Lock() defer srv.Unlock()