2015-05-19 16:05:25 -04:00
|
|
|
package volume
|
|
|
|
|
|
|
|
const DefaultDriverName = "local"
|
|
|
|
|
|
|
|
type Driver interface {
|
|
|
|
// Name returns the name of the volume driver.
|
|
|
|
Name() string
|
|
|
|
// Create makes a new volume with the given id.
|
|
|
|
Create(string) (Volume, error)
|
|
|
|
// Remove deletes the volume.
|
|
|
|
Remove(Volume) error
|
|
|
|
}
|
|
|
|
|
|
|
|
type Volume interface {
|
|
|
|
// Name returns the name of the volume
|
|
|
|
Name() string
|
|
|
|
// DriverName returns the name of the driver which owns this volume.
|
|
|
|
DriverName() string
|
|
|
|
// Path returns the absolute path to the volume.
|
|
|
|
Path() string
|
|
|
|
// Mount mounts the volume and returns the absolute path to
|
|
|
|
// where it can be consumed.
|
|
|
|
Mount() (string, error)
|
|
|
|
// Unmount unmounts the volume when it is no longer in use.
|
|
|
|
Unmount() error
|
|
|
|
}
|
2015-07-12 04:33:30 -04:00
|
|
|
|
|
|
|
// read-write modes
|
|
|
|
var rwModes = map[string]bool{
|
|
|
|
"rw": true,
|
|
|
|
"rw,Z": true,
|
|
|
|
"rw,z": true,
|
|
|
|
"z,rw": true,
|
|
|
|
"Z,rw": true,
|
|
|
|
"Z": true,
|
|
|
|
"z": true,
|
|
|
|
}
|
|
|
|
|
|
|
|
// read-only modes
|
|
|
|
var roModes = map[string]bool{
|
|
|
|
"ro": true,
|
|
|
|
"ro,Z": true,
|
|
|
|
"ro,z": true,
|
|
|
|
"z,ro": true,
|
|
|
|
"Z,ro": true,
|
|
|
|
}
|
|
|
|
|
|
|
|
// ValidateMountMode will make sure the mount mode is valid.
|
|
|
|
// returns if it's a valid mount mode and if it's read-write or not.
|
|
|
|
func ValidateMountMode(mode string) (bool, bool) {
|
|
|
|
return roModes[mode] || rwModes[mode], rwModes[mode]
|
|
|
|
}
|