kubelet: Refactor isPodRunning() in runonce.go

Replace InspectContainer() with generic GetPodStatus().
pull/6/head
Yifan Gu 2015-04-28 17:39:20 -07:00
parent 44e7109341
commit c848fa447d
2 changed files with 10 additions and 13 deletions

View File

@ -22,6 +22,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/container" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/container"
kubecontainer "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/container"
"github.com/golang/glog" "github.com/golang/glog"
) )
@ -119,19 +120,14 @@ func (kl *Kubelet) runPod(pod *api.Pod, retryDelay time.Duration) error {
// isPodRunning returns true if all containers of a manifest are running. // isPodRunning returns true if all containers of a manifest are running.
func (kl *Kubelet) isPodRunning(pod *api.Pod, runningPod container.Pod) (bool, error) { func (kl *Kubelet) isPodRunning(pod *api.Pod, runningPod container.Pod) (bool, error) {
for _, container := range pod.Spec.Containers { status, err := kl.containerManager.GetPodStatus(pod)
c := runningPod.FindContainerByName(container.Name) if err != nil {
if c == nil { glog.Infof("Failed to get the status of pod %q: %v", kubecontainer.GetPodFullName(pod), err)
glog.Infof("container %q not found", container.Name) return false, err
return false, nil }
} for _, st := range status.ContainerStatuses {
inspectResult, err := kl.dockerClient.InspectContainer(string(c.ID)) if st.State.Running == nil {
if err != nil { glog.Infof("Container %q not running: %#v", st.Name, st.State)
glog.Infof("failed to inspect container %q: %v", container.Name, err)
return false, err
}
if !inspectResult.State.Running {
glog.Infof("container %q not running: %#v", container.Name, inspectResult.State)
return false, nil return false, nil
} }
} }

View File

@ -113,6 +113,7 @@ func TestRunOnce(t *testing.T) {
{label: "list pod container", containers: []docker.APIContainers{}}, {label: "list pod container", containers: []docker.APIContainers{}},
{label: "syncPod", containers: podContainers}, {label: "syncPod", containers: podContainers},
{label: "list pod container", containers: podContainers}, {label: "list pod container", containers: podContainers},
{label: "list pod container", containers: podContainers},
}, },
inspectContainersResults: []inspectContainersResult{ inspectContainersResults: []inspectContainersResult{
{ {