From 7c83e736624d9861da44459269925e8a127f5a44 Mon Sep 17 00:00:00 2001 From: Maciej Szulik Date: Tue, 14 Nov 2017 14:12:21 +0100 Subject: [PATCH] Return original error instead of negotiation one --- .../pkg/endpoints/handlers/responsewriters/writers.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go index 850fd53e6f9..58dac561f4a 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go @@ -104,6 +104,12 @@ func SerializeObject(mediaType string, encoder runtime.Encoder, w http.ResponseW func WriteObjectNegotiated(ctx request.Context, s runtime.NegotiatedSerializer, gv schema.GroupVersion, w http.ResponseWriter, req *http.Request, statusCode int, object runtime.Object) { serializer, err := negotiation.NegotiateOutputSerializer(req, s) if err != nil { + // if original statusCode was not successful we need to return the original error + // we cannot hide it behind negotiation problems + if statusCode < http.StatusOK || statusCode >= http.StatusBadRequest { + WriteRawJSON(int(statusCode), object, w) + return + } status := ErrorToAPIStatus(err) WriteRawJSON(int(status.Code), status, w) return