diff --git a/pkg/kubelet/server/server.go b/pkg/kubelet/server/server.go index 0ff3284e935..44539aee01d 100644 --- a/pkg/kubelet/server/server.go +++ b/pkg/kubelet/server/server.go @@ -495,7 +495,7 @@ func (s *Server) getPods(request *restful.Request, response *restful.Response) { response.WriteError(http.StatusInternalServerError, err) return } - response.Write(data) + writeJsonResponse(response, data) } // getRunningPods returns a list of pods running on Kubelet. The list is @@ -512,7 +512,7 @@ func (s *Server) getRunningPods(request *restful.Request, response *restful.Resp response.WriteError(http.StatusInternalServerError, err) return } - response.Write(data) + writeJsonResponse(response, data) } // getLogs handles logs requests against the Kubelet. @@ -585,7 +585,7 @@ func (s *Server) getRun(request *restful.Request, response *restful.Response) { response.WriteError(http.StatusInternalServerError, err) return } - response.Write(data) + writeJsonResponse(response, data) } // getExec handles requests to run a command inside a container. @@ -778,6 +778,20 @@ func getPodCoordinates(request *restful.Request) (namespace, pod string, uid typ return } +// Derived from go-restful writeJSON. +func writeJsonResponse(response *restful.Response, data []byte) { + if data == nil { + response.WriteHeader(http.StatusOK) + // do not write a nil representation + return + } + response.Header().Set(restful.HEADER_ContentType, restful.MIME_JSON) + response.WriteHeader(http.StatusOK) + if _, err := response.Write(data); err != nil { + glog.Errorf("Error writing response: %v", err) + } +} + // PortForwarder knows how to forward content from a data stream to/from a port // in a pod. type PortForwarder interface { diff --git a/pkg/kubelet/server/stats/handler.go b/pkg/kubelet/server/stats/handler.go index 2175f3eca37..c253ae29537 100644 --- a/pkg/kubelet/server/stats/handler.go +++ b/pkg/kubelet/server/stats/handler.go @@ -220,12 +220,8 @@ func (h *handler) handlePodContainer(request *restful.Request, response *restful } func writeResponse(response *restful.Response, stats interface{}) { - if stats == nil { - return - } - err := response.WriteAsJson(stats) - if err != nil { - handleError(response, err) + if err := response.WriteAsJson(stats); err != nil { + glog.Errorf("Error writing response: %v", err) } } @@ -236,7 +232,7 @@ func handleError(response *restful.Response, err error) { response.WriteError(http.StatusNotFound, err) default: msg := fmt.Sprintf("Internal Error: %v", err) - glog.Infof("HTTP InternalServerError: %s", msg) + glog.Errorf("HTTP InternalServerError: %s", msg) response.WriteErrorString(http.StatusInternalServerError, msg) } }