From b969599daf4fd3d14a8382fde79536e213b975ff Mon Sep 17 00:00:00 2001 From: Yu-Ju Hong Date: Tue, 5 Jan 2016 11:37:26 -0800 Subject: [PATCH] Fix fake docker client to corretly report status of containers --- pkg/kubelet/dockertools/convert.go | 8 ++++++-- pkg/kubelet/dockertools/fake_docker_client.go | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/dockertools/convert.go b/pkg/kubelet/dockertools/convert.go index 228d066d25..9bb97ec522 100644 --- a/pkg/kubelet/dockertools/convert.go +++ b/pkg/kubelet/dockertools/convert.go @@ -28,14 +28,18 @@ import ( // This file contains helper functions to convert docker API types to runtime // (kubecontainer) types. +const ( + statusRunningPrefix = "Up" + statusExitedPrefix = "Exited" +) func mapState(state string) kubecontainer.ContainerState { // Parse the state string in docker.APIContainers. This could break when // we upgrade docker. switch { - case strings.HasPrefix(state, "Up"): + case strings.HasPrefix(state, statusRunningPrefix): return kubecontainer.ContainerStateRunning - case strings.HasPrefix(state, "Exited"): + case strings.HasPrefix(state, statusExitedPrefix): return kubecontainer.ContainerStateExited default: return kubecontainer.ContainerStateUnknown diff --git a/pkg/kubelet/dockertools/fake_docker_client.go b/pkg/kubelet/dockertools/fake_docker_client.go index 32e0600c10..116a57ec14 100644 --- a/pkg/kubelet/dockertools/fake_docker_client.go +++ b/pkg/kubelet/dockertools/fake_docker_client.go @@ -282,6 +282,7 @@ func (f *FakeDockerClient) StartContainer(id string, hostConfig *docker.HostConf } container.NetworkSettings = &docker.NetworkSettings{IPAddress: "2.3.4.5"} f.ContainerMap[id] = container + f.updateContainerStatus(id, statusRunningPrefix) f.normalSleep(200, 50, 50) return nil } @@ -322,6 +323,7 @@ func (f *FakeDockerClient) StopContainer(id string, timeout uint) error { container.State.Running = false } f.ContainerMap[id] = container + f.updateContainerStatus(id, statusExitedPrefix) f.normalSleep(200, 50, 50) return nil } @@ -412,6 +414,14 @@ func (f *FakeDockerClient) RemoveImage(image string) error { return err } +func (f *FakeDockerClient) updateContainerStatus(id, status string) { + for i := range f.ContainerList { + if f.ContainerList[i].ID == id { + f.ContainerList[i].Status = status + } + } +} + // FakeDockerPuller is a stub implementation of DockerPuller. type FakeDockerPuller struct { sync.Mutex