diff --git a/api/client/info.go b/api/client/info.go index cf81418019..1abc20db2e 100644 --- a/api/client/info.go +++ b/api/client/info.go @@ -1,12 +1,9 @@ package client import ( - "encoding/json" "fmt" - "github.com/docker/docker/api/types" Cli "github.com/docker/docker/cli" - "github.com/docker/docker/pkg/httputils" "github.com/docker/docker/pkg/ioutils" flag "github.com/docker/docker/pkg/mflag" "github.com/docker/docker/pkg/units" @@ -21,18 +18,11 @@ func (cli *DockerCli) CmdInfo(args ...string) error { cmd.ParseFlags(args, true) - serverResp, err := cli.call("GET", "/info", nil, nil) + info, err := cli.client.Info() if err != nil { return err } - defer serverResp.body.Close() - - info := &types.Info{} - if err := json.NewDecoder(serverResp.body).Decode(info); err != nil { - return fmt.Errorf("Error reading remote info: %v", err) - } - fmt.Fprintf(cli.out, "Containers: %d\n", info.Containers) fmt.Fprintf(cli.out, "Images: %d\n", info.Images) ioutils.FprintfIfNotEmpty(cli.out, "Server Version: %s\n", info.ServerVersion) @@ -90,38 +80,36 @@ func (cli *DockerCli) CmdInfo(args ...string) error { } // Only output these warnings if the server does not support these features - if h, err := httputils.ParseServerHeader(serverResp.header.Get("Server")); err == nil { - if h.OS != "windows" { - if !info.MemoryLimit { - fmt.Fprintf(cli.err, "WARNING: No memory limit support\n") - } - if !info.SwapLimit { - fmt.Fprintf(cli.err, "WARNING: No swap limit support\n") - } - if !info.OomKillDisable { - fmt.Fprintf(cli.err, "WARNING: No oom kill disable support\n") - } - if !info.CPUCfsQuota { - fmt.Fprintf(cli.err, "WARNING: No cpu cfs quota support\n") - } - if !info.CPUCfsPeriod { - fmt.Fprintf(cli.err, "WARNING: No cpu cfs period support\n") - } - if !info.CPUShares { - fmt.Fprintf(cli.err, "WARNING: No cpu shares support\n") - } - if !info.CPUSet { - fmt.Fprintf(cli.err, "WARNING: No cpuset support\n") - } - if !info.IPv4Forwarding { - fmt.Fprintf(cli.err, "WARNING: IPv4 forwarding is disabled\n") - } - if !info.BridgeNfIptables { - fmt.Fprintf(cli.err, "WARNING: bridge-nf-call-iptables is disabled\n") - } - if !info.BridgeNfIP6tables { - fmt.Fprintf(cli.err, "WARNING: bridge-nf-call-ip6tables is disabled\n") - } + if info.OSType != "windows" { + if !info.MemoryLimit { + fmt.Fprintf(cli.err, "WARNING: No memory limit support\n") + } + if !info.SwapLimit { + fmt.Fprintf(cli.err, "WARNING: No swap limit support\n") + } + if !info.OomKillDisable { + fmt.Fprintf(cli.err, "WARNING: No oom kill disable support\n") + } + if !info.CPUCfsQuota { + fmt.Fprintf(cli.err, "WARNING: No cpu cfs quota support\n") + } + if !info.CPUCfsPeriod { + fmt.Fprintf(cli.err, "WARNING: No cpu cfs period support\n") + } + if !info.CPUShares { + fmt.Fprintf(cli.err, "WARNING: No cpu shares support\n") + } + if !info.CPUSet { + fmt.Fprintf(cli.err, "WARNING: No cpuset support\n") + } + if !info.IPv4Forwarding { + fmt.Fprintf(cli.err, "WARNING: IPv4 forwarding is disabled\n") + } + if !info.BridgeNfIptables { + fmt.Fprintf(cli.err, "WARNING: bridge-nf-call-iptables is disabled\n") + } + if !info.BridgeNfIP6tables { + fmt.Fprintf(cli.err, "WARNING: bridge-nf-call-ip6tables is disabled\n") } } diff --git a/api/client/lib/info.go b/api/client/lib/info.go new file mode 100644 index 0000000000..4b4bd048a0 --- /dev/null +++ b/api/client/lib/info.go @@ -0,0 +1,25 @@ +package lib + +import ( + "encoding/json" + "fmt" + "net/url" + + "github.com/docker/docker/api/types" +) + +// Info returns information about the docker server. +func (cli *Client) Info() (types.Info, error) { + var info types.Info + serverResp, err := cli.GET("/info", url.Values{}, nil) + if err != nil { + return info, err + } + defer serverResp.body.Close() + + if err := json.NewDecoder(serverResp.body).Decode(&info); err != nil { + return info, fmt.Errorf("Error reading remote info: %v", err) + } + + return info, nil +}