diff --git a/components/engine/hack/vendor.sh b/components/engine/hack/vendor.sh index 535e4eb936..a13d6c6c4a 100755 --- a/components/engine/hack/vendor.sh +++ b/components/engine/hack/vendor.sh @@ -22,7 +22,7 @@ clone git github.com/vdemeester/shakers 3c10293ce22b900c27acad7b28656196fcc2f73b clone git golang.org/x/net 47990a1ba55743e6ef1affd3a14e5bac8553615d https://github.com/golang/net.git clone git github.com/docker/go-units 651fc226e7441360384da338d0fd37f2440ffbe3 clone git github.com/docker/go-connections v0.1.2 -clone git github.com/docker/engine-api v0.2.2 +clone git github.com/docker/engine-api bdbab71ec21209ef56dffdbe42c9d21843c30862 clone git github.com/RackSec/srslog 6eb773f331e46fbba8eecb8e794e635e75fc04de clone git github.com/imdario/mergo 0.2.1 diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/client.go b/components/engine/vendor/src/github.com/docker/engine-api/client/client.go index 28f00e5669..a62d859464 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/client.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/client.go @@ -10,6 +10,8 @@ import ( "path/filepath" "strings" "time" + + "github.com/docker/go-connections/tlsconfig" ) // Client is the API client that performs all operations @@ -41,21 +43,27 @@ type Client struct { func NewEnvClient() (*Client, error) { var transport *http.Transport if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { - tlsc := &tls.Config{} - - cert, err := tls.LoadX509KeyPair(filepath.Join(dockerCertPath, "cert.pem"), filepath.Join(dockerCertPath, "key.pem")) + options := tlsconfig.Options{ + CAFile: filepath.Join(dockerCertPath, "ca.pem"), + CertFile: filepath.Join(dockerCertPath, "cert.pem"), + KeyFile: filepath.Join(dockerCertPath, "key.pem"), + InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", + } + tlsc, err := tlsconfig.Client(options) if err != nil { - return nil, fmt.Errorf("Error loading x509 key pair: %s", err) + return nil, err } - tlsc.Certificates = append(tlsc.Certificates, cert) - tlsc.InsecureSkipVerify = os.Getenv("DOCKER_TLS_VERIFY") == "" transport = &http.Transport{ TLSClientConfig: tlsc, } } - return NewClient(os.Getenv("DOCKER_HOST"), os.Getenv("DOCKER_API_VERSION"), transport, nil) + host := os.Getenv("DOCKER_HOST") + if host == "" { + host = DefaultDockerHost + } + return NewClient(host, os.Getenv("DOCKER_API_VERSION"), transport, nil) } // NewClient initializes a new API client for the given host and API version. diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/client_nounix.go b/components/engine/vendor/src/github.com/docker/engine-api/client/client_nounix.go new file mode 100644 index 0000000000..d07ab84dcd --- /dev/null +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/client_nounix.go @@ -0,0 +1,6 @@ +// +build windows darwin + +package client + +// DefaultDockerHost defines os specific default if DOCKER_HOST is unset +const DefaultDockerHost = "tcp://127.0.0.1:2375" diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/client_unix.go b/components/engine/vendor/src/github.com/docker/engine-api/client/client_unix.go new file mode 100644 index 0000000000..39c4bd8f2c --- /dev/null +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/client_unix.go @@ -0,0 +1,6 @@ +// +build linux freebsd + +package client + +// DefaultDockerHost defines os specific default if DOCKER_HOST is unset +const DefaultDockerHost = "unix:///var/run/docker.sock" diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/container_commit.go b/components/engine/vendor/src/github.com/docker/engine-api/client/container_commit.go index 488d0876f7..47534a6ba0 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/container_commit.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/container_commit.go @@ -27,11 +27,8 @@ func (cli *Client) ContainerCommit(options types.ContainerCommitOptions) (types. if err != nil { return response, err } - defer ensureReaderClosed(resp) - if err := json.NewDecoder(resp.body).Decode(&response); err != nil { - return response, err - } - - return response, nil + err = json.NewDecoder(resp.body).Decode(&response) + ensureReaderClosed(resp) + return response, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/container_create.go b/components/engine/vendor/src/github.com/docker/engine-api/client/container_create.go index 0f85e7bbe6..61b560ad58 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/container_create.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/container_create.go @@ -39,18 +39,7 @@ func (cli *Client) ContainerCreate(config *container.Config, hostConfig *contain return response, err } - if serverResp.statusCode == 404 && strings.Contains(err.Error(), "No such image") { - return response, imageNotFoundError{config.Image} - } - - if err != nil { - return response, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&response); err != nil { - return response, err - } - - return response, nil + err = json.NewDecoder(serverResp.body).Decode(&response) + ensureReaderClosed(serverResp) + return response, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/container_inspect.go b/components/engine/vendor/src/github.com/docker/engine-api/client/container_inspect.go index c18a764ef8..f99e46ff88 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/container_inspect.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/container_inspect.go @@ -19,10 +19,10 @@ func (cli *Client) ContainerInspect(containerID string) (types.ContainerJSON, er } return types.ContainerJSON{}, err } - defer ensureReaderClosed(serverResp) var response types.ContainerJSON err = json.NewDecoder(serverResp.body).Decode(&response) + ensureReaderClosed(serverResp) return response, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/container_list.go b/components/engine/vendor/src/github.com/docker/engine-api/client/container_list.go index b55307c84e..f553287fb6 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/container_list.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/container_list.go @@ -46,9 +46,9 @@ func (cli *Client) ContainerList(options types.ContainerListOptions) ([]types.Co if err != nil { return nil, err } - defer ensureReaderClosed(resp) var containers []types.Container err = json.NewDecoder(resp.body).Decode(&containers) + ensureReaderClosed(resp) return containers, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/container_top.go b/components/engine/vendor/src/github.com/docker/engine-api/client/container_top.go index 04aecc278c..1673947712 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/container_top.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/container_top.go @@ -20,8 +20,8 @@ func (cli *Client) ContainerTop(containerID string, arguments []string) (types.C if err != nil { return response, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&response) + ensureReaderClosed(resp) return response, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/diff.go b/components/engine/vendor/src/github.com/docker/engine-api/client/diff.go index 6639d8bb25..c57bf6910b 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/diff.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/diff.go @@ -15,11 +15,8 @@ func (cli *Client) ContainerDiff(containerID string) ([]types.ContainerChange, e if err != nil { return changes, err } - defer ensureReaderClosed(serverResp) - if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil { - return changes, err - } - - return changes, nil + err = json.NewDecoder(serverResp.body).Decode(&changes) + ensureReaderClosed(serverResp) + return changes, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/exec.go b/components/engine/vendor/src/github.com/docker/engine-api/client/exec.go index 3a86b4043f..3d4577ee33 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/exec.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/exec.go @@ -13,8 +13,8 @@ func (cli *Client) ContainerExecCreate(config types.ExecConfig) (types.Container if err != nil { return response, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&response) + ensureReaderClosed(resp) return response, err } @@ -41,8 +41,8 @@ func (cli *Client) ContainerExecInspect(execID string) (types.ContainerExecInspe if err != nil { return response, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&response) + ensureReaderClosed(resp) return response, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/history.go b/components/engine/vendor/src/github.com/docker/engine-api/client/history.go index 77697274ae..21a26225e4 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/history.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/history.go @@ -14,10 +14,8 @@ func (cli *Client) ImageHistory(imageID string) ([]types.ImageHistory, error) { if err != nil { return history, err } - defer ensureReaderClosed(serverResp) - if err := json.NewDecoder(serverResp.body).Decode(&history); err != nil { - return history, err - } - return history, nil + err = json.NewDecoder(serverResp.body).Decode(&history) + ensureReaderClosed(serverResp) + return history, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/image_list.go b/components/engine/vendor/src/github.com/docker/engine-api/client/image_list.go index d961570c4a..0cdb0baac8 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/image_list.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/image_list.go @@ -32,8 +32,8 @@ func (cli *Client) ImageList(options types.ImageListOptions) ([]types.Image, err if err != nil { return images, err } - defer ensureReaderClosed(serverResp) err = json.NewDecoder(serverResp.body).Decode(&images) + ensureReaderClosed(serverResp) return images, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/image_remove.go b/components/engine/vendor/src/github.com/docker/engine-api/client/image_remove.go index c9c232cd1b..28edb8e429 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/image_remove.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/image_remove.go @@ -22,9 +22,9 @@ func (cli *Client) ImageRemove(options types.ImageRemoveOptions) ([]types.ImageD if err != nil { return nil, err } - defer ensureReaderClosed(resp) var dels []types.ImageDelete err = json.NewDecoder(resp.body).Decode(&dels) + ensureReaderClosed(resp) return dels, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/image_search.go b/components/engine/vendor/src/github.com/docker/engine-api/client/image_search.go index 5d9413c701..0cad8a7fdc 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/image_search.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/image_search.go @@ -27,9 +27,9 @@ func (cli *Client) ImageSearch(options types.ImageSearchOptions, privilegeFunc R if err != nil { return results, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&results) + ensureReaderClosed(resp) return results, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/login.go b/components/engine/vendor/src/github.com/docker/engine-api/client/login.go index e9ba8421b0..5ddcd5b9b4 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/login.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/login.go @@ -19,9 +19,9 @@ func (cli *Client) RegistryLogin(auth types.AuthConfig) (types.AuthResponse, err if err != nil { return types.AuthResponse{}, err } - defer ensureReaderClosed(resp) var response types.AuthResponse err = json.NewDecoder(resp.body).Decode(&response) + ensureReaderClosed(resp) return response, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/network.go b/components/engine/vendor/src/github.com/docker/engine-api/client/network.go index de7f184368..90b9adb29e 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/network.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/network.go @@ -65,8 +65,8 @@ func (cli *Client) NetworkList(options types.NetworkListOptions) ([]types.Networ if err != nil { return networkResources, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&networkResources) + ensureReaderClosed(resp) return networkResources, err } @@ -80,7 +80,7 @@ func (cli *Client) NetworkInspect(networkID string) (types.NetworkResource, erro } return networkResource, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&networkResource) + ensureReaderClosed(resp) return networkResource, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/version.go b/components/engine/vendor/src/github.com/docker/engine-api/client/version.go index e97b79801d..0e9ce61f64 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/version.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/version.go @@ -12,9 +12,9 @@ func (cli *Client) ServerVersion() (types.Version, error) { if err != nil { return types.Version{}, err } - defer ensureReaderClosed(resp) var server types.Version err = json.NewDecoder(resp.body).Decode(&server) + ensureReaderClosed(resp) return server, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/client/volume.go b/components/engine/vendor/src/github.com/docker/engine-api/client/volume.go index 3419def9bb..597e31803d 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/client/volume.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/client/volume.go @@ -25,9 +25,9 @@ func (cli *Client) VolumeList(filter filters.Args) (types.VolumesListResponse, e if err != nil { return volumes, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&volumes) + ensureReaderClosed(resp) return volumes, err } @@ -41,8 +41,8 @@ func (cli *Client) VolumeInspect(volumeID string) (types.Volume, error) { } return volume, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&volume) + ensureReaderClosed(resp) return volume, err } @@ -53,8 +53,8 @@ func (cli *Client) VolumeCreate(options types.VolumeCreateRequest) (types.Volume if err != nil { return volume, err } - defer ensureReaderClosed(resp) err = json.NewDecoder(resp.body).Decode(&volume) + ensureReaderClosed(resp) return volume, err } diff --git a/components/engine/vendor/src/github.com/docker/engine-api/types/container/host_config.go b/components/engine/vendor/src/github.com/docker/engine-api/types/container/host_config.go index f43263d6ef..b7c459ea8a 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/types/container/host_config.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/types/container/host_config.go @@ -151,6 +151,11 @@ func (rp *RestartPolicy) IsUnlessStopped() bool { return rp.Name == "unless-stopped" } +// IsSame compares two RestartPolicy to see if they are the same +func (rp *RestartPolicy) IsSame(tp *RestartPolicy) bool { + return rp.Name == tp.Name && rp.MaximumRetryCount == tp.MaximumRetryCount +} + // LogConfig represents the logging configuration of the container. type LogConfig struct { Type string @@ -178,7 +183,7 @@ type Resources struct { KernelMemory int64 // Kernel memory limit (in bytes) Memory int64 // Memory limit (in bytes) MemoryReservation int64 // Memory soft limit (in bytes) - MemorySwap int64 // Total memory usage (memory + swap); set `-1` to disable swap + MemorySwap int64 // Total memory usage (memory + swap); set `-1` to enable unlimited swap MemorySwappiness *int64 // Tuning container memory swappiness behaviour OomKillDisable *bool // Whether to disable OOM Killer or not PidsLimit int64 // Setting pids limit for a container @@ -190,6 +195,7 @@ type Resources struct { type UpdateConfig struct { // Contains container's resources (cgroups, ulimits) Resources + RestartPolicy RestartPolicy } // HostConfig the non-portable Config structure of a container. diff --git a/components/engine/vendor/src/github.com/docker/engine-api/types/types.go b/components/engine/vendor/src/github.com/docker/engine-api/types/types.go index 9666ea4561..de8b0becc9 100644 --- a/components/engine/vendor/src/github.com/docker/engine-api/types/types.go +++ b/components/engine/vendor/src/github.com/docker/engine-api/types/types.go @@ -142,6 +142,7 @@ type Container struct { SizeRw int64 `json:",omitempty"` SizeRootFs int64 `json:",omitempty"` Labels map[string]string + State string Status string HostConfig struct { NetworkMode string `json:",omitempty"` @@ -198,6 +199,7 @@ type Info struct { Images int Driver string DriverStatus [][2]string + SystemStatus [][2]string Plugins PluginsInfo MemoryLimit bool SwapLimit bool @@ -222,8 +224,6 @@ type Info struct { Architecture string IndexServerAddress string RegistryConfig *registry.ServiceConfig - InitSha1 string - InitPath string NCPU int MemTotal int64 DockerRootDir string @@ -388,6 +388,7 @@ type NetworkResource struct { Scope string Driver string IPAM network.IPAM + Internal bool Containers map[string]EndpointResource Options map[string]string }