blob: 543836975bbe3c20c563824ebccc90226eeeb9e7 [file] [edit]
package mounts
import (
"fmt"
"github.com/moby/moby/api/types/mount"
"github.com/pkg/errors"
)
type errMountConfig struct {
mount *mount.Mount
err error
}
func (e *errMountConfig) Error() string {
return fmt.Sprintf("invalid mount config for type %q: %v", e.mount.Type, e.err.Error())
}
func errBindSourceDoesNotExist(path string) error {
return errors.Errorf("bind source path does not exist: %s", path)
}
func errExtraField(name string) error {
return errors.Errorf("field %s must not be specified", name)
}
func errMissingField(name string) error {
return errors.Errorf("field %s must not be empty", name)
}
// validateExclusiveOptions checks if the given mount config only contains
// options for the given mount-type.
func validateExclusiveOptions(mnt *mount.Mount) error {
if mnt.Type != mount.TypeBind && mnt.BindOptions != nil {
return errExtraField("BindOptions")
}
if mnt.Type != mount.TypeVolume && mnt.VolumeOptions != nil {
return errExtraField("VolumeOptions")
}
if mnt.Type != mount.TypeImage && mnt.ImageOptions != nil {
return errExtraField("ImageOptions")
}
if mnt.Type != mount.TypeTmpfs && mnt.TmpfsOptions != nil {
return errExtraField("TmpfsOptions")
}
if mnt.Type != mount.TypeCluster && mnt.ClusterOptions != nil {
return errExtraField("ClusterOptions")
}
return nil
}