Merge pull request #3963 from smarterclayton/handle_server_errors

Provide a better error when Kubelet pod status is unexpected
This commit is contained in:
Satnam Singh 2015-01-29 18:30:43 -08:00
commit c2c109e896
2 changed files with 43 additions and 0 deletions

View File

@ -135,6 +135,9 @@ func (c *HTTPKubeletClient) GetPodStatus(host, podNamespace, podID string) (api.
if response.StatusCode == http.StatusNotFound {
return status, ErrPodInfoNotAvailable
}
if response.StatusCode >= 300 || response.StatusCode < 200 {
return status, fmt.Errorf("kubelet %q server responded with HTTP error code %d for pod %s/%s", host, response.StatusCode, podNamespace, podID)
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return status, err

View File

@ -118,6 +118,46 @@ func TestHTTPKubeletClientNotFound(t *testing.T) {
}
}
func TestHTTPKubeletClientError(t *testing.T) {
expectObj := api.PodContainerInfo{
ContainerInfo: map[string]api.ContainerStatus{
"myID": {},
},
}
_, err := json.Marshal(expectObj)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
fakeHandler := util.FakeHandler{
StatusCode: 500,
ResponseBody: "Internal server error",
}
testServer := httptest.NewServer(&fakeHandler)
defer testServer.Close()
hostURL, err := url.Parse(testServer.URL)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
parts := strings.Split(hostURL.Host, ":")
port, err := strconv.Atoi(parts[1])
if err != nil {
t.Errorf("unexpected error: %v", err)
}
podInfoGetter := &HTTPKubeletClient{
Client: http.DefaultClient,
Port: uint(port),
}
_, err = podInfoGetter.GetPodStatus(parts[0], api.NamespaceDefault, "foo")
if err == nil || !strings.Contains(err.Error(), "HTTP error code 500") {
t.Errorf("unexpected error: %v", err)
}
}
func TestNewKubeletClient(t *testing.T) {
config := &KubeletConfig{
Port: 9000,