in pkg/nfs/controllerserver.go [671:725]
func newNFSVolume(name string, size int64, params map[string]string, defaultOnDeletePolicy string) (*nfsVolume, error) {
var server, baseDir, subDir, onDelete string
subDirReplaceMap := map[string]string{}
// validate parameters (case-insensitive)
for k, v := range params {
switch strings.ToLower(k) {
case paramServer:
server = v
case paramShare:
baseDir = v
case paramSubDir:
subDir = v
case paramOnDelete:
onDelete = v
case pvcNamespaceKey:
subDirReplaceMap[pvcNamespaceMetadata] = v
case pvcNameKey:
subDirReplaceMap[pvcNameMetadata] = v
case pvNameKey:
subDirReplaceMap[pvNameMetadata] = v
}
}
if server == "" {
return nil, fmt.Errorf("%v is a required parameter", paramServer)
}
vol := &nfsVolume{
server: server,
baseDir: baseDir,
size: size,
}
if subDir == "" {
// use pv name by default if not specified
vol.subDir = name
} else {
// replace pv/pvc name namespace metadata in subDir
vol.subDir = replaceWithMap(subDir, subDirReplaceMap)
// make volume id unique if subDir is provided
vol.uuid = name
}
if err := validateOnDeleteValue(onDelete); err != nil {
return nil, err
}
vol.onDelete = defaultOnDeletePolicy
if onDelete != "" {
vol.onDelete = onDelete
}
vol.id = getVolumeIDFromNfsVol(vol)
return vol, nil
}