in plugins/gce_pd.go [129:161]
func backwardCompatibleAccessModes(ams []v1.PersistentVolumeAccessMode) []v1.PersistentVolumeAccessMode {
if ams == nil {
return nil
}
s := map[v1.PersistentVolumeAccessMode]bool{}
var newAM []v1.PersistentVolumeAccessMode
for _, am := range ams {
if am == v1.ReadWriteMany {
// ReadWriteMany is unsupported in CSI, but in-tree did no
// validation and treated it as ReadWriteOnce
s[v1.ReadWriteOnce] = true
} else {
s[am] = true
}
}
switch {
case s[v1.ReadOnlyMany] && s[v1.ReadWriteOnce]:
// ROX,RWO is unsupported in CSI, but in-tree did not validation and
// treated it as ReadWriteOnce
newAM = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
case s[v1.ReadWriteOnce]:
newAM = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
case s[v1.ReadOnlyMany]:
newAM = []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany}
default:
newAM = []v1.PersistentVolumeAccessMode{v1.ReadWriteOnce}
}
return newAM
}