From 4bd6b6897fa071369253366ff78dff4692956257 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 25 Jul 2025 17:01:18 +0200 Subject: [PATCH] vendor: update docker, api, client to master Signed-off-by: Sebastiaan van Stijn --- cli/command/container/client_test.go | 7 +- cli/command/container/hijack.go | 4 +- cli/command/container/run_test.go | 17 ++-- cli/command/plugin/client_test.go | 24 +++--- cli/command/plugin/create.go | 3 +- cli/command/plugin/create_test.go | 6 +- cli/command/plugin/disable.go | 4 +- cli/command/plugin/disable_test.go | 8 +- cli/command/plugin/enable.go | 6 +- cli/command/plugin/enable_test.go | 8 +- cli/command/plugin/install.go | 13 +-- cli/command/plugin/install_test.go | 16 ++-- cli/command/plugin/remove.go | 4 +- cli/command/plugin/remove_test.go | 10 +-- cli/command/plugin/upgrade_test.go | 3 +- cli/command/system/df.go | 4 +- vendor.mod | 6 +- vendor.sum | 12 +-- .../github.com/moby/moby/api/types/client.go | 85 ------------------- .../moby/moby/api/types/system/disk_usage.go | 33 +++++-- .../github.com/moby/moby/api/types/types.go | 35 -------- .../moby/moby/client/client_interfaces.go | 18 ++-- .../moby/moby/client/container_attach.go | 5 +- .../moby/moby/client/container_exec.go | 3 +- vendor/github.com/moby/moby/client/hijack.go | 57 +++++++++++-- .../moby/moby/client/plugin_create.go | 9 +- .../moby/moby/client/plugin_disable.go | 9 +- .../moby/moby/client/plugin_enable.go | 9 +- .../moby/moby/client/plugin_install.go | 24 +++++- .../moby/moby/client/plugin_remove.go | 9 +- .../moby/moby/client/plugin_upgrade.go | 2 +- .../{disk_usage.go => system_disk_usage.go} | 10 +-- .../client/{events.go => system_events.go} | 0 .../moby/client/{info.go => system_info.go} | 0 vendor/modules.txt | 10 +-- 35 files changed, 223 insertions(+), 250 deletions(-) delete mode 100644 vendor/github.com/moby/moby/api/types/client.go rename vendor/github.com/moby/moby/client/{disk_usage.go => system_disk_usage.go} (62%) rename vendor/github.com/moby/moby/client/{events.go => system_events.go} (100%) rename vendor/github.com/moby/moby/client/{info.go => system_info.go} (100%) diff --git a/cli/command/container/client_test.go b/cli/command/container/client_test.go index 2e54d846d..182f6d567 100644 --- a/cli/command/container/client_test.go +++ b/cli/command/container/client_test.go @@ -4,7 +4,6 @@ import ( "context" "io" - "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/container" "github.com/moby/moby/api/types/filters" "github.com/moby/moby/api/types/image" @@ -39,7 +38,7 @@ type fakeClient struct { containerStopFunc func(ctx context.Context, containerID string, options container.StopOptions) error containerKillFunc func(ctx context.Context, containerID, signal string) error containerPruneFunc func(ctx context.Context, pruneFilters filters.Args) (container.PruneReport, error) - containerAttachFunc func(ctx context.Context, containerID string, options container.AttachOptions) (types.HijackedResponse, error) + containerAttachFunc func(ctx context.Context, containerID string, options container.AttachOptions) (client.HijackedResponse, error) containerDiffFunc func(ctx context.Context, containerID string) ([]container.FilesystemChange, error) containerRenameFunc func(ctx context.Context, oldName, newName string) error containerCommitFunc func(ctx context.Context, container string, options container.CommitOptions) (container.CommitResponse, error) @@ -195,11 +194,11 @@ func (f *fakeClient) ContainerStop(ctx context.Context, containerID string, opti return nil } -func (f *fakeClient) ContainerAttach(ctx context.Context, containerID string, options container.AttachOptions) (types.HijackedResponse, error) { +func (f *fakeClient) ContainerAttach(ctx context.Context, containerID string, options container.AttachOptions) (client.HijackedResponse, error) { if f.containerAttachFunc != nil { return f.containerAttachFunc(ctx, containerID, options) } - return types.HijackedResponse{}, nil + return client.HijackedResponse{}, nil } func (f *fakeClient) ContainerDiff(ctx context.Context, containerID string) ([]container.FilesystemChange, error) { diff --git a/cli/command/container/hijack.go b/cli/command/container/hijack.go index 217948568..192e35773 100644 --- a/cli/command/container/hijack.go +++ b/cli/command/container/hijack.go @@ -9,7 +9,7 @@ import ( "github.com/docker/cli/cli/command" "github.com/moby/moby/api/stdcopy" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "github.com/moby/term" "github.com/sirupsen/logrus" ) @@ -38,7 +38,7 @@ type hijackedIOStreamer struct { outputStream io.Writer errorStream io.Writer - resp types.HijackedResponse + resp client.HijackedResponse tty bool detachKeys string diff --git a/cli/command/container/run_test.go b/cli/command/container/run_test.go index 179a77aa9..ceccefd22 100644 --- a/cli/command/container/run_test.go +++ b/cli/command/container/run_test.go @@ -21,6 +21,7 @@ import ( "github.com/moby/moby/api/types/container" "github.com/moby/moby/api/types/image" "github.com/moby/moby/api/types/network" + "github.com/moby/moby/client" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/spf13/pflag" "gotest.tools/v3/assert" @@ -85,14 +86,14 @@ func TestRunAttach(t *testing.T) { ID: "id", }, nil }, - containerAttachFunc: func(ctx context.Context, containerID string, options container.AttachOptions) (types.HijackedResponse, error) { - server, client := net.Pipe() + containerAttachFunc: func(ctx context.Context, containerID string, options container.AttachOptions) (client.HijackedResponse, error) { + server, clientConn := net.Pipe() conn = server t.Cleanup(func() { _ = server.Close() }) attachCh <- struct{}{} - return types.NewHijackedResponse(client, types.MediaTypeRawStream), nil + return client.NewHijackedResponse(clientConn, types.MediaTypeRawStream), nil }, waitFunc: func(_ string) (<-chan container.WaitResponse, <-chan error) { responseChan := make(chan container.WaitResponse, 1) @@ -162,14 +163,14 @@ func TestRunAttachTermination(t *testing.T) { } return nil }, - containerAttachFunc: func(ctx context.Context, containerID string, options container.AttachOptions) (types.HijackedResponse, error) { - server, client := net.Pipe() + containerAttachFunc: func(ctx context.Context, containerID string, options container.AttachOptions) (client.HijackedResponse, error) { + server, clientConn := net.Pipe() conn = server t.Cleanup(func() { _ = server.Close() }) attachCh <- struct{}{} - return types.NewHijackedResponse(client, types.MediaTypeRawStream), nil + return client.NewHijackedResponse(clientConn, types.MediaTypeRawStream), nil }, waitFunc: func(_ string) (<-chan container.WaitResponse, <-chan error) { responseChan := make(chan container.WaitResponse, 1) @@ -233,8 +234,8 @@ func TestRunPullTermination(t *testing.T) { ) (container.CreateResponse, error) { return container.CreateResponse{}, errors.New("shouldn't try to create a container") }, - containerAttachFunc: func(ctx context.Context, containerID string, options container.AttachOptions) (types.HijackedResponse, error) { - return types.HijackedResponse{}, errors.New("shouldn't try to attach to a container") + containerAttachFunc: func(ctx context.Context, containerID string, options container.AttachOptions) (client.HijackedResponse, error) { + return client.HijackedResponse{}, errors.New("shouldn't try to attach to a container") }, imageCreateFunc: func(ctx context.Context, parentReference string, options image.CreateOptions) (io.ReadCloser, error) { server, client := net.Pipe() diff --git a/cli/command/plugin/client_test.go b/cli/command/plugin/client_test.go index b59761111..5e5e2430a 100644 --- a/cli/command/plugin/client_test.go +++ b/cli/command/plugin/client_test.go @@ -12,45 +12,45 @@ import ( type fakeClient struct { client.Client - pluginCreateFunc func(createContext io.Reader, createOptions types.PluginCreateOptions) error - pluginDisableFunc func(name string, disableOptions types.PluginDisableOptions) error - pluginEnableFunc func(name string, options types.PluginEnableOptions) error - pluginRemoveFunc func(name string, options types.PluginRemoveOptions) error - pluginInstallFunc func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) + pluginCreateFunc func(createContext io.Reader, createOptions client.PluginCreateOptions) error + pluginDisableFunc func(name string, disableOptions client.PluginDisableOptions) error + pluginEnableFunc func(name string, options client.PluginEnableOptions) error + pluginRemoveFunc func(name string, options client.PluginRemoveOptions) error + pluginInstallFunc func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) pluginListFunc func(filter filters.Args) (types.PluginsListResponse, error) pluginInspectFunc func(name string) (*types.Plugin, []byte, error) - pluginUpgradeFunc func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) + pluginUpgradeFunc func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) } -func (c *fakeClient) PluginCreate(_ context.Context, createContext io.Reader, createOptions types.PluginCreateOptions) error { +func (c *fakeClient) PluginCreate(_ context.Context, createContext io.Reader, createOptions client.PluginCreateOptions) error { if c.pluginCreateFunc != nil { return c.pluginCreateFunc(createContext, createOptions) } return nil } -func (c *fakeClient) PluginEnable(_ context.Context, name string, enableOptions types.PluginEnableOptions) error { +func (c *fakeClient) PluginEnable(_ context.Context, name string, enableOptions client.PluginEnableOptions) error { if c.pluginEnableFunc != nil { return c.pluginEnableFunc(name, enableOptions) } return nil } -func (c *fakeClient) PluginDisable(_ context.Context, name string, disableOptions types.PluginDisableOptions) error { +func (c *fakeClient) PluginDisable(_ context.Context, name string, disableOptions client.PluginDisableOptions) error { if c.pluginDisableFunc != nil { return c.pluginDisableFunc(name, disableOptions) } return nil } -func (c *fakeClient) PluginRemove(_ context.Context, name string, removeOptions types.PluginRemoveOptions) error { +func (c *fakeClient) PluginRemove(_ context.Context, name string, removeOptions client.PluginRemoveOptions) error { if c.pluginRemoveFunc != nil { return c.pluginRemoveFunc(name, removeOptions) } return nil } -func (c *fakeClient) PluginInstall(_ context.Context, name string, installOptions types.PluginInstallOptions) (io.ReadCloser, error) { +func (c *fakeClient) PluginInstall(_ context.Context, name string, installOptions client.PluginInstallOptions) (io.ReadCloser, error) { if c.pluginInstallFunc != nil { return c.pluginInstallFunc(name, installOptions) } @@ -77,7 +77,7 @@ func (*fakeClient) Info(context.Context) (system.Info, error) { return system.Info{}, nil } -func (c *fakeClient) PluginUpgrade(_ context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) { +func (c *fakeClient) PluginUpgrade(_ context.Context, name string, options client.PluginInstallOptions) (io.ReadCloser, error) { if c.pluginUpgradeFunc != nil { return c.pluginUpgradeFunc(name, options) } diff --git a/cli/command/plugin/create.go b/cli/command/plugin/create.go index 55f5cf270..20330a93a 100644 --- a/cli/command/plugin/create.go +++ b/cli/command/plugin/create.go @@ -14,6 +14,7 @@ import ( "github.com/moby/go-archive" "github.com/moby/go-archive/compression" "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -113,7 +114,7 @@ func runCreate(ctx context.Context, dockerCli command.Cli, options pluginCreateO return err } - err = dockerCli.Client().PluginCreate(ctx, createCtx, types.PluginCreateOptions{RepoName: options.repoName}) + err = dockerCli.Client().PluginCreate(ctx, createCtx, client.PluginCreateOptions{RepoName: options.repoName}) if err != nil { return err } diff --git a/cli/command/plugin/create_test.go b/cli/command/plugin/create_test.go index cc28b86cf..7b9b84ffb 100644 --- a/cli/command/plugin/create_test.go +++ b/cli/command/plugin/create_test.go @@ -7,7 +7,7 @@ import ( "testing" "github.com/docker/cli/internal/test" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" "gotest.tools/v3/fs" @@ -96,7 +96,7 @@ func TestCreateErrorFromDaemon(t *testing.T) { defer tmpDir.Remove() cmd := newCreateCommand(test.NewFakeCli(&fakeClient{ - pluginCreateFunc: func(createContext io.Reader, createOptions types.PluginCreateOptions) error { + pluginCreateFunc: func(createContext io.Reader, createOptions client.PluginCreateOptions) error { return errors.New("error creating plugin") }, })) @@ -113,7 +113,7 @@ func TestCreatePlugin(t *testing.T) { defer tmpDir.Remove() cli := test.NewFakeCli(&fakeClient{ - pluginCreateFunc: func(createContext io.Reader, createOptions types.PluginCreateOptions) error { + pluginCreateFunc: func(createContext io.Reader, createOptions client.PluginCreateOptions) error { return nil }, }) diff --git a/cli/command/plugin/disable.go b/cli/command/plugin/disable.go index 22713c57c..9dea678f5 100644 --- a/cli/command/plugin/disable.go +++ b/cli/command/plugin/disable.go @@ -5,12 +5,12 @@ import ( "github.com/docker/cli/cli" "github.com/docker/cli/cli/command" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "github.com/spf13/cobra" ) func newDisableCommand(dockerCLI command.Cli) *cobra.Command { - var opts types.PluginDisableOptions + var opts client.PluginDisableOptions cmd := &cobra.Command{ Use: "disable [OPTIONS] PLUGIN", diff --git a/cli/command/plugin/disable_test.go b/cli/command/plugin/disable_test.go index facb64d8a..bbf0801ad 100644 --- a/cli/command/plugin/disable_test.go +++ b/cli/command/plugin/disable_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/docker/cli/internal/test" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) @@ -15,7 +15,7 @@ func TestPluginDisableErrors(t *testing.T) { testCases := []struct { args []string expectedError string - pluginDisableFunc func(name string, disableOptions types.PluginDisableOptions) error + pluginDisableFunc func(name string, disableOptions client.PluginDisableOptions) error }{ { args: []string{}, @@ -28,7 +28,7 @@ func TestPluginDisableErrors(t *testing.T) { { args: []string{"plugin-foo"}, expectedError: "error disabling plugin", - pluginDisableFunc: func(name string, disableOptions types.PluginDisableOptions) error { + pluginDisableFunc: func(name string, disableOptions client.PluginDisableOptions) error { return errors.New("error disabling plugin") }, }, @@ -48,7 +48,7 @@ func TestPluginDisableErrors(t *testing.T) { func TestPluginDisable(t *testing.T) { cli := test.NewFakeCli(&fakeClient{ - pluginDisableFunc: func(name string, disableOptions types.PluginDisableOptions) error { + pluginDisableFunc: func(name string, disableOptions client.PluginDisableOptions) error { return nil }, }) diff --git a/cli/command/plugin/enable.go b/cli/command/plugin/enable.go index 216e07275..f1b67d782 100644 --- a/cli/command/plugin/enable.go +++ b/cli/command/plugin/enable.go @@ -6,13 +6,13 @@ import ( "github.com/docker/cli/cli" "github.com/docker/cli/cli/command" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "github.com/pkg/errors" "github.com/spf13/cobra" ) func newEnableCommand(dockerCli command.Cli) *cobra.Command { - var opts types.PluginEnableOptions + var opts client.PluginEnableOptions cmd := &cobra.Command{ Use: "enable [OPTIONS] PLUGIN", @@ -33,7 +33,7 @@ func newEnableCommand(dockerCli command.Cli) *cobra.Command { return cmd } -func runEnable(ctx context.Context, dockerCli command.Cli, name string, opts types.PluginEnableOptions) error { +func runEnable(ctx context.Context, dockerCli command.Cli, name string, opts client.PluginEnableOptions) error { if opts.Timeout < 0 { return errors.Errorf("negative timeout %d is invalid", opts.Timeout) } diff --git a/cli/command/plugin/enable_test.go b/cli/command/plugin/enable_test.go index 4f1399bcd..faba0ffe2 100644 --- a/cli/command/plugin/enable_test.go +++ b/cli/command/plugin/enable_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/docker/cli/internal/test" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) @@ -15,7 +15,7 @@ func TestPluginEnableErrors(t *testing.T) { testCases := []struct { args []string flags map[string]string - pluginEnableFunc func(name string, options types.PluginEnableOptions) error + pluginEnableFunc func(name string, options client.PluginEnableOptions) error expectedError string }{ { @@ -28,7 +28,7 @@ func TestPluginEnableErrors(t *testing.T) { }, { args: []string{"plugin-foo"}, - pluginEnableFunc: func(name string, options types.PluginEnableOptions) error { + pluginEnableFunc: func(name string, options client.PluginEnableOptions) error { return errors.New("failed to enable plugin") }, expectedError: "failed to enable plugin", @@ -58,7 +58,7 @@ func TestPluginEnableErrors(t *testing.T) { func TestPluginEnable(t *testing.T) { cli := test.NewFakeCli(&fakeClient{ - pluginEnableFunc: func(name string, options types.PluginEnableOptions) error { + pluginEnableFunc: func(name string, options client.PluginEnableOptions) error { return nil }, }) diff --git a/cli/command/plugin/install.go b/cli/command/plugin/install.go index 2d725154e..52ed13917 100644 --- a/cli/command/plugin/install.go +++ b/cli/command/plugin/install.go @@ -14,6 +14,7 @@ import ( "github.com/docker/cli/internal/registry" "github.com/moby/moby/api/types" registrytypes "github.com/moby/moby/api/types/registry" + "github.com/moby/moby/client" "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -56,13 +57,13 @@ func newInstallCommand(dockerCli command.Cli) *cobra.Command { return cmd } -func buildPullConfig(ctx context.Context, dockerCli command.Cli, opts pluginOptions) (types.PluginInstallOptions, error) { +func buildPullConfig(ctx context.Context, dockerCli command.Cli, opts pluginOptions) (client.PluginInstallOptions, error) { // Names with both tag and digest will be treated by the daemon // as a pull by digest with a local name for the tag // (if no local name is provided). ref, err := reference.ParseNormalizedNamed(opts.remote) if err != nil { - return types.PluginInstallOptions{}, err + return client.PluginInstallOptions{}, err } repoInfo, _ := registry.ParseRepositoryInfo(ref) @@ -74,12 +75,12 @@ func buildPullConfig(ctx context.Context, dockerCli command.Cli, opts pluginOpti ref = reference.TagNameOnly(ref) nt, ok := ref.(reference.NamedTagged) if !ok { - return types.PluginInstallOptions{}, errors.Errorf("invalid name: %s", ref.String()) + return client.PluginInstallOptions{}, errors.Errorf("invalid name: %s", ref.String()) } trusted, err := image.TrustedReference(ctx, dockerCli, nt) if err != nil { - return types.PluginInstallOptions{}, err + return client.PluginInstallOptions{}, err } remote = reference.FamiliarString(trusted) } @@ -87,10 +88,10 @@ func buildPullConfig(ctx context.Context, dockerCli command.Cli, opts pluginOpti authConfig := command.ResolveAuthConfig(dockerCli.ConfigFile(), repoInfo.Index) encodedAuth, err := registrytypes.EncodeAuthConfig(authConfig) if err != nil { - return types.PluginInstallOptions{}, err + return client.PluginInstallOptions{}, err } - options := types.PluginInstallOptions{ + options := client.PluginInstallOptions{ RegistryAuth: encodedAuth, RemoteRef: remote, Disabled: opts.disable, diff --git a/cli/command/plugin/install_test.go b/cli/command/plugin/install_test.go index 31f024ec1..52a7e14d4 100644 --- a/cli/command/plugin/install_test.go +++ b/cli/command/plugin/install_test.go @@ -8,7 +8,7 @@ import ( "github.com/docker/cli/internal/test" "github.com/docker/cli/internal/test/notary" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "gotest.tools/v3/assert" ) @@ -18,7 +18,7 @@ func TestInstallErrors(t *testing.T) { description string args []string expectedError string - installFunc func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) + installFunc func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) }{ { description: "insufficient number of arguments", @@ -39,7 +39,7 @@ func TestInstallErrors(t *testing.T) { description: "installation error", args: []string{"foo"}, expectedError: "error installing plugin", - installFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) { + installFunc: func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) { return nil, errors.New("error installing plugin") }, }, @@ -47,7 +47,7 @@ func TestInstallErrors(t *testing.T) { description: "installation error due to missing image", args: []string{"foo"}, expectedError: "docker image pull", - installFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) { + installFunc: func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) { return nil, errors.New("(image) when fetching") }, }, @@ -95,7 +95,7 @@ func TestInstallContentTrustErrors(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { cli := test.NewFakeCli(&fakeClient{ - pluginInstallFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) { + pluginInstallFunc: func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) { return nil, errors.New("should not try to install plugin") }, }, test.EnableContentTrust) @@ -114,13 +114,13 @@ func TestInstall(t *testing.T) { description string args []string expectedOutput string - installFunc func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) + installFunc func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) }{ { description: "install with no additional flags", args: []string{"foo"}, expectedOutput: "Installed plugin foo\n", - installFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) { + installFunc: func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) { return io.NopCloser(strings.NewReader("")), nil }, }, @@ -128,7 +128,7 @@ func TestInstall(t *testing.T) { description: "install with disable flag", args: []string{"--disable", "foo"}, expectedOutput: "Installed plugin foo\n", - installFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) { + installFunc: func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) { assert.Check(t, options.Disabled) return io.NopCloser(strings.NewReader("")), nil }, diff --git a/cli/command/plugin/remove.go b/cli/command/plugin/remove.go index 15df070ca..80d3e9dd3 100644 --- a/cli/command/plugin/remove.go +++ b/cli/command/plugin/remove.go @@ -7,7 +7,7 @@ import ( "github.com/docker/cli/cli" "github.com/docker/cli/cli/command" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "github.com/spf13/cobra" ) @@ -41,7 +41,7 @@ func runRemove(ctx context.Context, dockerCLI command.Cli, opts *rmOptions) erro var errs []error for _, name := range opts.plugins { - if err := apiClient.PluginRemove(ctx, name, types.PluginRemoveOptions{Force: opts.force}); err != nil { + if err := apiClient.PluginRemove(ctx, name, client.PluginRemoveOptions{Force: opts.force}); err != nil { errs = append(errs, err) continue } diff --git a/cli/command/plugin/remove_test.go b/cli/command/plugin/remove_test.go index 1fefe1017..ebb8fb86e 100644 --- a/cli/command/plugin/remove_test.go +++ b/cli/command/plugin/remove_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/docker/cli/internal/test" - "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) @@ -14,7 +14,7 @@ import ( func TestRemoveErrors(t *testing.T) { testCases := []struct { args []string - pluginRemoveFunc func(name string, options types.PluginRemoveOptions) error + pluginRemoveFunc func(name string, options client.PluginRemoveOptions) error expectedError string }{ { @@ -23,7 +23,7 @@ func TestRemoveErrors(t *testing.T) { }, { args: []string{"plugin-foo"}, - pluginRemoveFunc: func(name string, options types.PluginRemoveOptions) error { + pluginRemoveFunc: func(name string, options client.PluginRemoveOptions) error { return errors.New("error removing plugin") }, expectedError: "error removing plugin", @@ -44,7 +44,7 @@ func TestRemoveErrors(t *testing.T) { func TestRemove(t *testing.T) { cli := test.NewFakeCli(&fakeClient{ - pluginRemoveFunc: func(name string, options types.PluginRemoveOptions) error { + pluginRemoveFunc: func(name string, options client.PluginRemoveOptions) error { return nil }, }) @@ -57,7 +57,7 @@ func TestRemove(t *testing.T) { func TestRemoveWithForceOption(t *testing.T) { force := false cli := test.NewFakeCli(&fakeClient{ - pluginRemoveFunc: func(name string, options types.PluginRemoveOptions) error { + pluginRemoveFunc: func(name string, options client.PluginRemoveOptions) error { force = options.Force return nil }, diff --git a/cli/command/plugin/upgrade_test.go b/cli/command/plugin/upgrade_test.go index 5cc97567c..d8123aee5 100644 --- a/cli/command/plugin/upgrade_test.go +++ b/cli/command/plugin/upgrade_test.go @@ -8,6 +8,7 @@ import ( "github.com/docker/cli/internal/test" "github.com/moby/moby/api/types" + "github.com/moby/moby/client" "gotest.tools/v3/golden" ) @@ -16,7 +17,7 @@ func TestUpgradePromptTermination(t *testing.T) { t.Cleanup(cancel) cli := test.NewFakeCli(&fakeClient{ - pluginUpgradeFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) { + pluginUpgradeFunc: func(name string, options client.PluginInstallOptions) (io.ReadCloser, error) { return nil, errors.New("should not be called") }, pluginInspectFunc: func(name string) (*types.Plugin, []byte, error) { diff --git a/cli/command/system/df.go b/cli/command/system/df.go index 249156c36..f5ae60e44 100644 --- a/cli/command/system/df.go +++ b/cli/command/system/df.go @@ -8,7 +8,7 @@ import ( "github.com/docker/cli/cli/command/completion" "github.com/docker/cli/cli/command/formatter" flagsHelper "github.com/docker/cli/cli/flags" - "github.com/moby/moby/api/types" + "github.com/moby/moby/api/types/system" "github.com/spf13/cobra" ) @@ -42,7 +42,7 @@ func newDiskUsageCommand(dockerCli command.Cli) *cobra.Command { func runDiskUsage(ctx context.Context, dockerCli command.Cli, opts diskUsageOptions) error { // TODO expose types.DiskUsageOptions.Types as flag on the command-line and/or as separate commands (docker container df / docker container usage) - du, err := dockerCli.Client().DiskUsage(ctx, types.DiskUsageOptions{}) + du, err := dockerCli.Client().DiskUsage(ctx, system.DiskUsageOptions{}) if err != nil { return err } diff --git a/vendor.mod b/vendor.mod index 5a1e7cbeb..d58322814 100644 --- a/vendor.mod +++ b/vendor.mod @@ -8,8 +8,8 @@ go 1.23.0 replace ( // FIXME(thaJeztah): temporarily need to pin on commits, otherwise go modules won't resolve until these are tagged. - github.com/moby/moby/api => github.com/moby/moby/api v0.0.0-20250724140036-49306c607b72 - github.com/moby/moby/client => github.com/moby/moby/client v0.0.0-20250724140036-49306c607b72 + github.com/moby/moby/api => github.com/moby/moby/api v0.0.0-20250726000215-c4afa7715715 + github.com/moby/moby/client => github.com/moby/moby/client v0.0.0-20250726000215-c4afa7715715 ) require ( @@ -22,7 +22,7 @@ require ( github.com/distribution/reference v0.6.0 github.com/docker/cli-docs-tool v0.10.0 github.com/docker/distribution v2.8.3+incompatible - github.com/docker/docker v28.2.3-0.20250724140036-49306c607b72+incompatible // master (v29.0-dev) + github.com/docker/docker v28.2.3-0.20250726000215-c4afa7715715+incompatible // master (v29.0-dev) github.com/docker/docker-credential-helpers v0.9.3 github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 diff --git a/vendor.sum b/vendor.sum index 0e747d2a8..032514e7b 100644 --- a/vendor.sum +++ b/vendor.sum @@ -57,8 +57,8 @@ github.com/docker/cli-docs-tool v0.10.0/go.mod h1:5EM5zPnT2E7yCLERZmrDA234Vwn09f github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v28.2.3-0.20250724140036-49306c607b72+incompatible h1:jDPHkJMR6wCbKJhFijK8GfnbpesQFzzIxRnlQ9urO+s= -github.com/docker/docker v28.2.3-0.20250724140036-49306c607b72+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.2.3-0.20250726000215-c4afa7715715+incompatible h1:68v/T8kOboaoOkQHDoCoECymkwMCjA7kV/JCPuWF1cg= +github.com/docker/docker v28.2.3-0.20250726000215-c4afa7715715+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= @@ -172,10 +172,10 @@ github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3N github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= -github.com/moby/moby/api v0.0.0-20250724140036-49306c607b72 h1:8x4LgU8gdkvRQ0YCAMhG8dxUVKW31hyVZ2F1iYQg7JI= -github.com/moby/moby/api v0.0.0-20250724140036-49306c607b72/go.mod h1:VA4aMWurxqzKHCXKDSqoBx3hiJxnTStnqSG5zgc8XL0= -github.com/moby/moby/client v0.0.0-20250724140036-49306c607b72 h1:9Qub35j+NS1FltWbEWj2cJuQTeL5hCswCTEFxbqovgI= -github.com/moby/moby/client v0.0.0-20250724140036-49306c607b72/go.mod h1:Ax3ccMnrUUuchkrGDgHpXDeoI0g3MCgZy0V0vDo0+qs= +github.com/moby/moby/api v0.0.0-20250726000215-c4afa7715715 h1:UUkLPAPbTOKnuShYw9Qtzp2A8MAqLX0uUcGLMp88ZnI= +github.com/moby/moby/api v0.0.0-20250726000215-c4afa7715715/go.mod h1:VA4aMWurxqzKHCXKDSqoBx3hiJxnTStnqSG5zgc8XL0= +github.com/moby/moby/client v0.0.0-20250726000215-c4afa7715715 h1:clo9erZs096YQdhoocHEV99JEZ6BXriBXTVvugenHr4= +github.com/moby/moby/client v0.0.0-20250726000215-c4afa7715715/go.mod h1:Ax3ccMnrUUuchkrGDgHpXDeoI0g3MCgZy0V0vDo0+qs= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/swarmkit/v2 v2.0.0 h1:jkWQKQaJ4ltA61/mC9UdPe1McLma55RUcacTO+pPweY= diff --git a/vendor/github.com/moby/moby/api/types/client.go b/vendor/github.com/moby/moby/api/types/client.go deleted file mode 100644 index 087dc6db7..000000000 --- a/vendor/github.com/moby/moby/api/types/client.go +++ /dev/null @@ -1,85 +0,0 @@ -package types - -import ( - "bufio" - "context" - "net" -) - -// NewHijackedResponse initializes a [HijackedResponse] type. -func NewHijackedResponse(conn net.Conn, mediaType string) HijackedResponse { - return HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn), mediaType: mediaType} -} - -// HijackedResponse holds connection information for a hijacked request. -type HijackedResponse struct { - mediaType string - Conn net.Conn - Reader *bufio.Reader -} - -// Close closes the hijacked connection and reader. -func (h *HijackedResponse) Close() { - h.Conn.Close() -} - -// MediaType let client know if HijackedResponse hold a raw or multiplexed stream. -// returns false if HTTP Content-Type is not relevant, and container must be inspected -func (h *HijackedResponse) MediaType() (string, bool) { - if h.mediaType == "" { - return "", false - } - return h.mediaType, true -} - -// CloseWriter is an interface that implements structs -// that close input streams to prevent from writing. -type CloseWriter interface { - CloseWrite() error -} - -// CloseWrite closes a readWriter for writing. -func (h *HijackedResponse) CloseWrite() error { - if conn, ok := h.Conn.(CloseWriter); ok { - return conn.CloseWrite() - } - return nil -} - -// PluginRemoveOptions holds parameters to remove plugins. -type PluginRemoveOptions struct { - Force bool -} - -// PluginEnableOptions holds parameters to enable plugins. -type PluginEnableOptions struct { - Timeout int -} - -// PluginDisableOptions holds parameters to disable plugins. -type PluginDisableOptions struct { - Force bool -} - -// PluginInstallOptions holds parameters to install a plugin. -type PluginInstallOptions struct { - Disabled bool - AcceptAllPermissions bool - RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry - RemoteRef string // RemoteRef is the plugin name on the registry - - // PrivilegeFunc is a function that clients can supply to retry operations - // after getting an authorization error. This function returns the registry - // authentication header value in base64 encoded format, or an error if the - // privilege request fails. - // - // For details, refer to [github.com/moby/moby/api/types/registry.RequestAuthConfig]. - PrivilegeFunc func(context.Context) (string, error) - AcceptPermissionsFunc func(context.Context, PluginPrivileges) (bool, error) - Args []string -} - -// PluginCreateOptions hold all options to plugin create. -type PluginCreateOptions struct { - RepoName string -} diff --git a/vendor/github.com/moby/moby/api/types/system/disk_usage.go b/vendor/github.com/moby/moby/api/types/system/disk_usage.go index 333a7c7fc..0f8308c9b 100644 --- a/vendor/github.com/moby/moby/api/types/system/disk_usage.go +++ b/vendor/github.com/moby/moby/api/types/system/disk_usage.go @@ -7,11 +7,34 @@ import ( "github.com/moby/moby/api/types/volume" ) -// DiskUsage contains response of Engine API for API 1.49 and greater: +// DiskUsageObject represents an object type used for disk usage query filtering. +type DiskUsageObject string + +const ( + // ContainerObject represents a container DiskUsageObject. + ContainerObject DiskUsageObject = "container" + // ImageObject represents an image DiskUsageObject. + ImageObject DiskUsageObject = "image" + // VolumeObject represents a volume DiskUsageObject. + VolumeObject DiskUsageObject = "volume" + // BuildCacheObject represents a build-cache DiskUsageObject. + BuildCacheObject DiskUsageObject = "build-cache" +) + +// DiskUsageOptions holds parameters for system disk usage query. +type DiskUsageOptions struct { + // Types specifies what object types to include in the response. If empty, + // all object types are returned. + Types []DiskUsageObject +} + +// DiskUsage contains response of Engine API: // GET "/system/df" type DiskUsage struct { - Images *image.DiskUsage - Containers *container.DiskUsage - Volumes *volume.DiskUsage - BuildCache *build.CacheDiskUsage + LayersSize int64 + Images []*image.Summary + Containers []*container.Summary + Volumes []*volume.Volume + BuildCache []*build.CacheRecord + BuilderSize int64 `json:",omitempty"` // Deprecated: deprecated in API 1.38, and no longer used since API 1.40. } diff --git a/vendor/github.com/moby/moby/api/types/types.go b/vendor/github.com/moby/moby/api/types/types.go index 83676e42e..3d00f354b 100644 --- a/vendor/github.com/moby/moby/api/types/types.go +++ b/vendor/github.com/moby/moby/api/types/types.go @@ -2,10 +2,7 @@ package types import ( "github.com/moby/moby/api/types/build" - "github.com/moby/moby/api/types/container" - "github.com/moby/moby/api/types/image" "github.com/moby/moby/api/types/swarm" - "github.com/moby/moby/api/types/volume" ) const ( @@ -61,38 +58,6 @@ type Version struct { BuildTime string `json:",omitempty"` } -// DiskUsageObject represents an object type used for disk usage query filtering. -type DiskUsageObject string - -const ( - // ContainerObject represents a container DiskUsageObject. - ContainerObject DiskUsageObject = "container" - // ImageObject represents an image DiskUsageObject. - ImageObject DiskUsageObject = "image" - // VolumeObject represents a volume DiskUsageObject. - VolumeObject DiskUsageObject = "volume" - // BuildCacheObject represents a build-cache DiskUsageObject. - BuildCacheObject DiskUsageObject = "build-cache" -) - -// DiskUsageOptions holds parameters for system disk usage query. -type DiskUsageOptions struct { - // Types specifies what object types to include in the response. If empty, - // all object types are returned. - Types []DiskUsageObject -} - -// DiskUsage contains response of Engine API: -// GET "/system/df" -type DiskUsage struct { - LayersSize int64 - Images []*image.Summary - Containers []*container.Summary - Volumes []*volume.Volume - BuildCache []*build.CacheRecord - BuilderSize int64 `json:",omitempty"` // Deprecated: deprecated in API 1.38, and no longer used since API 1.40. -} - // PushResult contains the tag, manifest digest, and manifest size from the // push. It's used to signal this information to the trust code in the client // so it can sign the manifest if necessary. diff --git a/vendor/github.com/moby/moby/client/client_interfaces.go b/vendor/github.com/moby/moby/client/client_interfaces.go index 04ff0abf6..fc9369081 100644 --- a/vendor/github.com/moby/moby/client/client_interfaces.go +++ b/vendor/github.com/moby/moby/client/client_interfaces.go @@ -64,11 +64,11 @@ type HijackDialer interface { // ContainerAPIClient defines API client methods for the containers type ContainerAPIClient interface { - ContainerAttach(ctx context.Context, container string, options container.AttachOptions) (types.HijackedResponse, error) + ContainerAttach(ctx context.Context, container string, options container.AttachOptions) (HijackedResponse, error) ContainerCommit(ctx context.Context, container string, options container.CommitOptions) (container.CommitResponse, error) ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, platform *ocispec.Platform, containerName string) (container.CreateResponse, error) ContainerDiff(ctx context.Context, container string) ([]container.FilesystemChange, error) - ContainerExecAttach(ctx context.Context, execID string, options container.ExecAttachOptions) (types.HijackedResponse, error) + ContainerExecAttach(ctx context.Context, execID string, options container.ExecAttachOptions) (HijackedResponse, error) ContainerExecCreate(ctx context.Context, container string, options container.ExecOptions) (container.ExecCreateResponse, error) ContainerExecInspect(ctx context.Context, execID string) (container.ExecInspect, error) ContainerExecResize(ctx context.Context, execID string, options container.ResizeOptions) error @@ -148,15 +148,15 @@ type NodeAPIClient interface { // PluginAPIClient defines API client methods for the plugins type PluginAPIClient interface { PluginList(ctx context.Context, filter filters.Args) (types.PluginsListResponse, error) - PluginRemove(ctx context.Context, name string, options types.PluginRemoveOptions) error - PluginEnable(ctx context.Context, name string, options types.PluginEnableOptions) error - PluginDisable(ctx context.Context, name string, options types.PluginDisableOptions) error - PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) - PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) + PluginRemove(ctx context.Context, name string, options PluginRemoveOptions) error + PluginEnable(ctx context.Context, name string, options PluginEnableOptions) error + PluginDisable(ctx context.Context, name string, options PluginDisableOptions) error + PluginInstall(ctx context.Context, name string, options PluginInstallOptions) (io.ReadCloser, error) + PluginUpgrade(ctx context.Context, name string, options PluginInstallOptions) (io.ReadCloser, error) PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error) PluginSet(ctx context.Context, name string, args []string) error PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error) - PluginCreate(ctx context.Context, createContext io.Reader, options types.PluginCreateOptions) error + PluginCreate(ctx context.Context, createContext io.Reader, options PluginCreateOptions) error } // ServiceAPIClient defines API client methods for the services @@ -188,7 +188,7 @@ type SystemAPIClient interface { Events(ctx context.Context, options events.ListOptions) (<-chan events.Message, <-chan error) Info(ctx context.Context) (system.Info, error) RegistryLogin(ctx context.Context, auth registry.AuthConfig) (registry.AuthenticateOKBody, error) - DiskUsage(ctx context.Context, options types.DiskUsageOptions) (types.DiskUsage, error) + DiskUsage(ctx context.Context, options system.DiskUsageOptions) (system.DiskUsage, error) Ping(ctx context.Context) (types.Ping, error) } diff --git a/vendor/github.com/moby/moby/client/container_attach.go b/vendor/github.com/moby/moby/client/container_attach.go index 194e3ab16..c8993f915 100644 --- a/vendor/github.com/moby/moby/client/container_attach.go +++ b/vendor/github.com/moby/moby/client/container_attach.go @@ -5,7 +5,6 @@ import ( "net/http" "net/url" - "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/container" ) @@ -33,10 +32,10 @@ import ( // // You can use github.com/moby/moby/api/stdcopy.StdCopy to demultiplex this // stream. -func (cli *Client) ContainerAttach(ctx context.Context, containerID string, options container.AttachOptions) (types.HijackedResponse, error) { +func (cli *Client) ContainerAttach(ctx context.Context, containerID string, options container.AttachOptions) (HijackedResponse, error) { containerID, err := trimID("container", containerID) if err != nil { - return types.HijackedResponse{}, err + return HijackedResponse{}, err } query := url.Values{} diff --git a/vendor/github.com/moby/moby/client/container_exec.go b/vendor/github.com/moby/moby/client/container_exec.go index 237d44dd2..efad42e23 100644 --- a/vendor/github.com/moby/moby/client/container_exec.go +++ b/vendor/github.com/moby/moby/client/container_exec.go @@ -5,7 +5,6 @@ import ( "encoding/json" "net/http" - "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/container" "github.com/moby/moby/api/types/versions" ) @@ -80,7 +79,7 @@ func (cli *Client) ContainerExecStart(ctx context.Context, execID string, config // You can use [github.com/moby/moby/api/stdcopy.StdCopy] to demultiplex this // stream. Refer to [Client.ContainerAttach] for details about the multiplexed // stream. -func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config container.ExecAttachOptions) (types.HijackedResponse, error) { +func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config container.ExecAttachOptions) (HijackedResponse, error) { if versions.LessThan(cli.ClientVersion(), "1.42") { config.ConsoleSize = nil } diff --git a/vendor/github.com/moby/moby/client/hijack.go b/vendor/github.com/moby/moby/client/hijack.go index a118e229b..2210b1344 100644 --- a/vendor/github.com/moby/moby/client/hijack.go +++ b/vendor/github.com/moby/moby/client/hijack.go @@ -9,25 +9,24 @@ import ( "net/url" "time" - "github.com/moby/moby/api/types" "github.com/moby/moby/api/types/versions" "github.com/pkg/errors" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ) // postHijacked sends a POST request and hijacks the connection. -func (cli *Client) postHijacked(ctx context.Context, path string, query url.Values, body interface{}, headers map[string][]string) (types.HijackedResponse, error) { +func (cli *Client) postHijacked(ctx context.Context, path string, query url.Values, body interface{}, headers map[string][]string) (HijackedResponse, error) { jsonBody, err := jsonEncode(body) if err != nil { - return types.HijackedResponse{}, err + return HijackedResponse{}, err } req, err := cli.buildRequest(ctx, http.MethodPost, cli.getAPIPath(ctx, path, query), jsonBody, headers) if err != nil { - return types.HijackedResponse{}, err + return HijackedResponse{}, err } conn, mediaType, err := setupHijackConn(cli.dialer(), req, "tcp") if err != nil { - return types.HijackedResponse{}, err + return HijackedResponse{}, err } if versions.LessThan(cli.ClientVersion(), "1.42") { @@ -35,7 +34,7 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu mediaType = "" } - return types.NewHijackedResponse(conn, mediaType), nil + return NewHijackedResponse(conn, mediaType), nil } // DialHijack returns a hijacked connection with negotiated protocol proto. @@ -91,7 +90,7 @@ func setupHijackConn(dialer func(context.Context) (net.Conn, error), req *http.R // If there is buffered content, wrap the connection. We return an // object that implements CloseWrite if the underlying connection // implements it. - if _, ok := hc.Conn.(types.CloseWriter); ok { + if _, ok := hc.Conn.(CloseWriter); ok { conn = &hijackedConnCloseWriter{hc} } else { conn = hc @@ -131,9 +130,49 @@ type hijackedConnCloseWriter struct { *hijackedConn } -var _ types.CloseWriter = &hijackedConnCloseWriter{} +var _ CloseWriter = &hijackedConnCloseWriter{} func (c *hijackedConnCloseWriter) CloseWrite() error { - conn := c.Conn.(types.CloseWriter) + conn := c.Conn.(CloseWriter) return conn.CloseWrite() } + +// NewHijackedResponse initializes a [HijackedResponse] type. +func NewHijackedResponse(conn net.Conn, mediaType string) HijackedResponse { + return HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn), mediaType: mediaType} +} + +// HijackedResponse holds connection information for a hijacked request. +type HijackedResponse struct { + mediaType string + Conn net.Conn + Reader *bufio.Reader +} + +// Close closes the hijacked connection and reader. +func (h *HijackedResponse) Close() { + h.Conn.Close() +} + +// MediaType let client know if HijackedResponse hold a raw or multiplexed stream. +// returns false if HTTP Content-Type is not relevant, and container must be inspected +func (h *HijackedResponse) MediaType() (string, bool) { + if h.mediaType == "" { + return "", false + } + return h.mediaType, true +} + +// CloseWriter is an interface that implements structs +// that close input streams to prevent from writing. +type CloseWriter interface { + CloseWrite() error +} + +// CloseWrite closes a readWriter for writing. +func (h *HijackedResponse) CloseWrite() error { + if conn, ok := h.Conn.(CloseWriter); ok { + return conn.CloseWrite() + } + return nil +} diff --git a/vendor/github.com/moby/moby/client/plugin_create.go b/vendor/github.com/moby/moby/client/plugin_create.go index e7b03fcc5..b1216c122 100644 --- a/vendor/github.com/moby/moby/client/plugin_create.go +++ b/vendor/github.com/moby/moby/client/plugin_create.go @@ -5,12 +5,15 @@ import ( "io" "net/http" "net/url" - - "github.com/moby/moby/api/types" ) +// PluginCreateOptions hold all options to plugin create. +type PluginCreateOptions struct { + RepoName string +} + // PluginCreate creates a plugin -func (cli *Client) PluginCreate(ctx context.Context, createContext io.Reader, createOptions types.PluginCreateOptions) error { +func (cli *Client) PluginCreate(ctx context.Context, createContext io.Reader, createOptions PluginCreateOptions) error { headers := http.Header(make(map[string][]string)) headers.Set("Content-Type", "application/x-tar") diff --git a/vendor/github.com/moby/moby/client/plugin_disable.go b/vendor/github.com/moby/moby/client/plugin_disable.go index 2f37f1096..3f728ab30 100644 --- a/vendor/github.com/moby/moby/client/plugin_disable.go +++ b/vendor/github.com/moby/moby/client/plugin_disable.go @@ -3,12 +3,15 @@ package client import ( "context" "net/url" - - "github.com/moby/moby/api/types" ) +// PluginDisableOptions holds parameters to disable plugins. +type PluginDisableOptions struct { + Force bool +} + // PluginDisable disables a plugin -func (cli *Client) PluginDisable(ctx context.Context, name string, options types.PluginDisableOptions) error { +func (cli *Client) PluginDisable(ctx context.Context, name string, options PluginDisableOptions) error { name, err := trimID("plugin", name) if err != nil { return err diff --git a/vendor/github.com/moby/moby/client/plugin_enable.go b/vendor/github.com/moby/moby/client/plugin_enable.go index 598b19e6f..5d534c456 100644 --- a/vendor/github.com/moby/moby/client/plugin_enable.go +++ b/vendor/github.com/moby/moby/client/plugin_enable.go @@ -4,12 +4,15 @@ import ( "context" "net/url" "strconv" - - "github.com/moby/moby/api/types" ) +// PluginEnableOptions holds parameters to enable plugins. +type PluginEnableOptions struct { + Timeout int +} + // PluginEnable enables a plugin -func (cli *Client) PluginEnable(ctx context.Context, name string, options types.PluginEnableOptions) error { +func (cli *Client) PluginEnable(ctx context.Context, name string, options PluginEnableOptions) error { name, err := trimID("plugin", name) if err != nil { return err diff --git a/vendor/github.com/moby/moby/client/plugin_install.go b/vendor/github.com/moby/moby/client/plugin_install.go index 5da687fd2..e78577c49 100644 --- a/vendor/github.com/moby/moby/client/plugin_install.go +++ b/vendor/github.com/moby/moby/client/plugin_install.go @@ -14,8 +14,26 @@ import ( "github.com/pkg/errors" ) +// PluginInstallOptions holds parameters to install a plugin. +type PluginInstallOptions struct { + Disabled bool + AcceptAllPermissions bool + RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry + RemoteRef string // RemoteRef is the plugin name on the registry + + // PrivilegeFunc is a function that clients can supply to retry operations + // after getting an authorization error. This function returns the registry + // authentication header value in base64 encoded format, or an error if the + // privilege request fails. + // + // For details, refer to [github.com/moby/moby/api/types/registry.RequestAuthConfig]. + PrivilegeFunc func(context.Context) (string, error) + AcceptPermissionsFunc func(context.Context, types.PluginPrivileges) (bool, error) + Args []string +} + // PluginInstall installs a plugin -func (cli *Client) PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (_ io.ReadCloser, retErr error) { +func (cli *Client) PluginInstall(ctx context.Context, name string, options PluginInstallOptions) (_ io.ReadCloser, retErr error) { query := url.Values{} if _, err := reference.ParseNormalizedNamed(options.RemoteRef); err != nil { return nil, errors.Wrap(err, "invalid remote reference") @@ -62,7 +80,7 @@ func (cli *Client) PluginInstall(ctx context.Context, name string, options types return } - enableErr := cli.PluginEnable(ctx, name, types.PluginEnableOptions{Timeout: 0}) + enableErr := cli.PluginEnable(ctx, name, PluginEnableOptions{Timeout: 0}) _ = pw.CloseWithError(enableErr) }() return pr, nil @@ -80,7 +98,7 @@ func (cli *Client) tryPluginPull(ctx context.Context, query url.Values, privileg }) } -func (cli *Client) checkPluginPermissions(ctx context.Context, query url.Values, options types.PluginInstallOptions) (types.PluginPrivileges, error) { +func (cli *Client) checkPluginPermissions(ctx context.Context, query url.Values, options PluginInstallOptions) (types.PluginPrivileges, error) { resp, err := cli.tryPluginPrivileges(ctx, query, options.RegistryAuth) if cerrdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { // todo: do inspect before to check existing name before checking privileges diff --git a/vendor/github.com/moby/moby/client/plugin_remove.go b/vendor/github.com/moby/moby/client/plugin_remove.go index 858d9471d..fee1a7ad3 100644 --- a/vendor/github.com/moby/moby/client/plugin_remove.go +++ b/vendor/github.com/moby/moby/client/plugin_remove.go @@ -3,12 +3,15 @@ package client import ( "context" "net/url" - - "github.com/moby/moby/api/types" ) +// PluginRemoveOptions holds parameters to remove plugins. +type PluginRemoveOptions struct { + Force bool +} + // PluginRemove removes a plugin -func (cli *Client) PluginRemove(ctx context.Context, name string, options types.PluginRemoveOptions) error { +func (cli *Client) PluginRemove(ctx context.Context, name string, options PluginRemoveOptions) error { name, err := trimID("plugin", name) if err != nil { return err diff --git a/vendor/github.com/moby/moby/client/plugin_upgrade.go b/vendor/github.com/moby/moby/client/plugin_upgrade.go index a20db3ec0..6397a14f2 100644 --- a/vendor/github.com/moby/moby/client/plugin_upgrade.go +++ b/vendor/github.com/moby/moby/client/plugin_upgrade.go @@ -13,7 +13,7 @@ import ( ) // PluginUpgrade upgrades a plugin -func (cli *Client) PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) { +func (cli *Client) PluginUpgrade(ctx context.Context, name string, options PluginInstallOptions) (io.ReadCloser, error) { name, err := trimID("plugin", name) if err != nil { return nil, err diff --git a/vendor/github.com/moby/moby/client/disk_usage.go b/vendor/github.com/moby/moby/client/system_disk_usage.go similarity index 62% rename from vendor/github.com/moby/moby/client/disk_usage.go rename to vendor/github.com/moby/moby/client/system_disk_usage.go index 31a261a10..a26ad99d8 100644 --- a/vendor/github.com/moby/moby/client/disk_usage.go +++ b/vendor/github.com/moby/moby/client/system_disk_usage.go @@ -6,11 +6,11 @@ import ( "fmt" "net/url" - "github.com/moby/moby/api/types" + "github.com/moby/moby/api/types/system" ) // DiskUsage requests the current data usage from the daemon -func (cli *Client) DiskUsage(ctx context.Context, options types.DiskUsageOptions) (types.DiskUsage, error) { +func (cli *Client) DiskUsage(ctx context.Context, options system.DiskUsageOptions) (system.DiskUsage, error) { var query url.Values if len(options.Types) > 0 { query = url.Values{} @@ -22,12 +22,12 @@ func (cli *Client) DiskUsage(ctx context.Context, options types.DiskUsageOptions resp, err := cli.get(ctx, "/system/df", query, nil) defer ensureReaderClosed(resp) if err != nil { - return types.DiskUsage{}, err + return system.DiskUsage{}, err } - var du types.DiskUsage + var du system.DiskUsage if err := json.NewDecoder(resp.Body).Decode(&du); err != nil { - return types.DiskUsage{}, fmt.Errorf("Error retrieving disk usage: %v", err) + return system.DiskUsage{}, fmt.Errorf("Error retrieving disk usage: %v", err) } return du, nil } diff --git a/vendor/github.com/moby/moby/client/events.go b/vendor/github.com/moby/moby/client/system_events.go similarity index 100% rename from vendor/github.com/moby/moby/client/events.go rename to vendor/github.com/moby/moby/client/system_events.go diff --git a/vendor/github.com/moby/moby/client/info.go b/vendor/github.com/moby/moby/client/system_info.go similarity index 100% rename from vendor/github.com/moby/moby/client/info.go rename to vendor/github.com/moby/moby/client/system_info.go diff --git a/vendor/modules.txt b/vendor/modules.txt index f4115c073..124a25cce 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -65,7 +65,7 @@ github.com/docker/distribution/registry/client/transport github.com/docker/distribution/registry/storage/cache github.com/docker/distribution/registry/storage/cache/memory github.com/docker/distribution/uuid -# github.com/docker/docker v28.2.3-0.20250724140036-49306c607b72+incompatible +# github.com/docker/docker v28.2.3-0.20250726000215-c4afa7715715+incompatible ## explicit github.com/docker/docker/pkg/jsonmessage github.com/docker/docker/pkg/process @@ -174,7 +174,7 @@ github.com/moby/docker-image-spec/specs-go/v1 github.com/moby/go-archive github.com/moby/go-archive/compression github.com/moby/go-archive/tarheader -# github.com/moby/moby/api v0.0.0 => github.com/moby/moby/api v0.0.0-20250724140036-49306c607b72 +# github.com/moby/moby/api v0.0.0 => github.com/moby/moby/api v0.0.0-20250726000215-c4afa7715715 ## explicit; go 1.23.0 github.com/moby/moby/api/stdcopy github.com/moby/moby/api/types @@ -198,7 +198,7 @@ github.com/moby/moby/api/types/system github.com/moby/moby/api/types/time github.com/moby/moby/api/types/versions github.com/moby/moby/api/types/volume -# github.com/moby/moby/client v0.0.0 => github.com/moby/moby/client v0.0.0-20250724140036-49306c607b72 +# github.com/moby/moby/client v0.0.0 => github.com/moby/moby/client v0.0.0-20250726000215-c4afa7715715 ## explicit; go 1.23.0 github.com/moby/moby/client # github.com/moby/patternmatcher v0.6.0 @@ -571,5 +571,5 @@ gotest.tools/v3/skip # tags.cncf.io/container-device-interface v0.8.0 ## explicit; go 1.20 tags.cncf.io/container-device-interface/pkg/parser -# github.com/moby/moby/api => github.com/moby/moby/api v0.0.0-20250724140036-49306c607b72 -# github.com/moby/moby/client => github.com/moby/moby/client v0.0.0-20250724140036-49306c607b72 +# github.com/moby/moby/api => github.com/moby/moby/api v0.0.0-20250726000215-c4afa7715715 +# github.com/moby/moby/client => github.com/moby/moby/client v0.0.0-20250726000215-c4afa7715715