mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +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 {
|
if len(status.Status) == 0 {
|
||||||
status.Status = metav1.StatusFailure
|
status.Status = metav1.StatusFailure
|
||||||
}
|
}
|
||||||
if status.Code == 0 {
|
switch status.Status {
|
||||||
switch status.Status {
|
case metav1.StatusSuccess:
|
||||||
case metav1.StatusSuccess:
|
if status.Code == 0 {
|
||||||
status.Code = http.StatusOK
|
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
|
status.Code = http.StatusInternalServerError
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,19 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"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) {
|
func TestAPIStatus(t *testing.T) {
|
||||||
cases := map[error]metav1.Status{
|
cases := map[error]metav1.Status{
|
||||||
errors.NewNotFound(schema.GroupResource{Group: "legacy.kubernetes.io", Resource: "foos"}, "bar"): {
|
errors.NewNotFound(schema.GroupResource{Group: "legacy.kubernetes.io", Resource: "foos"}, "bar"): {
|
||||||
|
Loading…
Reference in New Issue
Block a user