in kubernetes/util.go [263:297]
func GetContainersInPod(pod *Pod) []*ContainerInPod {
containers := make([]*ContainerInPod, len(pod.Spec.Containers)+len(pod.Spec.InitContainers)+len(pod.Spec.EphemeralContainers))
idx := 0
for _, c := range pod.Spec.Containers {
containers[idx] = &ContainerInPod{Spec: c}
idx++
}
for _, c := range pod.Spec.InitContainers {
containers[idx] = &ContainerInPod{Spec: c}
idx++
}
for _, c := range pod.Spec.EphemeralContainers {
c := Container(c.EphemeralContainerCommon)
containers[idx] = &ContainerInPod{Spec: c}
idx++
}
statuses := make(map[string]*PodContainerStatus)
mapStatuses := func(s []PodContainerStatus) {
for i := range s {
statuses[s[i].Name] = &s[i]
}
}
mapStatuses(pod.Status.ContainerStatuses)
mapStatuses(pod.Status.InitContainerStatuses)
mapStatuses(pod.Status.EphemeralContainerStatuses)
for _, c := range containers {
if s, ok := statuses[c.Spec.Name]; ok {
c.ID, c.Runtime = ContainerIDWithRuntime(*s)
c.Status = *s
}
}
return containers
}