Set client version instead of negotiating it

Signed-off-by: Christopher Crone <christopher.crone@docker.com>
This commit is contained in:
Christopher Crone 2017-09-13 11:30:10 +02:00
Родитель 42d812df0a
Коммит 85431566a8
1 изменённых файлов: 25 добавлений и 5 удалений

Просмотреть файл

@ -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 err != nil {
return nil, err
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 cli, err
}
cli.NegotiateAPIVersionPing(types.Ping{APIVersion: version})
return cli, nil
}