in util/gcs/read.go [79:129]
func (pi PodInfo) Summarize() (bool, string) {
if pi.Pod == nil {
return false, MissingPodInfo
}
if pi.Pod.Status.Phase == core.PodSucceeded {
return true, ""
}
conditions := make(map[core.PodConditionType]core.PodCondition, len(pi.Pod.Status.Conditions))
for _, cond := range pi.Pod.Status.Conditions {
conditions[cond.Type] = cond
}
if cond, ok := conditions[core.PodScheduled]; ok && cond.Status != core.ConditionTrue {
return false, fmt.Sprintf("pod did not schedule: %s", cond.Message)
}
if cond, ok := conditions[core.PodInitialized]; ok && cond.Status != core.ConditionTrue {
return false, fmt.Sprintf("pod could not initialize: %s", cond.Message)
}
for _, status := range pi.Pod.Status.InitContainerStatuses {
if pass, msg := checkContainerStatus(status); !pass {
return pass, fmt.Sprintf("init container %s", msg)
}
}
var foundSidecar bool
for _, status := range pi.Pod.Status.ContainerStatuses {
if status.Name == "sidecar" {
foundSidecar = true
}
pass, msg := checkContainerStatus(status)
if pass {
continue
}
if status.Name == "sidecar" {
return pass, msg
}
if status.State.Terminated == nil {
return pass, msg
}
}
if !foundSidecar {
return true, NoPodUtils
}
return true, ""
}