Merge pull request #56821 from dashpole/fake_client_running_containers

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

[Test Fix] Fake docker client can remove containers which have not been started

**What this PR does / why we need it**:
During kubemark-5000 scalability tests, which use the fake docker client, we encountered a bug where containers where the pod was deleted before the container was started could not be deleted.
This is because we only remove pods from the `ExitedContainers` list.  Containers are only added to this when they have been created, started, and then stopped.  However, containers that have only been created, but not started cannot be deleted.  This PR fixes this issue by allowing containers with `State.Running=false` to be deleted.

**Which issue(s) this PR fixes**:
Ref #53327 

**Release note**:
```release-note
NONE
```
/sig node
/kind bug
/priority critical-urgent
/assign @Random-Liu @dchen1107 @shyamjvs
This commit is contained in:
Kubernetes Submit Queue 2017-12-05 02:42:53 -08:00 committed by GitHub
commit 923abd0149
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -661,6 +661,15 @@ func (f *FakeDockerClient) RemoveContainer(id string, opts dockertypes.Container
}
}
for i := range f.RunningContainerList {
// allow removal of running containers which are not running
if f.RunningContainerList[i].ID == id && !f.ContainerMap[id].State.Running {
delete(f.ContainerMap, id)
f.RunningContainerList = append(f.RunningContainerList[:i], f.RunningContainerList[i+1:]...)
f.appendContainerTrace("Removed", id)
return nil
}
}
// To be a good fake, report error if container is not stopped.
return fmt.Errorf("container not stopped")
}