Skip to content

Commit fd1d8f3

Browse files
committed
api/types: move CopyToContainerOptions to api/types/container
Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 47d7c9e commit fd1d8f3

10 files changed

Lines changed: 29 additions & 24 deletions

File tree

api/types/client.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,6 @@ import (
1212
units "github.com/docker/go-units"
1313
)
1414

15-
// CopyToContainerOptions holds information
16-
// about files to copy into a container
17-
type CopyToContainerOptions struct {
18-
AllowOverwriteDirWithFile bool
19-
CopyUIDGID bool
20-
}
21-
2215
// EventsOptions holds parameters to filter events with.
2316
type EventsOptions struct {
2417
Since string

api/types/container/container.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,10 @@ type PathStat struct {
2222
Mtime time.Time `json:"mtime"`
2323
LinkTarget string `json:"linkTarget"`
2424
}
25+
26+
// CopyToContainerOptions holds information
27+
// about files to copy into a container
28+
type CopyToContainerOptions struct {
29+
AllowOverwriteDirWithFile bool
30+
CopyUIDGID bool
31+
}

api/types/types_deprecated.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,9 @@ type ContainersPruneReport = container.PruneReport
8585
//
8686
// Deprecated: use [container.PathStat].
8787
type ContainerPathStat = container.PathStat
88+
89+
// CopyToContainerOptions holds information
90+
// about files to copy into a container.
91+
//
92+
// Deprecated: use [container.CopyToContainerOptions],
93+
type CopyToContainerOptions = container.CopyToContainerOptions

client/container_copy.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"path/filepath"
1212
"strings"
1313

14-
"github.com/docker/docker/api/types"
1514
"github.com/docker/docker/api/types/container"
1615
)
1716

@@ -31,7 +30,7 @@ func (cli *Client) ContainerStatPath(ctx context.Context, containerID, path stri
3130

3231
// CopyToContainer copies content into the container filesystem.
3332
// Note that `content` must be a Reader for a TAR archive
34-
func (cli *Client) CopyToContainer(ctx context.Context, containerID, dstPath string, content io.Reader, options types.CopyToContainerOptions) error {
33+
func (cli *Client) CopyToContainer(ctx context.Context, containerID, dstPath string, content io.Reader, options container.CopyToContainerOptions) error {
3534
query := url.Values{}
3635
query.Set("path", filepath.ToSlash(dstPath)) // Normalize the paths used in the API.
3736
// Do not allow for an existing directory to be overwritten by a non-directory and vice versa.

client/container_copy_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"strings"
1212
"testing"
1313

14-
"github.com/docker/docker/api/types"
1514
"github.com/docker/docker/api/types/container"
1615
"github.com/docker/docker/errdefs"
1716
"gotest.tools/v3/assert"
@@ -98,15 +97,15 @@ func TestCopyToContainerError(t *testing.T) {
9897
client := &Client{
9998
client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")),
10099
}
101-
err := client.CopyToContainer(context.Background(), "container_id", "path/to/file", bytes.NewReader([]byte("")), types.CopyToContainerOptions{})
100+
err := client.CopyToContainer(context.Background(), "container_id", "path/to/file", bytes.NewReader([]byte("")), container.CopyToContainerOptions{})
102101
assert.Check(t, is.ErrorType(err, errdefs.IsSystem))
103102
}
104103

105104
func TestCopyToContainerNotFoundError(t *testing.T) {
106105
client := &Client{
107106
client: newMockClient(errorMock(http.StatusNotFound, "Not found")),
108107
}
109-
err := client.CopyToContainer(context.Background(), "container_id", "path/to/file", bytes.NewReader([]byte("")), types.CopyToContainerOptions{})
108+
err := client.CopyToContainer(context.Background(), "container_id", "path/to/file", bytes.NewReader([]byte("")), container.CopyToContainerOptions{})
110109
assert.Check(t, is.ErrorType(err, errdefs.IsNotFound))
111110
}
112111

@@ -116,7 +115,7 @@ func TestCopyToContainerEmptyResponse(t *testing.T) {
116115
client := &Client{
117116
client: newMockClient(errorMock(http.StatusNoContent, "No content")),
118117
}
119-
err := client.CopyToContainer(context.Background(), "container_id", "path/to/file", bytes.NewReader([]byte("")), types.CopyToContainerOptions{})
118+
err := client.CopyToContainer(context.Background(), "container_id", "path/to/file", bytes.NewReader([]byte("")), container.CopyToContainerOptions{})
120119
if err != nil {
121120
t.Fatalf("unexpected error: %v", err)
122121
}
@@ -160,7 +159,7 @@ func TestCopyToContainer(t *testing.T) {
160159
}, nil
161160
}),
162161
}
163-
err := client.CopyToContainer(context.Background(), "container_id", expectedPath, bytes.NewReader([]byte("content")), types.CopyToContainerOptions{
162+
err := client.CopyToContainer(context.Background(), "container_id", expectedPath, bytes.NewReader([]byte("content")), container.CopyToContainerOptions{
164163
AllowOverwriteDirWithFile: false,
165164
})
166165
if err != nil {

client/interface.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ type ContainerAPIClient interface {
7676
ContainerUpdate(ctx context.Context, container string, updateConfig container.UpdateConfig) (container.ContainerUpdateOKBody, error)
7777
ContainerWait(ctx context.Context, container string, condition container.WaitCondition) (<-chan container.WaitResponse, <-chan error)
7878
CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, container.PathStat, error)
79-
CopyToContainer(ctx context.Context, container, path string, content io.Reader, options types.CopyToContainerOptions) error
79+
CopyToContainer(ctx context.Context, container, path string, content io.Reader, options container.CopyToContainerOptions) error
8080
ContainersPrune(ctx context.Context, pruneFilters filters.Args) (container.PruneReport, error)
8181
}
8282

integration-cli/docker_api_containers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1188,7 +1188,7 @@ func (s *DockerAPISuite) TestPutContainerArchiveErrSymlinkInVolumeToReadOnlyRoot
11881188
apiClient, err := client.NewClientWithOpts(client.FromEnv)
11891189
assert.NilError(c, err)
11901190

1191-
err = apiClient.CopyToContainer(testutil.GetContext(c), cID, "/vol2/symlinkToAbsDir", nil, types.CopyToContainerOptions{})
1191+
err = apiClient.CopyToContainer(testutil.GetContext(c), cID, "/vol2/symlinkToAbsDir", nil, container.CopyToContainerOptions{})
11921192
assert.ErrorContains(c, err, "container rootfs is marked read-only")
11931193
}
11941194

integration/container/copy_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"testing"
1111

1212
"github.com/docker/docker/api/types"
13+
containertypes "github.com/docker/docker/api/types/container"
1314
"github.com/docker/docker/errdefs"
1415
"github.com/docker/docker/integration/internal/container"
1516
"github.com/docker/docker/pkg/archive"
@@ -54,7 +55,7 @@ func TestCopyToContainerPathDoesNotExist(t *testing.T) {
5455
apiClient := testEnv.APIClient()
5556
cid := container.Create(ctx, t, apiClient)
5657

57-
err := apiClient.CopyToContainer(ctx, cid, "/dne", nil, types.CopyToContainerOptions{})
58+
err := apiClient.CopyToContainer(ctx, cid, "/dne", nil, containertypes.CopyToContainerOptions{})
5859
assert.Check(t, is.ErrorType(err, errdefs.IsNotFound))
5960
assert.Check(t, is.ErrorContains(err, "Could not find the file /dne in container "+cid))
6061
}
@@ -67,17 +68,17 @@ func TestCopyEmptyFile(t *testing.T) {
6768

6869
// empty content
6970
dstDir, _ := makeEmptyArchive(t)
70-
err := apiClient.CopyToContainer(ctx, cid, dstDir, bytes.NewReader([]byte("")), types.CopyToContainerOptions{})
71+
err := apiClient.CopyToContainer(ctx, cid, dstDir, bytes.NewReader([]byte("")), containertypes.CopyToContainerOptions{})
7172
assert.NilError(t, err)
7273

7374
// tar with empty file
7475
dstDir, preparedArchive := makeEmptyArchive(t)
75-
err = apiClient.CopyToContainer(ctx, cid, dstDir, preparedArchive, types.CopyToContainerOptions{})
76+
err = apiClient.CopyToContainer(ctx, cid, dstDir, preparedArchive, containertypes.CopyToContainerOptions{})
7677
assert.NilError(t, err)
7778

7879
// tar with empty file archive mode
7980
dstDir, preparedArchive = makeEmptyArchive(t)
80-
err = apiClient.CopyToContainer(ctx, cid, dstDir, preparedArchive, types.CopyToContainerOptions{
81+
err = apiClient.CopyToContainer(ctx, cid, dstDir, preparedArchive, containertypes.CopyToContainerOptions{
8182
CopyUIDGID: true,
8283
})
8384
assert.NilError(t, err)
@@ -125,7 +126,7 @@ func TestCopyToContainerPathIsNotDir(t *testing.T) {
125126
if testEnv.DaemonInfo.OSType == "windows" {
126127
path = "c:/windows/system32/drivers/etc/hosts/"
127128
}
128-
err := apiClient.CopyToContainer(ctx, cid, path, nil, types.CopyToContainerOptions{})
129+
err := apiClient.CopyToContainer(ctx, cid, path, nil, containertypes.CopyToContainerOptions{})
129130
assert.Check(t, is.ErrorContains(err, "not a directory"))
130131
}
131132

integration/container/overlayfs_linux_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"strings"
66
"testing"
77

8-
"github.com/docker/docker/api/types"
8+
containertypes "github.com/docker/docker/api/types/container"
99
"github.com/docker/docker/integration/internal/container"
1010
"github.com/docker/docker/pkg/archive"
1111
"github.com/docker/docker/pkg/dmesg"
@@ -42,7 +42,7 @@ func TestNoOverlayfsWarningsAboutUndefinedBehaviors(t *testing.T) {
4242
{name: "cp to container", operation: func(t *testing.T) error {
4343
archive, err := archive.Generate("new-file", "hello-world")
4444
assert.NilError(t, err, "failed to create a temporary archive")
45-
return client.CopyToContainer(ctx, cID, "/", archive, types.CopyToContainerOptions{})
45+
return client.CopyToContainer(ctx, cID, "/", archive, containertypes.CopyToContainerOptions{})
4646
}},
4747
{name: "cp from container", operation: func(*testing.T) error {
4848
rc, _, err := client.CopyFromContainer(ctx, cID, "/file")

integration/plugin/authz/authz_plugin_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ func TestAuthzPluginEnsureContainerCopyToFrom(t *testing.T) {
416416
dstDir, preparedArchive, err := archive.PrepareArchiveCopy(srcArchive, srcInfo, archive.CopyInfo{Path: "/test"})
417417
assert.NilError(t, err)
418418

419-
err = c.CopyToContainer(ctx, cID, dstDir, preparedArchive, types.CopyToContainerOptions{})
419+
err = c.CopyToContainer(ctx, cID, dstDir, preparedArchive, containertypes.CopyToContainerOptions{})
420420
assert.NilError(t, err)
421421

422422
rdr, _, err := c.CopyFromContainer(ctx, cID, "/test")

0 commit comments

Comments
 (0)