From 98283d894c60846be62244ab840f1d3ef354cc67 Mon Sep 17 00:00:00 2001 From: Random-Liu Date: Mon, 22 Feb 2016 17:44:38 -0800 Subject: [PATCH] dockertools: fix error exited container list in fake docker client --- pkg/kubelet/dockertools/fake_docker_client.go | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/kubelet/dockertools/fake_docker_client.go b/pkg/kubelet/dockertools/fake_docker_client.go index 00d7be003bf..ac2d5a7bbe0 100644 --- a/pkg/kubelet/dockertools/fake_docker_client.go +++ b/pkg/kubelet/dockertools/fake_docker_client.go @@ -297,6 +297,8 @@ func (f *FakeDockerClient) StopContainer(id string, timeout uint) error { return err } f.Stopped = append(f.Stopped, id) + // Container status should be Updated before container moved to ExitedContainerList + f.updateContainerStatus(id, statusExitedPrefix) var newList []docker.APIContainers for _, container := range f.ContainerList { if container.ID == id { @@ -323,7 +325,6 @@ 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 } @@ -333,11 +334,20 @@ func (f *FakeDockerClient) RemoveContainer(opts docker.RemoveContainerOptions) e defer f.Unlock() f.called = append(f.called, "remove") err := f.popError("remove") - if err == nil { - f.Removed = append(f.Removed, opts.ID) + if err != nil { + return err } - delete(f.ContainerMap, opts.ID) - return err + for i := range f.ExitedContainerList { + if f.ExitedContainerList[i].ID == opts.ID { + delete(f.ContainerMap, opts.ID) + f.ExitedContainerList = append(f.ExitedContainerList[:i], f.ExitedContainerList[i+1:]...) + f.Removed = append(f.Removed, opts.ID) + return nil + } + + } + // To be a good fake, report error if container is not stopped. + return fmt.Errorf("container not stopped") } // Logs is a test-spy implementation of DockerInterface.Logs.