From c955de2ba8db3eb17058c02d61af9e4527edac78 Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Fri, 19 Aug 2016 15:54:48 +1000 Subject: [PATCH] Make sure the StatusCode is taken into account in DoRaw() Currently if there is an error (not found) the error printed out is to do with the inablity to convert an empty body into the expected json. This patch will fill in the err correctly. example of before (with NotFound error): $ kubectl top node failed to unmarshall heapster response: json: cannot unmarshal object into Go value of type []v1alpha1.NodeMetrics Now: $ kubectl top node the server could not find the requested resource (get services http:heapster:) --- pkg/client/restclient/request.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/client/restclient/request.go b/pkg/client/restclient/request.go index cad9f90ca9b..b57f5558e42 100644 --- a/pkg/client/restclient/request.go +++ b/pkg/client/restclient/request.go @@ -881,6 +881,9 @@ func (r *Request) DoRaw() ([]byte, error) { var result Result err := r.request(func(req *http.Request, resp *http.Response) { result.body, result.err = ioutil.ReadAll(resp.Body) + if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent { + result.err = r.transformUnstructuredResponseError(resp, req, result.body) + } }) if err != nil { return nil, err