mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 11:21:47 +00:00
Strengthen ErrorToAPIStatus against bad input
Change-Id: Id44a59f56c074901257760ff4e40ce29820c6c50
This commit is contained in:
parent
86691cad55
commit
6858a24835
@ -38,11 +38,18 @@ func ErrorToAPIStatus(err error) *metav1.Status {
|
||||
if len(status.Status) == 0 {
|
||||
status.Status = metav1.StatusFailure
|
||||
}
|
||||
if status.Code == 0 {
|
||||
switch status.Status {
|
||||
case metav1.StatusSuccess:
|
||||
switch status.Status {
|
||||
case metav1.StatusSuccess:
|
||||
if status.Code == 0 {
|
||||
status.Code = http.StatusOK
|
||||
case metav1.StatusFailure:
|
||||
}
|
||||
case metav1.StatusFailure:
|
||||
if status.Code == 0 {
|
||||
status.Code = http.StatusInternalServerError
|
||||
}
|
||||
default:
|
||||
runtime.HandleError(fmt.Errorf("apiserver received an error with wrong status field : %#+v", err))
|
||||
if status.Code == 0 {
|
||||
status.Code = http.StatusInternalServerError
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,19 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
func TestBadStatusErrorToAPIStatus(t *testing.T) {
|
||||
err := errors.StatusError{}
|
||||
actual := ErrorToAPIStatus(&err)
|
||||
expected := &metav1.Status{
|
||||
TypeMeta: metav1.TypeMeta{Kind: "Status", APIVersion: "v1"},
|
||||
Status: metav1.StatusFailure,
|
||||
Code: 500,
|
||||
}
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
t.Errorf("%s: Expected %#v, Got %#v", actual, expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAPIStatus(t *testing.T) {
|
||||
cases := map[error]metav1.Status{
|
||||
errors.NewNotFound(schema.GroupResource{Group: "legacy.kubernetes.io", Resource: "foos"}, "bar"): {
|
||||
|
Loading…
Reference in New Issue
Block a user