Show error when editing tenant Yaml (#733)

* Show error when editing tenant Yaml

Also adds error line when we prepareError()

Signed-off-by: Daniel Valdivia <hola@danielvaldivia.com>

* make certain metadata fields editable

Signed-off-by: Daniel Valdivia <hola@danielvaldivia.com>
This commit is contained in:
Daniel Valdivia
2021-05-10 19:08:22 -07:00
committed by GitHub
parent 3a7da72919
commit a2dce5fa9f
8 changed files with 56 additions and 21 deletions

View File

@@ -3,6 +3,8 @@ package restapi
import (
"errors"
"log"
"runtime"
"strings"
"github.com/go-openapi/swag"
"github.com/minio/console/models"
@@ -45,7 +47,9 @@ func prepareError(err ...error) *models.Error {
errorCode := int32(500)
errorMessage := errorGeneric.Error()
if len(err) > 0 {
log.Print("original error: ", err[0].Error())
frame := getFrame(2)
fileParts := strings.Split(frame.File, "/")
log.Printf("%s:%d: original error: %s", fileParts[len(fileParts)-1], frame.Line, err[0].Error())
if k8sErrors.IsUnauthorized(err[0]) {
errorCode = 401
errorMessage = errorGenericUnauthorized.Error()
@@ -157,3 +161,26 @@ func prepareError(err ...error) *models.Error {
}
return &models.Error{Code: errorCode, Message: swag.String(errorMessage)}
}
func getFrame(skipFrames int) runtime.Frame {
// We need the frame at index skipFrames+2, since we never want runtime.Callers and getFrame
targetFrameIndex := skipFrames + 2
// Set size to targetFrameIndex+2 to ensure we have room for one more caller than we need
programCounters := make([]uintptr, targetFrameIndex+2)
n := runtime.Callers(0, programCounters)
frame := runtime.Frame{Function: "unknown"}
if n > 0 {
frames := runtime.CallersFrames(programCounters[:n])
for more, frameIndex := true, 0; more && frameIndex <= targetFrameIndex; frameIndex++ {
var frameCandidate runtime.Frame
frameCandidate, more = frames.Next()
if frameIndex == targetFrameIndex {
frame = frameCandidate
}
}
}
return frame
}