// getPods returns a list of pods bound to the Kubelet and their spec. func (s *Server) getPods(request *restful.Request, response *restful.Response) { pods := s.host.GetPods() data, err := encodePods(pods) if err != nil { response.WriteError(http.StatusInternalServerError, err) return } response.Write(data) }
// 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) } }
// getRun handles requests to run a command inside a container. func (s *Server) getRun(request *restful.Request, response *restful.Response) { podNamespace, podID, uid, container := getContainerCoordinates(request) pod, ok := s.host.GetPodByName(podNamespace, podID) if !ok { response.WriteError(http.StatusNotFound, fmt.Errorf("pod does not exist")) return } command := strings.Split(request.QueryParameter("cmd"), " ") data, err := s.host.RunInContainer(kubecontainer.GetPodFullName(pod), uid, container, command) if err != nil { response.WriteError(http.StatusInternalServerError, err) return } response.Write(data) }