diff --git a/render/pod.go b/render/pod.go index d03b71b13a..49b97be876 100644 --- a/render/pod.go +++ b/render/pod.go @@ -53,7 +53,7 @@ var PodRenderer = Memoise(ConditionalRenderer(renderKubernetesTopologies, }, MakeReduce( PropagateSingleMetrics(report.Container, - MakeMap(propagateHostID, + MakeMap(propagatePodHost, Map2Parent{topologies: []string{report.Pod}, noParentsPseudoID: UnmanagedID, chainRenderer: MakeFilter( ComposeFilterFuncs( @@ -70,21 +70,25 @@ var PodRenderer = Memoise(ConditionalRenderer(renderKubernetesTopologies, ), )) -// Pods are not tagged with a Host ID, but their container children are. -// If n doesn't already have a host ID, copy it from one of the children -func propagateHostID(n report.Node) report.Node { - if _, found := n.Latest.Lookup(report.HostNodeID); found { +// Pods are not tagged with a Host parent, but their container children are. +// If n doesn't already have a host, copy it from one of the children +func propagatePodHost(n report.Node) report.Node { + if n.Topology != report.Pod { + return n + } else if _, found := n.Parents.Lookup(report.Host); found { return n } - var first *report.Node + done := false n.Children.ForEach(func(child report.Node) { - if first == nil { - first = &child + if !done { + if hosts, found := child.Parents.Lookup(report.Host); found { + for _, h := range hosts { + n = n.WithParent(report.Host, h) + } + done = true + } } }) - if first != nil { - n.Latest = n.Latest.Propagate(first.Latest, report.HostNodeID) - } return n }