Set client version instead of negotiating it

Signed-off-by: Christopher Crone <christopher.crone@docker.com>
Upstream-commit: 85431566a81792e3612df3b6b858f7b0c3506883
Component: engine
This commit is contained in:
Christopher Crone
2017-09-14 19:27:09 +02:00
parent 454535ed22
commit a13cdc241b
@@ -18,7 +18,6 @@ import (
"time"
"github.com/docker/docker/api"
"github.com/docker/docker/api/types"
dclient "github.com/docker/docker/client"
"github.com/docker/docker/opts"
"github.com/docker/docker/pkg/ioutils"
@@ -328,10 +327,31 @@ func DaemonHost() string {
// NewEnvClientWithVersion returns a docker client with a specified version.
// See: github.com/docker/docker/client `NewEnvClient()`
func NewEnvClientWithVersion(version string) (*dclient.Client, error) {
cli, err := dclient.NewEnvClient()
if version == "" {
return nil, errors.New("version not specified")
}
var httpClient *http.Client
if os.Getenv("DOCKER_CERT_PATH") != "" {
tlsConfig, err := getTLSConfig()
if err != nil {
return nil, err
}
httpClient = &http.Client{
Transport: &http.Transport{
TLSClientConfig: tlsConfig,
},
}
}
host := os.Getenv("DOCKER_HOST")
if host == "" {
host = dclient.DefaultDockerHost
}
cli, err := dclient.NewClient(host, version, httpClient, nil)
if err != nil {
return nil, err
return cli, err
}
cli.NegotiateAPIVersionPing(types.Ping{APIVersion: version})
return cli, nil
}