| package volume |
| |
| import ( |
| "runtime" |
| |
| "github.com/docker/docker/api/types/mount" |
| ) |
| |
| const ( |
| // OSLinux is the same as runtime.GOOS on linux |
| OSLinux = "linux" |
| // OSWindows is the same as runtime.GOOS on windows |
| OSWindows = "windows" |
| ) |
| |
| // Parser represents a platform specific parser for mount expressions |
| type Parser interface { |
| ParseMountRaw(raw, volumeDriver string) (*MountPoint, error) |
| ParseMountSpec(cfg mount.Mount) (*MountPoint, error) |
| ParseVolumesFrom(spec string) (string, string, error) |
| DefaultPropagationMode() mount.Propagation |
| ConvertTmpfsOptions(opt *mount.TmpfsOptions, readOnly bool) (string, error) |
| DefaultCopyMode() bool |
| ValidateVolumeName(name string) error |
| ReadWrite(mode string) bool |
| IsBackwardCompatible(m *MountPoint) bool |
| HasResource(m *MountPoint, absPath string) bool |
| ValidateTmpfsMountDestination(dest string) error |
| |
| validateMountConfig(mt *mount.Mount) error |
| } |
| |
| // NewParser creates a parser for a given container OS, depending on the current host OS (linux on a windows host will resolve to an lcowParser) |
| func NewParser(containerOS string) Parser { |
| switch containerOS { |
| case OSWindows: |
| return &windowsParser{} |
| } |
| if runtime.GOOS == OSWindows { |
| return &lcowParser{} |
| } |
| return &linuxParser{} |
| } |