From 28afe9185580819153bb3d44ad3a09a20af96a11 Mon Sep 17 00:00:00 2001 From: Justin Huff Date: Fri, 27 Jun 2014 23:46:02 -0700 Subject: [PATCH] Allow empty lists when polling manifests via http --- pkg/kubelet/kubelet.go | 5 +---- pkg/kubelet/kubelet_test.go | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index a1132593898..0f14c463a99 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -490,10 +490,7 @@ func (kl *Kubelet) extractFromHTTP(url string, updateChannel chan<- manifestUpda // We're not sure if the person reading the logs is going to care about the single or // multiple manifest unmarshalling attempt, so we need to put both in the logs, as is // done at the end. Hence not returning early here. - if multiErr == nil && len(manifests) == 0 { - multiErr = fmt.Errorf("no elements in ContainerManifest array") - } - if multiErr == nil && manifests[0].Version == "" { + if multiErr == nil && len(manifests) > 0 && manifests[0].Version == "" { multiErr = fmt.Errorf("got blank version field") } if multiErr == nil { diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 79bca4b8233..12fa048a502 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -784,6 +784,42 @@ func TestExtractFromHttpMultiple(t *testing.T) { } } +func TestExtractFromHttpEmptyArray(t *testing.T) { + kubelet := Kubelet{} + updateChannel := make(chan manifestUpdate) + reader := startReading(updateChannel) + + manifests := []api.ContainerManifest{} + data, err := json.Marshal(manifests) + if err != nil { + t.Fatalf("Some weird json problem: %v", err) + } + + t.Logf("Serving: %v", string(data)) + + fakeHandler := util.FakeHandler{ + StatusCode: 200, + ResponseBody: string(data), + } + testServer := httptest.NewServer(&fakeHandler) + + err = kubelet.extractFromHTTP(testServer.URL, updateChannel) + if err != nil { + t.Errorf("Unexpected error: %#v", err) + } + close(updateChannel) + + read := reader.GetList() + + if len(read) != 1 { + t.Errorf("Unexpected list: %#v", read) + return + } + if len(read[0]) != 0 { + t.Errorf("Unexpected manifests: %#v", read[0]) + } +} + func TestWatchEtcd(t *testing.T) { watchChannel := make(chan *etcd.Response) updateChannel := make(chan manifestUpdate)