From 168ec8b80fff84b22808cb3bc27997805480f193 Mon Sep 17 00:00:00 2001 From: Yifan Gu Date: Thu, 25 Feb 2016 16:18:34 -0800 Subject: [PATCH] kubelet: Sort the container statuses in convertStatusToAPIStatus(). --- pkg/kubelet/container/runtime.go | 9 +++++++++ pkg/kubelet/kubelet.go | 3 +++ pkg/kubelet/rkt/rkt.go | 6 ------ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pkg/kubelet/container/runtime.go b/pkg/kubelet/container/runtime.go index 33bea5bf5c4..6ba1e1f17c6 100644 --- a/pkg/kubelet/container/runtime.go +++ b/pkg/kubelet/container/runtime.go @@ -470,3 +470,12 @@ func ParsePodFullName(podFullName string) (string, string, error) { // Option is a functional option type for Runtime, useful for // completely optional settings. type Option func(Runtime) + +// Sort the container statuses by creation time. +type SortContainerStatusesByCreationTime []*ContainerStatus + +func (s SortContainerStatusesByCreationTime) Len() int { return len(s) } +func (s SortContainerStatusesByCreationTime) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +func (s SortContainerStatusesByCreationTime) Less(i, j int) bool { + return s[i].CreatedAt.Before(s[j].CreatedAt) +} diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index ed7aca8791b..f808ad0eda2 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -3276,6 +3276,9 @@ func (kl *Kubelet) convertStatusToAPIStatus(pod *api.Pod, podStatus *kubecontain return status } + // Make the latest container status comes first. + sort.Sort(sort.Reverse(kubecontainer.SortContainerStatusesByCreationTime(podStatus.ContainerStatuses))) + statuses := make(map[string]*api.ContainerStatus, len(pod.Spec.Containers)) // Create a map of expected containers based on the pod spec. expectedContainers := make(map[string]api.Container) diff --git a/pkg/kubelet/rkt/rkt.go b/pkg/kubelet/rkt/rkt.go index 3691d53f7c0..e28411c8912 100644 --- a/pkg/kubelet/rkt/rkt.go +++ b/pkg/kubelet/rkt/rkt.go @@ -1482,9 +1482,3 @@ func (r *Runtime) GetPodStatus(uid types.UID, name, namespace string) (*kubecont return podStatus, nil } - -type sortByRestartCount []*kubecontainer.ContainerStatus - -func (s sortByRestartCount) Len() int { return len(s) } -func (s sortByRestartCount) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s sortByRestartCount) Less(i, j int) bool { return s[i].RestartCount < s[j].RestartCount }