func getNfsVolFromID()

in pkg/nfs/controllerserver.go [782:816]


func getNfsVolFromID(id string) (*nfsVolume, error) {
	var server, baseDir, subDir, uuid, onDelete string
	segments := strings.Split(id, separator)
	if len(segments) < 3 {
		klog.V(2).Infof("could not split %s into server, baseDir and subDir with separator(%s)", id, separator)
		// try with separator "/"
		volRegex := regexp.MustCompile("^([^/]+)/(.*)/([^/]+)$")
		tokens := volRegex.FindStringSubmatch(id)
		if tokens == nil || len(tokens) < 4 {
			return nil, fmt.Errorf("could not split %s into server, baseDir and subDir with separator(%s)", id, "/")
		}
		server = tokens[1]
		baseDir = tokens[2]
		subDir = tokens[3]
	} else {
		server = segments[0]
		baseDir = segments[1]
		subDir = segments[2]
		if len(segments) >= 4 {
			uuid = segments[3]
		}
		if len(segments) >= 5 {
			onDelete = segments[4]
		}
	}

	return &nfsVolume{
		id:       id,
		server:   server,
		baseDir:  baseDir,
		subDir:   subDir,
		uuid:     uuid,
		onDelete: onDelete,
	}, nil
}