func parseRequestArguments()

in pkg/csi_driver/utils.go [269:304]


func parseRequestArguments(req *csi.NodePublishVolumeRequest) (string, string, []string, bool, bool, error) {
	targetPath := req.GetTargetPath()
	if len(targetPath) == 0 {
		return "", "", nil, false, false, errors.New("NodePublishVolume target path must be provided")
	}

	vc := req.GetVolumeContext()
	bucketName := parseVolumeID(req.GetVolumeId())
	if vc[VolumeContextKeyEphemeral] == util.TrueStr {
		bucketName = vc[VolumeContextKeyBucketName]
		if len(bucketName) == 0 {
			return "", "", nil, false, false, fmt.Errorf("NodePublishVolume VolumeContext %q must be provided for ephemeral storage", VolumeContextKeyBucketName)
		}
	}
	fuseMountOptions := []string{}
	if req.GetReadonly() {
		fuseMountOptions = joinMountOptions(fuseMountOptions, []string{"ro"})
	}

	if capMount := req.GetVolumeCapability().GetMount(); capMount != nil {
		// Delegate fsGroup to CSI Driver
		// Set gid, file-mode, and dir-mode for gcsfuse.
		// Allow users to overwrite these flags.
		if capMount.GetVolumeMountGroup() != "" {
			fuseMountOptions = joinMountOptions(fuseMountOptions, []string{"gid=" + capMount.GetVolumeMountGroup(), "file-mode=664", "dir-mode=775"})
		}
		fuseMountOptions = joinMountOptions(fuseMountOptions, capMount.GetMountFlags())
	}

	fuseMountOptions, skipCSIBucketAccessCheck, enableMetricsCollection, err := parseVolumeAttributes(fuseMountOptions, vc)
	if err != nil {
		return "", "", nil, false, false, err
	}

	return targetPath, bucketName, fuseMountOptions, skipCSIBucketAccessCheck, enableMetricsCollection, nil
}