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
}