func GetContainersInPod()

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
}