Merge pull request #19393 from yujuhong/fix_dockerclient

Fix fake docker client to corretly report status of containers
pull/6/head
Saad Ali 2016-01-11 13:56:41 -08:00
commit 651206fd90
2 changed files with 16 additions and 2 deletions

View File

@ -28,14 +28,18 @@ import (
// This file contains helper functions to convert docker API types to runtime // This file contains helper functions to convert docker API types to runtime
// (kubecontainer) types. // (kubecontainer) types.
const (
statusRunningPrefix = "Up"
statusExitedPrefix = "Exited"
)
func mapState(state string) kubecontainer.ContainerState { func mapState(state string) kubecontainer.ContainerState {
// Parse the state string in docker.APIContainers. This could break when // Parse the state string in docker.APIContainers. This could break when
// we upgrade docker. // we upgrade docker.
switch { switch {
case strings.HasPrefix(state, "Up"): case strings.HasPrefix(state, statusRunningPrefix):
return kubecontainer.ContainerStateRunning return kubecontainer.ContainerStateRunning
case strings.HasPrefix(state, "Exited"): case strings.HasPrefix(state, statusExitedPrefix):
return kubecontainer.ContainerStateExited return kubecontainer.ContainerStateExited
default: default:
return kubecontainer.ContainerStateUnknown return kubecontainer.ContainerStateUnknown

View File

@ -282,6 +282,7 @@ func (f *FakeDockerClient) StartContainer(id string, hostConfig *docker.HostConf
} }
container.NetworkSettings = &docker.NetworkSettings{IPAddress: "2.3.4.5"} container.NetworkSettings = &docker.NetworkSettings{IPAddress: "2.3.4.5"}
f.ContainerMap[id] = container f.ContainerMap[id] = container
f.updateContainerStatus(id, statusRunningPrefix)
f.normalSleep(200, 50, 50) f.normalSleep(200, 50, 50)
return nil return nil
} }
@ -322,6 +323,7 @@ func (f *FakeDockerClient) StopContainer(id string, timeout uint) error {
container.State.Running = false container.State.Running = false
} }
f.ContainerMap[id] = container f.ContainerMap[id] = container
f.updateContainerStatus(id, statusExitedPrefix)
f.normalSleep(200, 50, 50) f.normalSleep(200, 50, 50)
return nil return nil
} }
@ -412,6 +414,14 @@ func (f *FakeDockerClient) RemoveImage(image string) error {
return err 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. // FakeDockerPuller is a stub implementation of DockerPuller.
type FakeDockerPuller struct { type FakeDockerPuller struct {
sync.Mutex sync.Mutex