Skip to content

Commit fcac1d5

Browse files
authored
Merge pull request #6586 from thaJeztah/bump_modules
vendor: github.com/moby/moby/api, moby/moby/client master
2 parents 606f1c6 + 053aa37 commit fcac1d5

File tree

99 files changed

+1009
-683
lines changed

Some content is hidden

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

99 files changed

+1009
-683
lines changed

cli/command/cli.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -377,24 +377,21 @@ func (cli *DockerCli) initializeFromClient() {
377377
ctx, cancel := context.WithTimeout(cli.baseCtx, cli.getInitTimeout())
378378
defer cancel()
379379

380-
ping, err := cli.client.Ping(ctx, client.PingOptions{})
380+
ping, err := cli.client.Ping(ctx, client.PingOptions{
381+
NegotiateAPIVersion: true,
382+
ForceNegotiate: true,
383+
})
381384
if err != nil {
382385
// Default to true if we fail to connect to daemon
383386
cli.serverInfo = ServerInfo{HasExperimental: true}
384-
385-
if ping.APIVersion != "" {
386-
cli.client.NegotiateAPIVersionPing(ping)
387-
}
388387
return
389388
}
390-
391389
cli.serverInfo = ServerInfo{
392390
HasExperimental: ping.Experimental,
393391
OSType: ping.OSType,
394392
BuildkitVersion: ping.BuilderVersion,
395393
SwarmStatus: ping.SwarmStatus,
396394
}
397-
cli.client.NegotiateAPIVersionPing(ping)
398395
}
399396

400397
// ContextStore returns the ContextStore

cli/command/cli_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,22 @@ type fakeClient struct {
139139
negotiated bool
140140
}
141141

142-
func (c *fakeClient) Ping(_ context.Context, _ client.PingOptions) (client.PingResult, error) {
143-
return c.pingFunc()
142+
func (c *fakeClient) Ping(_ context.Context, options client.PingOptions) (client.PingResult, error) {
143+
res, err := c.pingFunc()
144+
if options.NegotiateAPIVersion {
145+
if res.APIVersion != "" {
146+
if c.negotiated || options.ForceNegotiate {
147+
c.negotiated = true
148+
}
149+
}
150+
}
151+
return res, err
144152
}
145153

146154
func (c *fakeClient) ClientVersion() string {
147155
return c.version
148156
}
149157

150-
func (c *fakeClient) NegotiateAPIVersionPing(client.PingResult) {
151-
c.negotiated = true
152-
}
153-
154158
func TestInitializeFromClient(t *testing.T) {
155159
const defaultVersion = "v1.55"
156160

cli/command/completion/functions.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func ImageNamesWithBase(dockerCLI APIClientProvider, limit int) cobra.Completion
7777
// Set DOCKER_COMPLETION_SHOW_CONTAINER_IDS=yes to also complete IDs.
7878
func ContainerNames(dockerCLI APIClientProvider, all bool, filters ...func(container.Summary) bool) cobra.CompletionFunc {
7979
return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
80-
list, err := dockerCLI.Client().ContainerList(cmd.Context(), client.ContainerListOptions{
80+
res, err := dockerCLI.Client().ContainerList(cmd.Context(), client.ContainerListOptions{
8181
All: all,
8282
})
8383
if err != nil {
@@ -87,7 +87,7 @@ func ContainerNames(dockerCLI APIClientProvider, all bool, filters ...func(conta
8787
showContainerIDs := os.Getenv("DOCKER_COMPLETION_SHOW_CONTAINER_IDS") == "yes"
8888

8989
var names []string
90-
for _, ctr := range list {
90+
for _, ctr := range res.Items {
9191
skip := false
9292
for _, fn := range filters {
9393
if fn != nil && !fn(ctr) {

cli/command/completion/functions_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ func (c fakeCLI) Client() client.APIClient {
2828

2929
type fakeClient struct {
3030
client.Client
31-
containerListFunc func(context.Context, client.ContainerListOptions) ([]container.Summary, error)
31+
containerListFunc func(context.Context, client.ContainerListOptions) (client.ContainerListResult, error)
3232
imageListFunc func(context.Context, client.ImageListOptions) (client.ImageListResult, error)
3333
networkListFunc func(context.Context, client.NetworkListOptions) (client.NetworkListResult, error)
3434
volumeListFunc func(context.Context, client.VolumeListOptions) (client.VolumeListResult, error)
3535
}
3636

37-
func (c *fakeClient) ContainerList(ctx context.Context, options client.ContainerListOptions) ([]container.Summary, error) {
37+
func (c *fakeClient) ContainerList(ctx context.Context, options client.ContainerListOptions) (client.ContainerListResult, error) {
3838
if c.containerListFunc != nil {
3939
return c.containerListFunc(ctx, options)
4040
}
41-
return []container.Summary{}, nil
41+
return client.ContainerListResult{}, nil
4242
}
4343

4444
func (c *fakeClient) ImageList(ctx context.Context, options client.ImageListOptions) (client.ImageListResult, error) {
@@ -153,12 +153,12 @@ func TestCompleteContainerNames(t *testing.T) {
153153
t.Setenv("DOCKER_COMPLETION_SHOW_CONTAINER_IDS", "yes")
154154
}
155155
comp := ContainerNames(fakeCLI{&fakeClient{
156-
containerListFunc: func(_ context.Context, opts client.ContainerListOptions) ([]container.Summary, error) {
156+
containerListFunc: func(_ context.Context, opts client.ContainerListOptions) (client.ContainerListResult, error) {
157157
assert.Check(t, is.DeepEqual(opts, tc.expOpts))
158158
if tc.expDirective == cobra.ShellCompDirectiveError {
159-
return nil, errors.New("some error occurred")
159+
return client.ContainerListResult{}, errors.New("some error occurred")
160160
}
161-
return tc.containers, nil
161+
return client.ContainerListResult{Items: tc.containers}, nil
162162
},
163163
}}, tc.showAll, tc.filters...)
164164

cli/command/container/attach.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func RunAttach(ctx context.Context, dockerCLI command.Cli, containerID string, o
7474

7575
// request channel to wait for client
7676
waitCtx := context.WithoutCancel(ctx)
77-
resultC, errC := apiClient.ContainerWait(waitCtx, containerID, "")
77+
waitRes := apiClient.ContainerWait(waitCtx, containerID, client.ContainerWaitOptions{})
7878

7979
c, err := inspectContainerAndCheckState(ctx, apiClient, containerID)
8080
if err != nil {
@@ -152,19 +152,19 @@ func RunAttach(ctx context.Context, dockerCLI command.Cli, containerID string, o
152152
return err
153153
}
154154

155-
return getExitStatus(errC, resultC)
155+
return getExitStatus(waitRes)
156156
}
157157

158-
func getExitStatus(errC <-chan error, resultC <-chan container.WaitResponse) error {
158+
func getExitStatus(waitRes client.ContainerWaitResult) error {
159159
select {
160-
case result := <-resultC:
160+
case result := <-waitRes.Result:
161161
if result.Error != nil {
162162
return errors.New(result.Error.Message)
163163
}
164164
if result.StatusCode != 0 {
165165
return cli.StatusError{StatusCode: int(result.StatusCode)}
166166
}
167-
case err := <-errC:
167+
case err := <-waitRes.Error:
168168
return err
169169
}
170170

cli/command/container/attach_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ func TestGetExitStatus(t *testing.T) {
125125
resultC <- *testcase.result
126126
}
127127

128-
err := getExitStatus(errC, resultC)
128+
err := getExitStatus(client.ContainerWaitResult{
129+
Result: resultC,
130+
Error: errC,
131+
})
129132

130133
if testcase.expectedError == nil {
131134
assert.NilError(t, err)

cli/command/container/client_test.go

Lines changed: 52 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,35 @@ package container
33
import (
44
"context"
55
"io"
6+
"reflect"
7+
"strings"
8+
"unsafe"
69

7-
"github.com/moby/moby/api/types/container"
8-
"github.com/moby/moby/api/types/system"
910
"github.com/moby/moby/client"
1011
)
1112

13+
func mockContainerExportResult(content string) client.ContainerExportResult {
14+
out := client.ContainerExportResult{}
15+
16+
// Set unexported field "rc"
17+
v := reflect.ValueOf(&out).Elem()
18+
f := v.FieldByName("rc")
19+
r := io.NopCloser(strings.NewReader(content))
20+
reflect.NewAt(f.Type(), unsafe.Pointer(f.UnsafeAddr())).Elem().Set(reflect.ValueOf(r))
21+
return out
22+
}
23+
24+
func mockContainerLogsResult(content string) client.ContainerLogsResult {
25+
out := client.ContainerLogsResult{}
26+
27+
// Set unexported field "rc"
28+
v := reflect.ValueOf(&out).Elem()
29+
f := v.FieldByName("rc")
30+
r := io.NopCloser(strings.NewReader(content))
31+
reflect.NewAt(f.Type(), unsafe.Pointer(f.UnsafeAddr())).Elem().Set(reflect.ValueOf(r))
32+
return out
33+
}
34+
1235
type fakeClient struct {
1336
client.Client
1437
inspectFunc func(string) (client.ContainerInspectResult, error)
@@ -17,13 +40,13 @@ type fakeClient struct {
1740
createContainerFunc func(options client.ContainerCreateOptions) (client.ContainerCreateResult, error)
1841
containerStartFunc func(containerID string, options client.ContainerStartOptions) (client.ContainerStartResult, error)
1942
imageCreateFunc func(ctx context.Context, parentReference string, options client.ImageCreateOptions) (client.ImageCreateResult, error)
20-
infoFunc func() (system.Info, error)
21-
containerStatPathFunc func(containerID, path string) (container.PathStat, error)
22-
containerCopyFromFunc func(containerID, srcPath string) (io.ReadCloser, container.PathStat, error)
23-
logFunc func(string, client.ContainerLogsOptions) (io.ReadCloser, error)
24-
waitFunc func(string) (<-chan container.WaitResponse, <-chan error)
25-
containerListFunc func(client.ContainerListOptions) ([]container.Summary, error)
26-
containerExportFunc func(string) (io.ReadCloser, error)
43+
infoFunc func() (client.SystemInfoResult, error)
44+
containerStatPathFunc func(containerID, path string) (client.ContainerStatPathResult, error)
45+
containerCopyFromFunc func(containerID, srcPath string) (client.CopyFromContainerResult, error)
46+
logFunc func(string, client.ContainerLogsOptions) (client.ContainerLogsResult, error)
47+
waitFunc func(string) client.ContainerWaitResult
48+
containerListFunc func(client.ContainerListOptions) (client.ContainerListResult, error)
49+
containerExportFunc func(string) (client.ContainerExportResult, error)
2750
containerExecResizeFunc func(id string, options client.ExecResizeOptions) (client.ExecResizeResult, error)
2851
containerRemoveFunc func(ctx context.Context, containerID string, options client.ContainerRemoveOptions) (client.ContainerRemoveResult, error)
2952
containerRestartFunc func(ctx context.Context, containerID string, options client.ContainerRestartOptions) (client.ContainerRestartResult, error)
@@ -38,14 +61,14 @@ type fakeClient struct {
3861
Version string
3962
}
4063

41-
func (f *fakeClient) ContainerList(_ context.Context, options client.ContainerListOptions) ([]container.Summary, error) {
64+
func (f *fakeClient) ContainerList(_ context.Context, options client.ContainerListOptions) (client.ContainerListResult, error) {
4265
if f.containerListFunc != nil {
4366
return f.containerListFunc(options)
4467
}
45-
return []container.Summary{}, nil
68+
return client.ContainerListResult{}, nil
4669
}
4770

48-
func (f *fakeClient) ContainerInspect(_ context.Context, containerID string, options client.ContainerInspectOptions) (client.ContainerInspectResult, error) {
71+
func (f *fakeClient) ContainerInspect(_ context.Context, containerID string, _ client.ContainerInspectOptions) (client.ContainerInspectResult, error) {
4972
if f.inspectFunc != nil {
5073
return f.inspectFunc(containerID)
5174
}
@@ -91,43 +114,43 @@ func (f *fakeClient) ImageCreate(ctx context.Context, parentReference string, op
91114
return client.ImageCreateResult{}, nil
92115
}
93116

94-
func (f *fakeClient) Info(_ context.Context) (system.Info, error) {
117+
func (f *fakeClient) Info(context.Context, client.InfoOptions) (client.SystemInfoResult, error) {
95118
if f.infoFunc != nil {
96119
return f.infoFunc()
97120
}
98-
return system.Info{}, nil
121+
return client.SystemInfoResult{}, nil
99122
}
100123

101-
func (f *fakeClient) ContainerStatPath(_ context.Context, containerID, path string) (container.PathStat, error) {
124+
func (f *fakeClient) ContainerStatPath(_ context.Context, containerID string, options client.ContainerStatPathOptions) (client.ContainerStatPathResult, error) {
102125
if f.containerStatPathFunc != nil {
103-
return f.containerStatPathFunc(containerID, path)
126+
return f.containerStatPathFunc(containerID, options.Path)
104127
}
105-
return container.PathStat{}, nil
128+
return client.ContainerStatPathResult{}, nil
106129
}
107130

108-
func (f *fakeClient) CopyFromContainer(_ context.Context, containerID, srcPath string) (io.ReadCloser, container.PathStat, error) {
131+
func (f *fakeClient) CopyFromContainer(_ context.Context, containerID string, options client.CopyFromContainerOptions) (client.CopyFromContainerResult, error) {
109132
if f.containerCopyFromFunc != nil {
110-
return f.containerCopyFromFunc(containerID, srcPath)
133+
return f.containerCopyFromFunc(containerID, options.SourcePath)
111134
}
112-
return nil, container.PathStat{}, nil
135+
return client.CopyFromContainerResult{}, nil
113136
}
114137

115-
func (f *fakeClient) ContainerLogs(_ context.Context, containerID string, options client.ContainerLogsOptions) (io.ReadCloser, error) {
138+
func (f *fakeClient) ContainerLogs(_ context.Context, containerID string, options client.ContainerLogsOptions) (client.ContainerLogsResult, error) {
116139
if f.logFunc != nil {
117140
return f.logFunc(containerID, options)
118141
}
119-
return nil, nil
142+
return client.ContainerLogsResult{}, nil
120143
}
121144

122145
func (f *fakeClient) ClientVersion() string {
123146
return f.Version
124147
}
125148

126-
func (f *fakeClient) ContainerWait(_ context.Context, containerID string, _ container.WaitCondition) (<-chan container.WaitResponse, <-chan error) {
149+
func (f *fakeClient) ContainerWait(_ context.Context, containerID string, _ client.ContainerWaitOptions) client.ContainerWaitResult {
127150
if f.waitFunc != nil {
128151
return f.waitFunc(containerID)
129152
}
130-
return nil, nil
153+
return client.ContainerWaitResult{}
131154
}
132155

133156
func (f *fakeClient) ContainerStart(_ context.Context, containerID string, options client.ContainerStartOptions) (client.ContainerStartResult, error) {
@@ -137,11 +160,11 @@ func (f *fakeClient) ContainerStart(_ context.Context, containerID string, optio
137160
return client.ContainerStartResult{}, nil
138161
}
139162

140-
func (f *fakeClient) ContainerExport(_ context.Context, containerID string) (io.ReadCloser, error) {
163+
func (f *fakeClient) ContainerExport(_ context.Context, containerID string, _ client.ContainerExportOptions) (client.ContainerExportResult, error) {
141164
if f.containerExportFunc != nil {
142165
return f.containerExportFunc(containerID)
143166
}
144-
return nil, nil
167+
return client.ContainerExportResult{}, nil
145168
}
146169

147170
func (f *fakeClient) ExecResize(_ context.Context, id string, options client.ExecResizeOptions) (client.ExecResizeResult, error) {
@@ -194,12 +217,12 @@ func (f *fakeClient) ContainerDiff(ctx context.Context, containerID string, _ cl
194217
return client.ContainerDiffResult{}, nil
195218
}
196219

197-
func (f *fakeClient) ContainerRename(ctx context.Context, oldName, newName string) error {
220+
func (f *fakeClient) ContainerRename(ctx context.Context, oldName string, options client.ContainerRenameOptions) (client.ContainerRenameResult, error) {
198221
if f.containerRenameFunc != nil {
199-
return f.containerRenameFunc(ctx, oldName, newName)
222+
return client.ContainerRenameResult{}, f.containerRenameFunc(ctx, oldName, options.NewName)
200223
}
201224

202-
return nil
225+
return client.ContainerRenameResult{}, nil
203226
}
204227

205228
func (f *fakeClient) ContainerCommit(ctx context.Context, containerID string, options client.ContainerCommitOptions) (client.ContainerCommitResult, error) {

cli/command/container/completion.go

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

1010
"github.com/docker/cli/cli/command/completion"
1111
"github.com/moby/moby/api/types/container"
12+
"github.com/moby/moby/client"
1213
"github.com/moby/sys/capability"
1314
"github.com/moby/sys/signal"
1415
"github.com/spf13/cobra"
@@ -186,11 +187,11 @@ func completeLink(dockerCLI completion.APIClientProvider) cobra.CompletionFunc {
186187
// of the build-in log drivers.
187188
func completeLogDriver(dockerCLI completion.APIClientProvider) cobra.CompletionFunc {
188189
return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
189-
info, err := dockerCLI.Client().Info(cmd.Context())
190+
res, err := dockerCLI.Client().Info(cmd.Context(), client.InfoOptions{})
190191
if err != nil {
191192
return builtInLogDrivers(), cobra.ShellCompDirectiveNoFileComp
192193
}
193-
drivers := info.Plugins.Log
194+
drivers := res.Info.Plugins.Log
194195
return drivers, cobra.ShellCompDirectiveNoFileComp
195196
}
196197
}
@@ -279,12 +280,12 @@ func completeUlimit(_ *cobra.Command, _ []string, _ string) ([]string, cobra.She
279280
// completeVolumeDriver contacts the API to get the built-in and installed volume drivers.
280281
func completeVolumeDriver(dockerCLI completion.APIClientProvider) cobra.CompletionFunc {
281282
return func(cmd *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) {
282-
info, err := dockerCLI.Client().Info(cmd.Context())
283+
res, err := dockerCLI.Client().Info(cmd.Context(), client.InfoOptions{})
283284
if err != nil {
284285
// fallback: the built-in drivers
285286
return []string{"local"}, cobra.ShellCompDirectiveNoFileComp
286287
}
287-
drivers := info.Plugins.Volume
288+
drivers := res.Info.Plugins.Volume
288289
return drivers, cobra.ShellCompDirectiveNoFileComp
289290
}
290291
}

cli/command/container/completion_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func TestCompleteLinuxCapabilityNames(t *testing.T) {
2727

2828
func TestCompletePid(t *testing.T) {
2929
tests := []struct {
30-
containerListFunc func(client.ContainerListOptions) ([]container.Summary, error)
30+
containerListFunc func(client.ContainerListOptions) (client.ContainerListResult, error)
3131
toComplete string
3232
expectedCompletions []string
3333
expectedDirective cobra.ShellCompDirective
@@ -43,10 +43,12 @@ func TestCompletePid(t *testing.T) {
4343
expectedDirective: cobra.ShellCompDirectiveNoSpace,
4444
},
4545
{
46-
containerListFunc: func(client.ContainerListOptions) ([]container.Summary, error) {
47-
return []container.Summary{
48-
*builders.Container("c1"),
49-
*builders.Container("c2"),
46+
containerListFunc: func(client.ContainerListOptions) (client.ContainerListResult, error) {
47+
return client.ContainerListResult{
48+
Items: []container.Summary{
49+
*builders.Container("c1"),
50+
*builders.Container("c2"),
51+
},
5052
}, nil
5153
},
5254
toComplete: "container:",

0 commit comments

Comments
 (0)