1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #44208 from thaJeztah/container_cleanup_package_vars

daemon: replaced exported errors with errdefs
This commit is contained in:
Brian Goff 2022-09-30 09:23:36 -07:00 committed by GitHub
commit 02ee154558
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 35 deletions

View file

@ -16,11 +16,6 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
) )
// ErrExtractPointNotDirectory is used to convey that the operation to extract
// a tar archive to a directory in a container has failed because the specified
// path does not refer to a directory.
var ErrExtractPointNotDirectory = errors.New("extraction point is not a directory")
// ContainerCopy performs a deprecated operation of archiving the resource at // ContainerCopy performs a deprecated operation of archiving the resource at
// the specified path in the container identified by the given name. // the specified path in the container identified by the given name.
func (daemon *Daemon) ContainerCopy(name string, res string) (io.ReadCloser, error) { func (daemon *Daemon) ContainerCopy(name string, res string) (io.ReadCloser, error) {
@ -97,7 +92,7 @@ func (daemon *Daemon) ContainerArchivePath(name string, path string) (content io
// ContainerExtractToDir extracts the given archive to the specified location // ContainerExtractToDir extracts the given archive to the specified location
// in the filesystem of the container identified by the given name. The given // in the filesystem of the container identified by the given name. The given
// path must be of a directory in the container. If it is not, the error will // path must be of a directory in the container. If it is not, the error will
// be ErrExtractPointNotDirectory. If noOverwriteDirNonDir is true then it will // be an errdefs.InvalidParameter. If noOverwriteDirNonDir is true then it will
// be an error if unpacking the given content would cause an existing directory // be an error if unpacking the given content would cause an existing directory
// to be replaced with a non-directory and vice versa. // to be replaced with a non-directory and vice versa.
func (daemon *Daemon) ContainerExtractToDir(name, path string, copyUIDGID, noOverwriteDirNonDir bool, content io.Reader) error { func (daemon *Daemon) ContainerExtractToDir(name, path string, copyUIDGID, noOverwriteDirNonDir bool, content io.Reader) error {
@ -239,7 +234,7 @@ func (daemon *Daemon) containerArchivePath(container *container.Container, path
// containerExtractToDir extracts the given tar archive to the specified location in the // containerExtractToDir extracts the given tar archive to the specified location in the
// filesystem of this container. The given path must be of a directory in the // filesystem of this container. The given path must be of a directory in the
// container. If it is not, the error will be ErrExtractPointNotDirectory. If // container. If it is not, the error will be an errdefs.InvalidParameter. If
// noOverwriteDirNonDir is true then it will be an error if unpacking the // noOverwriteDirNonDir is true then it will be an error if unpacking the
// given content would cause an existing directory to be replaced with a non- // given content would cause an existing directory to be replaced with a non-
// directory and vice versa. // directory and vice versa.
@ -288,7 +283,7 @@ func (daemon *Daemon) containerExtractToDir(container *container.Container, path
} }
if !stat.IsDir() { if !stat.IsDir() {
return ErrExtractPointNotDirectory return errdefs.InvalidParameter(errors.New("extraction point is not a directory"))
} }
// Need to check if the path is in a volume. If it is, it cannot be in a // Need to check if the path is in a volume. If it is, it cannot be in a
@ -326,7 +321,7 @@ func (daemon *Daemon) containerExtractToDir(container *container.Container, path
} }
if !toVolume && container.HostConfig.ReadonlyRootfs { if !toVolume && container.HostConfig.ReadonlyRootfs {
return ErrRootFSReadOnly return errdefs.InvalidParameter(errors.New("container rootfs is marked read-only"))
} }
options := daemon.defaultTarCopyOptions(noOverwriteDirNonDir) options := daemon.defaultTarCopyOptions(noOverwriteDirNonDir)

View file

@ -5,7 +5,9 @@ package daemon // import "github.com/docker/docker/daemon"
import ( import (
"github.com/docker/docker/container" "github.com/docker/docker/container"
"github.com/docker/docker/errdefs"
volumemounts "github.com/docker/docker/volume/mounts" volumemounts "github.com/docker/docker/volume/mounts"
"github.com/pkg/errors"
) )
// checkIfPathIsInAVolume checks if the path is in a volume. If it is, it // checkIfPathIsInAVolume checks if the path is in a volume. If it is, it
@ -19,7 +21,7 @@ func checkIfPathIsInAVolume(container *container.Container, absPath string) (boo
if mnt.RW { if mnt.RW {
break break
} }
return false, ErrVolumeReadonly return false, errdefs.InvalidParameter(errors.New("mounted volume is marked read-only"))
} }
} }
return toVolume, nil return toVolume, nil

View file

@ -26,13 +26,6 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
var (
// ErrRootFSReadOnly is returned when a container
// rootfs is marked readonly.
ErrRootFSReadOnly = errors.New("container rootfs is marked read-only")
getPortMapInfo = getSandboxPortMapInfo
)
func (daemon *Daemon) getDNSSearchSettings(container *container.Container) []string { func (daemon *Daemon) getDNSSearchSettings(container *container.Container) []string {
if len(container.HostConfig.DNSSearch) > 0 { if len(container.HostConfig.DNSSearch) > 0 {
return container.HostConfig.DNSSearch return container.HostConfig.DNSSearch

View file

@ -883,7 +883,7 @@ func buildCreateEndpointOptions(c *container.Container, n libnetwork.Network, ep
} }
// Port-mapping rules belong to the container & applicable only to non-internal networks // Port-mapping rules belong to the container & applicable only to non-internal networks
portmaps := getSandboxPortMapInfo(sb) portmaps := getPortMapInfo(sb)
if n.Info().Internal() || len(portmaps) > 0 { if n.Info().Internal() || len(portmaps) > 0 {
return createOptions, nil return createOptions, nil
} }
@ -957,8 +957,8 @@ func buildCreateEndpointOptions(c *container.Container, n libnetwork.Network, ep
return createOptions, nil return createOptions, nil
} }
// getSandboxPortMapInfo retrieves the current port-mapping programmed for the given sandbox // getPortMapInfo retrieves the current port-mapping programmed for the given sandbox
func getSandboxPortMapInfo(sb libnetwork.Sandbox) nat.PortMap { func getPortMapInfo(sb libnetwork.Sandbox) nat.PortMap {
pm := nat.PortMap{} pm := nat.PortMap{}
if sb == nil { if sb == nil {
return pm return pm

View file

@ -21,12 +21,6 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
var (
// ErrVolumeReadonly is used to signal an error when trying to copy data into
// a volume mount that is not writable.
ErrVolumeReadonly = errors.New("mounted volume is marked read-only")
)
type mounts []container.Mount type mounts []container.Mount
// Len returns the number of mounts. Used in sorting. // Len returns the number of mounts. Used in sorting.

View file

@ -411,9 +411,7 @@ func (s *DockerCLICpSuite) TestCpToErrReadOnlyRootfs(c *testing.T) {
dstPath := containerCpPath(containerID, "/root/shouldNotExist") dstPath := containerCpPath(containerID, "/root/shouldNotExist")
err := runDockerCp(c, srcPath, dstPath) err := runDockerCp(c, srcPath, dstPath)
assert.ErrorContains(c, err, "") assert.ErrorContains(c, err, "marked read-only")
assert.Assert(c, isCpCannotCopyReadOnly(err), "expected ErrContainerRootfsReadonly error, but got %T: %s", err, err)
assert.NilError(c, containerStartOutputEquals(c, containerID, ""), "dstPath should not have existed") assert.NilError(c, containerStartOutputEquals(c, containerID, ""), "dstPath should not have existed")
} }
@ -436,8 +434,7 @@ func (s *DockerCLICpSuite) TestCpToErrReadOnlyVolume(c *testing.T) {
dstPath := containerCpPath(containerID, "/vol_ro/shouldNotExist") dstPath := containerCpPath(containerID, "/vol_ro/shouldNotExist")
err := runDockerCp(c, srcPath, dstPath) err := runDockerCp(c, srcPath, dstPath)
assert.ErrorContains(c, err, "") assert.ErrorContains(c, err, "marked read-only")
assert.Assert(c, isCpCannotCopyReadOnly(err), "expected ErrVolumeReadonly error, but got %T: %s", err, err)
assert.NilError(c, containerStartOutputEquals(c, containerID, ""), "dstPath should not have existed") assert.NilError(c, containerStartOutputEquals(c, containerID, ""), "dstPath should not have existed")
} }

View file

@ -232,10 +232,6 @@ func isCpCannotCopyDir(err error) bool {
return strings.Contains(err.Error(), archive.ErrCannotCopyDir.Error()) return strings.Contains(err.Error(), archive.ErrCannotCopyDir.Error())
} }
func isCpCannotCopyReadOnly(err error) bool {
return strings.Contains(err.Error(), "marked read-only")
}
func fileContentEquals(c *testing.T, filename, contents string) error { func fileContentEquals(c *testing.T, filename, contents string) error {
c.Helper() c.Helper()