forked from coop-cloud/abra
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package client
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/docker/docker/client"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func NewClientWithContext(contextName string) (*client.Client, error) {
|
|
context, err := GetContext(contextName)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ctxEndpoint, err := GetContextEndpoint(context)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
helper := newConnectionHelper(ctxEndpoint)
|
|
httpClient := &http.Client{
|
|
// No tls
|
|
// No proxy
|
|
Transport: &http.Transport{
|
|
DialContext: helper.Dialer,
|
|
},
|
|
}
|
|
|
|
var clientOpts []client.Opt
|
|
|
|
clientOpts = append(clientOpts,
|
|
client.WithHTTPClient(httpClient),
|
|
client.WithHost(helper.Host),
|
|
client.WithDialContext(helper.Dialer),
|
|
)
|
|
|
|
// FIXME: Maybe don't have this variable here and load it beforehand
|
|
version := os.Getenv("DOCKER_API_VERSION")
|
|
|
|
if version != "" {
|
|
clientOpts = append(clientOpts, client.WithVersion(version))
|
|
} else {
|
|
clientOpts = append(clientOpts, client.WithAPIVersionNegotiation())
|
|
}
|
|
|
|
cl, err := client.NewClientWithOpts(clientOpts...)
|
|
|
|
if err != nil {
|
|
logrus.Fatalf("unable to create Docker client: %s", err)
|
|
}
|
|
return cl, nil
|
|
}
|