Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit 677964f

Browse files
committed
[integration-test] merge master of GA
2 parents 310acf6 + bfea818 commit 677964f

File tree

287 files changed

+35410
-1606
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

287 files changed

+35410
-1606
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,5 @@ man/man8
3838
pyenv
3939
vendor/pkg/
4040
.idea
41-
integration-cli/util.conf
41+
integration-cli/util.conf
42+
*.yml

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.10.0-beta
1+
1.10.0

api/client/attach.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import (
44
"fmt"
55
"io"
66

7+
"golang.org/x/net/context"
8+
79
"github.com/Sirupsen/logrus"
10+
"github.com/docker/engine-api/types"
811
Cli "github.com/hyperhq/hypercli/cli"
912
flag "github.com/hyperhq/hypercli/pkg/mflag"
1013
"github.com/hyperhq/hypercli/pkg/signal"
11-
"github.com/docker/engine-api/types"
1214
)
1315

1416
// CmdAttach attaches to a running container.
@@ -23,8 +25,10 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
2325
cmd.Require(flag.Exact, 1)
2426

2527
cmd.ParseFlags(args, true)
28+
ctx := context.Background()
29+
containerID := cmd.Arg(0)
2630

27-
c, err := cli.client.ContainerInspect(cmd.Arg(0))
31+
c, err := cli.client.ContainerInspect(ctx, containerID)
2832
if err != nil {
2933
return err
3034
}
@@ -42,7 +46,7 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
4246
}
4347

4448
if c.Config.Tty && cli.isTerminalOut {
45-
if err := cli.monitorTtySize(cmd.Arg(0), false); err != nil {
49+
if err := cli.monitorTtySize(ctx, cmd.Arg(0), false); err != nil {
4650
logrus.Debugf("Error monitoring TTY size: %s", err)
4751
}
4852
}
@@ -52,12 +56,11 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
5256
}
5357

5458
options := types.ContainerAttachOptions{
55-
ContainerID: cmd.Arg(0),
56-
Stream: true,
57-
Stdin: !*noStdin && c.Config.OpenStdin,
58-
Stdout: true,
59-
Stderr: true,
60-
DetachKeys: cli.configFile.DetachKeys,
59+
Stream: true,
60+
Stdin: !*noStdin && c.Config.OpenStdin,
61+
Stdout: true,
62+
Stderr: true,
63+
DetachKeys: cli.configFile.DetachKeys,
6164
}
6265

6366
var in io.ReadCloser
@@ -66,11 +69,11 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
6669
}
6770

6871
if *proxy && !c.Config.Tty {
69-
sigc := cli.forwardAllSignals(options.ContainerID)
72+
sigc := cli.forwardAllSignals(ctx, containerID)
7073
defer signal.StopCatch(sigc)
7174
}
7275

73-
resp, err := cli.client.ContainerAttach(options)
76+
resp, err := cli.client.ContainerAttach(ctx, containerID, options)
7477
if err != nil {
7578
return err
7679
}
@@ -86,7 +89,7 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
8689
return err
8790
}
8891

89-
_, status, err := getExitCode(cli, options.ContainerID)
92+
_, status, err := getExitCode(ctx, cli, containerID)
9093
if err != nil {
9194
return err
9295
}

api/client/build.go

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"runtime"
1515
"strings"
1616

17+
"github.com/docker/engine-api/types"
18+
"github.com/docker/go-units"
1719
"github.com/hyperhq/hypercli/api"
1820
"github.com/hyperhq/hypercli/builder/dockerignore"
1921
Cli "github.com/hyperhq/hypercli/cli"
@@ -30,12 +32,10 @@ import (
3032
"github.com/hyperhq/hypercli/pkg/urlutil"
3133
"github.com/hyperhq/hypercli/reference"
3234
runconfigopts "github.com/hyperhq/hypercli/runconfig/opts"
33-
"github.com/docker/engine-api/types"
34-
"github.com/docker/engine-api/types/container"
35-
"github.com/docker/go-units"
35+
"golang.org/x/net/context"
3636
)
3737

38-
type translatorFunc func(reference.NamedTagged) (reference.Canonical, error)
38+
type translatorFunc func(context.Context, reference.NamedTagged) (reference.Canonical, error)
3939

4040
// CmdBuild builds a new image from the source code at a given path.
4141
//
@@ -63,7 +63,6 @@ func (cli *DockerCli) Build(args ...string) error {
6363
flCgroupParent := cmd.String([]string{"-cgroup-parent"}, "", "Optional parent cgroup for the container")
6464
flBuildArg := opts.NewListOpts(runconfigopts.ValidateEnv)
6565
cmd.Var(&flBuildArg, []string{"-build-arg"}, "Set build-time variables")
66-
isolation := cmd.String([]string{"-isolation"}, "", "Container isolation level")
6766

6867
ulimits := make(map[string]*units.Ulimit)
6968
flUlimits := runconfigopts.NewUlimitOpt(&ulimits)
@@ -77,8 +76,8 @@ func (cli *DockerCli) Build(args ...string) error {
7776
cmd.ParseFlags(args, true)
7877

7978
var (
80-
context io.ReadCloser
81-
err error
79+
buildCtx io.ReadCloser
80+
err error
8281
)
8382

8483
specifiedContext := cmd.Arg(0)
@@ -100,11 +99,11 @@ func (cli *DockerCli) Build(args ...string) error {
10099

101100
switch {
102101
case specifiedContext == "-":
103-
context, relDockerfile, err = getContextFromReader(cli.in, *dockerfileName)
102+
buildCtx, relDockerfile, err = getContextFromReader(cli.in, *dockerfileName)
104103
case urlutil.IsGitURL(specifiedContext):
105104
tempDir, relDockerfile, err = getContextFromGitURL(specifiedContext, *dockerfileName)
106105
case urlutil.IsURL(specifiedContext):
107-
context, relDockerfile, err = getContextFromURL(progBuff, specifiedContext, *dockerfileName)
106+
buildCtx, relDockerfile, err = getContextFromURL(progBuff, specifiedContext, *dockerfileName)
108107
default:
109108
contextDir, relDockerfile, err = getContextFromLocalDir(specifiedContext, *dockerfileName)
110109
}
@@ -121,7 +120,7 @@ func (cli *DockerCli) Build(args ...string) error {
121120
contextDir = tempDir
122121
}
123122

124-
if context == nil {
123+
if buildCtx == nil {
125124
// And canonicalize dockerfile name to a platform-independent one
126125
relDockerfile, err = archive.CanonicalTarNameForPath(relDockerfile)
127126
if err != nil {
@@ -159,7 +158,7 @@ func (cli *DockerCli) Build(args ...string) error {
159158
includes = append(includes, ".dockerignore", relDockerfile)
160159
}
161160

162-
context, err = archive.TarWithOptions(contextDir, &archive.TarOptions{
161+
buildCtx, err = archive.TarWithOptions(contextDir, &archive.TarOptions{
163162
Compression: archive.Uncompressed,
164163
ExcludePatterns: excludes,
165164
IncludeFiles: includes,
@@ -169,17 +168,19 @@ func (cli *DockerCli) Build(args ...string) error {
169168
}
170169
}
171170

171+
ctx := context.Background()
172+
172173
var resolvedTags []*resolvedTag
173174
if isTrusted() {
174175
// Wrap the tar archive to replace the Dockerfile entry with the rewritten
175176
// Dockerfile which uses trusted pulls.
176-
context = replaceDockerfileTarWrapper(context, relDockerfile, cli.trustedReference, &resolvedTags)
177+
buildCtx = replaceDockerfileTarWrapper(ctx, buildCtx, relDockerfile, cli.trustedReference, &resolvedTags)
177178
}
178179

179180
// Setup an upload progress bar
180181
progressOutput := streamformatter.NewStreamFormatter().NewProgressOutput(progBuff, true)
181182

182-
var body io.Reader = progress.NewProgressReader(context, progressOutput, 0, "", "Sending build context to Docker daemon")
183+
var body io.Reader = progress.NewProgressReader(buildCtx, progressOutput, 0, "", "Sending build context to Docker daemon")
183184

184185
var memory int64
185186
if *flMemoryString != "" {
@@ -212,7 +213,6 @@ func (cli *DockerCli) Build(args ...string) error {
212213
}
213214

214215
options := types.ImageBuildOptions{
215-
Context: body,
216216
Memory: memory,
217217
MemorySwap: memorySwap,
218218
Tags: flTags.GetAll(),
@@ -221,7 +221,6 @@ func (cli *DockerCli) Build(args ...string) error {
221221
Remove: *rm,
222222
ForceRemove: *forceRm,
223223
PullParent: *pull,
224-
IsolationLevel: container.IsolationLevel(*isolation),
225224
CPUSetCPUs: *flCPUSetCpus,
226225
CPUSetMems: *flCPUSetMems,
227226
CPUShares: *flCPUShares,
@@ -235,7 +234,7 @@ func (cli *DockerCli) Build(args ...string) error {
235234
AuthConfigs: cli.configFile.AuthConfigs,
236235
}
237236

238-
response, err := cli.client.ImageBuild(options)
237+
response, err := cli.client.ImageBuild(ctx, body, options)
239238
if err != nil {
240239
return err
241240
}
@@ -270,7 +269,7 @@ func (cli *DockerCli) Build(args ...string) error {
270269
// Since the build was successful, now we must tag any of the resolved
271270
// images from the above Dockerfile rewrite.
272271
for _, resolved := range resolvedTags {
273-
if err := cli.tagTrusted(resolved.digestRef, resolved.tagRef); err != nil {
272+
if err := cli.tagTrusted(ctx, resolved.digestRef, resolved.tagRef); err != nil {
274273
return err
275274
}
276275
}
@@ -557,7 +556,7 @@ type resolvedTag struct {
557556
// "FROM <image>" instructions to a digest reference. `translator` is a
558557
// function that takes a repository name and tag reference and returns a
559558
// trusted digest reference.
560-
func rewriteDockerfileFrom(dockerfile io.Reader, translator translatorFunc) (newDockerfile []byte, resolvedTags []*resolvedTag, err error) {
559+
func rewriteDockerfileFrom(ctx context.Context, dockerfile io.Reader, translator translatorFunc) (newDockerfile []byte, resolvedTags []*resolvedTag, err error) {
561560
scanner := bufio.NewScanner(dockerfile)
562561
buf := bytes.NewBuffer(nil)
563562

@@ -574,7 +573,7 @@ func rewriteDockerfileFrom(dockerfile io.Reader, translator translatorFunc) (new
574573
}
575574
ref = reference.WithDefaultTag(ref)
576575
if ref, ok := ref.(reference.NamedTagged); ok && isTrusted() {
577-
trustedRef, err := translator(ref)
576+
trustedRef, err := translator(ctx, ref)
578577
if err != nil {
579578
return nil, nil, err
580579
}
@@ -600,7 +599,7 @@ func rewriteDockerfileFrom(dockerfile io.Reader, translator translatorFunc) (new
600599
// replaces the entry with the given Dockerfile name with the contents of the
601600
// new Dockerfile. Returns a new tar archive stream with the replaced
602601
// Dockerfile.
603-
func replaceDockerfileTarWrapper(inputTarStream io.ReadCloser, dockerfileName string, translator translatorFunc, resolvedTags *[]*resolvedTag) io.ReadCloser {
602+
func replaceDockerfileTarWrapper(ctx context.Context, inputTarStream io.ReadCloser, dockerfileName string, translator translatorFunc, resolvedTags *[]*resolvedTag) io.ReadCloser {
604603
pipeReader, pipeWriter := io.Pipe()
605604
go func() {
606605
tarReader := tar.NewReader(inputTarStream)
@@ -627,7 +626,7 @@ func replaceDockerfileTarWrapper(inputTarStream io.ReadCloser, dockerfileName st
627626
// generated from a directory on the local filesystem, the
628627
// Dockerfile will only appear once in the archive.
629628
var newDockerfile []byte
630-
newDockerfile, *resolvedTags, err = rewriteDockerfileFrom(content, translator)
629+
newDockerfile, *resolvedTags, err = rewriteDockerfileFrom(ctx, content, translator)
631630
if err != nil {
632631
pipeWriter.CloseWithError(err)
633632
return

api/client/cli.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"runtime"
1010

1111
"github.com/docker/engine-api/client"
12+
"github.com/docker/go-connections/sockets"
1213
"github.com/docker/go-connections/tlsconfig"
1314
"github.com/hyperhq/hypercli/api"
1415
"github.com/hyperhq/hypercli/cli"
@@ -143,7 +144,7 @@ func NewDockerCli(in io.ReadCloser, out, err io.Writer, clientFlags *cli.ClientF
143144
verStr = tmpStr
144145
}
145146

146-
clientTransport, err := newClientTransport(clientFlags.Common.TLSOptions)
147+
httpClient, err := newHTTPClient(host, clientFlags.Common.TLSOptions)
147148
if err != nil {
148149
return err
149150
}
@@ -157,7 +158,7 @@ func NewDockerCli(in io.ReadCloser, out, err io.Writer, clientFlags *cli.ClientF
157158
fmt.Fprintf(cli.err, "WARNING: null cloud config\n")
158159
}
159160

160-
client, err := client.NewClient(host, verStr, clientTransport, customHeaders, cloudConfig.AccessKey, cloudConfig.SecretKey)
161+
client, err := client.NewClient(host, verStr, httpClient, customHeaders, cloudConfig.AccessKey, cloudConfig.SecretKey)
161162
if err != nil {
162163
return err
163164
}
@@ -191,16 +192,27 @@ func getServerHost(hosts []string, tlsOptions *tlsconfig.Options) (host string,
191192
return
192193
}
193194

194-
func newClientTransport(tlsOptions *tlsconfig.Options) (*http.Transport, error) {
195+
func newHTTPClient(host string, tlsOptions *tlsconfig.Options) (*http.Client, error) {
195196
if tlsOptions == nil {
196-
return &http.Transport{}, nil
197+
// let the api client configure the default transport.
198+
return nil, nil
197199
}
198200

199201
config, err := tlsconfig.Client(*tlsOptions)
200202
if err != nil {
201203
return nil, err
202204
}
203-
return &http.Transport{
205+
tr := &http.Transport{
204206
TLSClientConfig: config,
207+
}
208+
proto, addr, _, err := client.ParseHost(host)
209+
if err != nil {
210+
return nil, err
211+
}
212+
213+
sockets.ConfigureTransport(tr, proto, addr)
214+
215+
return &http.Client{
216+
Transport: tr,
205217
}, nil
206218
}

api/client/commit.go

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ package client
22

33
import (
44
"encoding/json"
5-
"errors"
65
"fmt"
76

7+
"golang.org/x/net/context"
8+
9+
"github.com/docker/engine-api/types"
10+
"github.com/docker/engine-api/types/container"
811
Cli "github.com/hyperhq/hypercli/cli"
912
"github.com/hyperhq/hypercli/opts"
1013
flag "github.com/hyperhq/hypercli/pkg/mflag"
11-
"github.com/hyperhq/hypercli/reference"
12-
"github.com/docker/engine-api/types"
13-
"github.com/docker/engine-api/types/container"
1414
)
1515

1616
// CmdCommit creates a new image from a container's changes.
@@ -31,29 +31,10 @@ func (cli *DockerCli) Commit(args ...string) error {
3131
cmd.ParseFlags(args, true)
3232

3333
var (
34-
name = cmd.Arg(0)
35-
repositoryAndTag = cmd.Arg(1)
36-
repositoryName string
37-
tag string
34+
name = cmd.Arg(0)
35+
reference = cmd.Arg(1)
3836
)
3937

40-
//Check if the given image name can be resolved
41-
if repositoryAndTag != "" {
42-
ref, err := reference.ParseNamed(repositoryAndTag)
43-
if err != nil {
44-
return err
45-
}
46-
47-
repositoryName = ref.Name()
48-
49-
switch x := ref.(type) {
50-
case reference.Canonical:
51-
return errors.New("cannot commit to digest reference")
52-
case reference.NamedTagged:
53-
tag = x.Tag()
54-
}
55-
}
56-
5738
var config *container.Config
5839
if *flConfig != "" {
5940
config = &container.Config{}
@@ -63,17 +44,15 @@ func (cli *DockerCli) Commit(args ...string) error {
6344
}
6445

6546
options := types.ContainerCommitOptions{
66-
ContainerID: name,
67-
RepositoryName: repositoryName,
68-
Tag: tag,
69-
Comment: *flComment,
70-
Author: *flAuthor,
71-
Changes: flChanges.GetAll(),
72-
Pause: *flPause,
73-
Config: config,
47+
Reference: reference,
48+
Comment: *flComment,
49+
Author: *flAuthor,
50+
Changes: flChanges.GetAll(),
51+
Pause: *flPause,
52+
Config: config,
7453
}
7554

76-
response, err := cli.client.ContainerCommit(options)
55+
response, err := cli.client.ContainerCommit(context.Background(), name, options)
7756
if err != nil {
7857
return err
7958
}

0 commit comments

Comments
 (0)