in pkg/csi_driver/utils.go [376:427]
func checkGcsFuseErr(isInitContainer bool, pod *corev1.Pod, targetPath string) (codes.Code, error) {
code := codes.Internal
cs, err := getSidecarContainerStatus(isInitContainer, pod)
if err != nil {
return code, err
}
// the sidecar container has not started, skip the check
if cs.State.Waiting != nil {
return codes.OK, nil
}
emptyDirBasePath, err := util.PrepareEmptyDir(targetPath, false)
if err != nil {
return code, fmt.Errorf("failed to get emptyDir path: %w", err)
}
errMsg, err := os.ReadFile(emptyDirBasePath + "/error")
if err != nil && !os.IsNotExist(err) {
return code, fmt.Errorf("failed to open error file %q: %w", emptyDirBasePath+"/error", err)
}
if err == nil && len(errMsg) > 0 {
errMsgStr := string(errMsg)
code := codes.Internal
if strings.Contains(errMsgStr, "Incorrect Usage") ||
strings.Contains(errMsgStr, "unknown flag") {
code = codes.InvalidArgument
}
if strings.Contains(errMsgStr, "signal: killed") {
code = codes.ResourceExhausted
}
if strings.Contains(errMsgStr, "signal: terminated") {
code = codes.Canceled
}
if strings.Contains(errMsgStr, "googleapi: Error 403") ||
strings.Contains(errMsgStr, "IAM returned 403 Forbidden: Permission") ||
strings.Contains(errMsgStr, "google: could not find default credentials") {
code = codes.PermissionDenied
}
if strings.Contains(errMsgStr, "bucket doesn't exist") {
code = codes.NotFound
}
return code, fmt.Errorf("gcsfuse failed with error: %v", errMsgStr)
}
return codes.OK, nil
}