6d98e344c7
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
// +build linux
|
|
|
|
package volume
|
|
|
|
import (
|
|
"strings"
|
|
|
|
mounttypes "github.com/docker/engine-api/types/mount"
|
|
)
|
|
|
|
// DefaultPropagationMode defines what propagation mode should be used by
|
|
// default if user has not specified one explicitly.
|
|
const DefaultPropagationMode mounttypes.Propagation = "rprivate"
|
|
|
|
// propagation modes
|
|
var propagationModes = map[mounttypes.Propagation]bool{
|
|
mounttypes.PropagationPrivate: true,
|
|
mounttypes.PropagationRPrivate: true,
|
|
mounttypes.PropagationSlave: true,
|
|
mounttypes.PropagationRSlave: true,
|
|
mounttypes.PropagationShared: true,
|
|
mounttypes.PropagationRShared: true,
|
|
}
|
|
|
|
// GetPropagation extracts and returns the mount propagation mode. If there
|
|
// are no specifications, then by default it is "private".
|
|
func GetPropagation(mode string) mounttypes.Propagation {
|
|
for _, o := range strings.Split(mode, ",") {
|
|
prop := mounttypes.Propagation(o)
|
|
if propagationModes[prop] {
|
|
return prop
|
|
}
|
|
}
|
|
return DefaultPropagationMode
|
|
}
|
|
|
|
// HasPropagation checks if there is a valid propagation mode present in
|
|
// passed string. Returns true if a valid propagation mode specifier is
|
|
// present, false otherwise.
|
|
func HasPropagation(mode string) bool {
|
|
for _, o := range strings.Split(mode, ",") {
|
|
if propagationModes[mounttypes.Propagation(o)] {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|