Small nitpick: create ErrVolumeTargetIsRoot in the volume package

Both lcow_parser.go and linux_parser.go are duplicating the error:
"invalid specification: destination can't be '/'"

This commit creates a new error called "ErrVolumeTargetIsRoot"
that is used by both linux_parser and lcow_parser and remove
the duplication in the code.

Signed-off-by: Boaz Shuster <ripcurld.github@gmail.com>
This commit is contained in:
Boaz Shuster 2018-01-14 11:10:49 +00:00
parent 6415f1dcf5
commit 62143af543
3 changed files with 7 additions and 3 deletions

View File

@ -2,7 +2,6 @@ package volume
import ( import (
"errors" "errors"
"fmt"
"path" "path"
"github.com/docker/docker/api/types/mount" "github.com/docker/docker/api/types/mount"
@ -10,7 +9,7 @@ import (
var lcowSpecificValidators mountValidator = func(m *mount.Mount) error { var lcowSpecificValidators mountValidator = func(m *mount.Mount) error {
if path.Clean(m.Target) == "/" { if path.Clean(m.Target) == "/" {
return fmt.Errorf("invalid specification: destination can't be '/'") return ErrVolumeTargetIsRoot
} }
if m.Type == mount.TypeNamedPipe { if m.Type == mount.TypeNamedPipe {
return errors.New("Linux containers on Windows do not support named pipe mounts") return errors.New("Linux containers on Windows do not support named pipe mounts")

View File

@ -29,7 +29,7 @@ func linuxSplitRawSpec(raw string) ([]string, error) {
func linuxValidateNotRoot(p string) error { func linuxValidateNotRoot(p string) error {
p = path.Clean(strings.Replace(p, `\`, `/`, -1)) p = path.Clean(strings.Replace(p, `\`, `/`, -1))
if p == "/" { if p == "/" {
return fmt.Errorf("invalid specification: destination can't be '/'") return ErrVolumeTargetIsRoot
} }
return nil return nil
} }

View File

@ -1,6 +1,7 @@
package volume package volume
import ( import (
"errors"
"runtime" "runtime"
"github.com/docker/docker/api/types/mount" "github.com/docker/docker/api/types/mount"
@ -13,6 +14,10 @@ const (
OSWindows = "windows" OSWindows = "windows"
) )
// ErrVolumeTargetIsRoot is returned when the target destination is root.
// It's used by both LCOW and Linux parsers.
var ErrVolumeTargetIsRoot = errors.New("invalid specification: destination can't be '/'")
// Parser represents a platform specific parser for mount expressions // Parser represents a platform specific parser for mount expressions
type Parser interface { type Parser interface {
ParseMountRaw(raw, volumeDriver string) (*MountPoint, error) ParseMountRaw(raw, volumeDriver string) (*MountPoint, error)