From 3b9ed9afffe427b7e815d9e6102d4d8c82a93ea7 Mon Sep 17 00:00:00 2001 From: ceshihao Date: Thu, 28 Jun 2018 11:52:08 +0800 Subject: [PATCH] pod status should contain ContainerStatuses after eviction --- pkg/kubelet/kubelet_pods.go | 13 ++++++------- pkg/kubelet/kubelet_test.go | 2 ++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 0e9ea8682b7..e7cd10969a5 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -1325,19 +1325,18 @@ func getPhase(spec *v1.PodSpec, info []v1.ContainerStatus) v1.PodPhase { func (kl *Kubelet) generateAPIPodStatus(pod *v1.Pod, podStatus *kubecontainer.PodStatus) v1.PodStatus { glog.V(3).Infof("Generating status for %q", format.Pod(pod)) + s := kl.convertStatusToAPIStatus(pod, podStatus) + // check if an internal module has requested the pod is evicted. for _, podSyncHandler := range kl.PodSyncHandlers { if result := podSyncHandler.ShouldEvict(pod); result.Evict { - return v1.PodStatus{ - Phase: v1.PodFailed, - Reason: result.Reason, - Message: result.Message, - } + s.Phase = v1.PodFailed + s.Reason = result.Reason + s.Message = result.Message + return *s } } - s := kl.convertStatusToAPIStatus(pod, podStatus) - // Assume info is ready to process spec := &pod.Spec allStatus := append(append([]v1.ContainerStatus{}, s.ContainerStatuses...), s.InitContainerStatuses...) diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 183c29ce643..f310eb88cc1 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -1472,6 +1472,8 @@ func TestSyncPodsSetStatusToFailedForPodsThatRunTooLong(t *testing.T) { status, found := kubelet.statusManager.GetPodStatus(pods[0].UID) assert.True(t, found, "expected to found status for pod %q", pods[0].UID) assert.Equal(t, v1.PodFailed, status.Phase) + // check pod status contains ContainerStatuses, etc. + assert.NotNil(t, status.ContainerStatuses) } func TestSyncPodsDoesNotSetPodsThatDidNotRunTooLongToFailed(t *testing.T) {