Merge pull request #29144 from ronnielai/test1

Automatic merge from submit-queue

Update docker engine-api to dea108d3aa

#29129
pull/6/head
k8s-merge-robot 2016-07-18 20:57:35 -07:00 committed by GitHub
commit d097790b95
11 changed files with 84 additions and 41 deletions

58
Godeps/Godeps.json generated
View File

@ -225,7 +225,7 @@
},
{
"ImportPath": "github.com/codegangsta/negroni",
"Comment": "v0.1-62-g8d75e11",
"Comment": "v0.1.0-62-g8d75e11",
"Rev": "8d75e11374a1928608c906fe745b538483e7aeb2"
},
{
@ -642,68 +642,68 @@
},
{
"ImportPath": "github.com/docker/engine-api/client",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/client/transport",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/client/transport/cancellable",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/blkiodev",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/container",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/filters",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/network",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/reference",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/registry",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/strslice",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/time",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/engine-api/types/versions",
"Comment": "v0.3.1-62-g3d72d39",
"Rev": "3d72d392d07bece8d7d7b2a3b6b2e57c2df376a2"
"Comment": "v0.3.1-78-gdea108d",
"Rev": "dea108d3aa0c67d7162a3fd8aa65f38a430019fd"
},
{
"ImportPath": "github.com/docker/go-connections/nat",
@ -2123,18 +2123,22 @@
},
{
"ImportPath": "gopkg.in/gcfg.v1",
"Comment": "v1.0.0",
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
},
{
"ImportPath": "gopkg.in/gcfg.v1/scanner",
"Comment": "v1.0.0",
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
},
{
"ImportPath": "gopkg.in/gcfg.v1/token",
"Comment": "v1.0.0",
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
},
{
"ImportPath": "gopkg.in/gcfg.v1/types",
"Comment": "v1.0.0",
"Rev": "083575c3955c85df16fe9590cceab64d03f5eb6e"
},
{

View File

@ -35,6 +35,10 @@ func (cli *Client) ContainerLogs(ctx context.Context, container string, options
query.Set("timestamps", "1")
}
if options.Details {
query.Set("details", "1")
}
if options.Follow {
query.Set("follow", "1")
}

View File

@ -10,8 +10,8 @@ import (
)
// ImageLoad loads an image in the docker host from the client host.
// It's up to the caller to close the io.ReadCloser returned by
// this function.
// It's up to the caller to close the io.ReadCloser in the
// ImageLoadResponse returned by this function.
func (cli *Client) ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error) {
v := url.Values{}
v.Set("quiet", "0")

View File

@ -27,12 +27,12 @@ func (cli *Client) ImagePull(ctx context.Context, ref string, options types.Imag
query := url.Values{}
query.Set("fromImage", repository)
if tag != "" {
if tag != "" && !options.All {
query.Set("tag", tag)
}
resp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth)
if resp.statusCode == http.StatusUnauthorized {
if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil {
newAuthHeader, privilegeErr := options.PrivilegeFunc()
if privilegeErr != nil {
return nil, privilegeErr

View File

@ -10,7 +10,6 @@ import (
distreference "github.com/docker/distribution/reference"
"github.com/docker/engine-api/types"
"github.com/docker/engine-api/types/reference"
)
// ImagePush requests the docker host to push an image to a remote registry.
@ -27,7 +26,10 @@ func (cli *Client) ImagePush(ctx context.Context, ref string, options types.Imag
return nil, errors.New("cannot push a digest reference")
}
tag := reference.GetTagFromNamedRef(distributionRef)
var tag = ""
if nameTaggedRef, isNamedTagged := distributionRef.(distreference.NamedTagged); isNamedTagged {
tag = nameTaggedRef.Tag()
}
query := url.Values{}
query.Set("tag", tag)

View File

@ -6,6 +6,7 @@ import (
"net/url"
"github.com/docker/engine-api/types"
"github.com/docker/engine-api/types/filters"
"github.com/docker/engine-api/types/registry"
"golang.org/x/net/context"
)
@ -17,6 +18,14 @@ func (cli *Client) ImageSearch(ctx context.Context, term string, options types.I
query := url.Values{}
query.Set("term", term)
if options.Filters.Len() > 0 {
filterJSON, err := filters.ToParam(options.Filters)
if err != nil {
return results, err
}
query.Set("filters", filterJSON)
}
resp, err := cli.tryImageSearch(ctx, query, options.RegistryAuth)
if resp.statusCode == http.StatusUnauthorized {
newAuthHeader, privilegeErr := options.PrivilegeFunc()

View File

@ -57,6 +57,7 @@ type ContainerLogsOptions struct {
Timestamps bool
Follow bool
Tail string
Details bool
}
// ContainerRemoveOptions holds parameters to remove containers.
@ -172,12 +173,14 @@ type ImageListOptions struct {
// ImageLoadResponse returns information to the client about a load process.
type ImageLoadResponse struct {
// Body must be closed to avoid a resource leak
Body io.ReadCloser
JSON bool
}
// ImagePullOptions holds information to pull images.
type ImagePullOptions struct {
All bool
RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry
PrivilegeFunc RequestPrivilegeFunc
}
@ -203,6 +206,7 @@ type ImageRemoveOptions struct {
type ImageSearchOptions struct {
RegistryAuth string
PrivilegeFunc RequestPrivilegeFunc
Filters filters.Args
}
// ImageTagOptions holds parameters to tag an image

View File

@ -136,30 +136,49 @@ func (n UTSMode) Valid() bool {
return true
}
// PidMode represents the pid stack of the container.
// PidMode represents the pid namespace of the container.
type PidMode string
// IsPrivate indicates whether the container uses its private pid stack.
// IsPrivate indicates whether the container uses its own new pid namespace.
func (n PidMode) IsPrivate() bool {
return !(n.IsHost())
return !(n.IsHost() || n.IsContainer())
}
// IsHost indicates whether the container uses the host's pid stack.
// IsHost indicates whether the container uses the host's pid namespace.
func (n PidMode) IsHost() bool {
return n == "host"
}
// Valid indicates whether the pid stack is valid.
// IsContainer indicates whether the container uses a container's pid namespace.
func (n PidMode) IsContainer() bool {
parts := strings.SplitN(string(n), ":", 2)
return len(parts) > 1 && parts[0] == "container"
}
// Valid indicates whether the pid namespace is valid.
func (n PidMode) Valid() bool {
parts := strings.Split(string(n), ":")
switch mode := parts[0]; mode {
case "", "host":
case "container":
if len(parts) != 2 || parts[1] == "" {
return false
}
default:
return false
}
return true
}
// Container returns the name of the container whose pid namespace is going to be used.
func (n PidMode) Container() string {
parts := strings.SplitN(string(n), ":", 2)
if len(parts) > 1 {
return parts[1]
}
return ""
}
// DeviceMapping represents the device mapping between the host and the container.
type DeviceMapping struct {
PathOnHost string

View File

@ -27,6 +27,8 @@ func GetTagFromNamedRef(ref distreference.Named) string {
tag = x.Digest().String()
case distreference.NamedTagged:
tag = x.Tag()
default:
tag = "latest"
}
return tag
}

View File

@ -78,12 +78,10 @@ type IndexInfo struct {
type SearchResult struct {
// StarCount indicates the number of stars this repository has
StarCount int `json:"star_count"`
// IsOfficial indicates whether the result is an official repository or not
// IsOfficial is true if the result is from an official repository.
IsOfficial bool `json:"is_official"`
// Name is the name of the repository
Name string `json:"name"`
// IsTrusted indicates whether the result is trusted
IsTrusted bool `json:"is_trusted"`
// IsAutomated indicates whether the result is automated
IsAutomated bool `json:"is_automated"`
// Description is a textual description of the repository

View File

@ -395,6 +395,7 @@ type Volume struct {
Mountpoint string // Mountpoint is the location on disk of the volume
Status map[string]interface{} `json:",omitempty"` // Status provides low-level status information about the volume
Labels map[string]string // Labels is metadata specific to the volume
Scope string // Scope describes the level at which the volume exists (e.g. `global` for cluster-wide or `local` for machine level)
}
// VolumesListResponse contains the response for the remote API: