Browse code

Move client version to the docker cli.

This removes the dockerversion dependency from the client library.

Signed-off-by: David Calavera <david.calavera@gmail.com>

David Calavera authored on 2015/12/12 08:58:54
Showing 3 changed files
... ...
@@ -68,7 +68,7 @@ type apiClient interface {
68 68
 	NetworkList() ([]types.NetworkResource, error)
69 69
 	NetworkRemove(networkID string) error
70 70
 	RegistryLogin(auth cliconfig.AuthConfig) (types.AuthResponse, error)
71
-	SystemVersion() (types.VersionResponse, error)
71
+	ServerVersion() (types.Version, error)
72 72
 	VolumeCreate(options types.VolumeCreateRequest) (types.Volume, error)
73 73
 	VolumeInspect(volumeID string) (types.Volume, error)
74 74
 	VolumeList(filter filters.Args) (types.VolumesListResponse, error)
... ...
@@ -2,37 +2,19 @@ package lib
2 2
 
3 3
 import (
4 4
 	"encoding/json"
5
-	"runtime"
6 5
 
7
-	"github.com/docker/docker/api"
8 6
 	"github.com/docker/docker/api/types"
9
-	"github.com/docker/docker/dockerversion"
10
-	"github.com/docker/docker/utils"
11 7
 )
12 8
 
13
-// SystemVersion returns information of the docker client and server host.
14
-func (cli *Client) SystemVersion() (types.VersionResponse, error) {
15
-	client := &types.Version{
16
-		Version:      dockerversion.Version,
17
-		APIVersion:   api.Version,
18
-		GoVersion:    runtime.Version(),
19
-		GitCommit:    dockerversion.GitCommit,
20
-		BuildTime:    dockerversion.BuildTime,
21
-		Os:           runtime.GOOS,
22
-		Arch:         runtime.GOARCH,
23
-		Experimental: utils.ExperimentalBuild(),
24
-	}
25
-
9
+// ServerVersion returns information of the docker client and server host.
10
+func (cli *Client) ServerVersion() (types.Version, error) {
26 11
 	resp, err := cli.get("/version", nil, nil)
27 12
 	if err != nil {
28
-		return types.VersionResponse{Client: client}, err
13
+		return types.Version{}, err
29 14
 	}
30 15
 	defer ensureReaderClosed(resp)
31 16
 
32 17
 	var server types.Version
33 18
 	err = json.NewDecoder(resp.body).Decode(&server)
34
-	if err != nil {
35
-		return types.VersionResponse{Client: client}, err
36
-	}
37
-	return types.VersionResponse{Client: client, Server: &server}, nil
19
+	return server, err
38 20
 }
... ...
@@ -1,11 +1,16 @@
1 1
 package client
2 2
 
3 3
 import (
4
+	"runtime"
4 5
 	"text/template"
5 6
 	"time"
6 7
 
8
+	"github.com/docker/docker/api"
9
+	"github.com/docker/docker/api/types"
7 10
 	Cli "github.com/docker/docker/cli"
11
+	"github.com/docker/docker/dockerversion"
8 12
 	flag "github.com/docker/docker/pkg/mflag"
13
+	"github.com/docker/docker/utils"
9 14
 )
10 15
 
11 16
 var versionTemplate = `Client:
... ...
@@ -49,7 +54,23 @@ func (cli *DockerCli) CmdVersion(args ...string) (err error) {
49 49
 			Status: "Template parsing error: " + err.Error()}
50 50
 	}
51 51
 
52
-	vd, err := cli.client.SystemVersion()
52
+	vd := types.VersionResponse{
53
+		Client: &types.Version{
54
+			Version:      dockerversion.Version,
55
+			APIVersion:   api.Version,
56
+			GoVersion:    runtime.Version(),
57
+			GitCommit:    dockerversion.GitCommit,
58
+			BuildTime:    dockerversion.BuildTime,
59
+			Os:           runtime.GOOS,
60
+			Arch:         runtime.GOARCH,
61
+			Experimental: utils.ExperimentalBuild(),
62
+		},
63
+	}
64
+
65
+	serverVersion, err := cli.client.ServerVersion()
66
+	if err == nil {
67
+		vd.Server = &serverVersion
68
+	}
53 69
 
54 70
 	// first we need to make BuildTime more human friendly
55 71
 	t, errTime := time.Parse(time.RFC3339Nano, vd.Client.BuildTime)