diff --git a/probe/kubernetes/reporter.go b/probe/kubernetes/reporter.go index 5faf33b3d..66eebaa18 100644 --- a/probe/kubernetes/reporter.go +++ b/probe/kubernetes/reporter.go @@ -1,8 +1,10 @@ package kubernetes import ( - "github.com/weaveworks/scope/report" "k8s.io/kubernetes/pkg/labels" + + "github.com/weaveworks/scope/probe/docker" + "github.com/weaveworks/scope/report" ) // Reporter generate Reports containing Container and ContainerImage topologies @@ -66,11 +68,12 @@ func (r *Reporter) podTopology(services []Service) (report.Topology, report.Topo nodeID := report.MakePodNodeID(p.Namespace(), p.Name()) pods = pods.AddNode(nodeID, p.GetNode()) - container := report.MakeNodeWith(map[string]string{ - PodID: p.ID(), - Namespace: p.Namespace(), - }).WithParents(report.EmptySets.Add(report.Pod, report.MakeStringSet(nodeID))) for _, containerID := range p.ContainerIDs() { + container := report.MakeNodeWith(map[string]string{ + PodID: p.ID(), + Namespace: p.Namespace(), + docker.ContainerID: containerID, + }).WithParents(report.EmptySets.Add(report.Pod, report.MakeStringSet(nodeID))) containers.AddNode(report.MakeContainerNodeID(containerID), container) } return nil diff --git a/probe/overlay/weave.go b/probe/overlay/weave.go index f908bd535..1a384daaa 100644 --- a/probe/overlay/weave.go +++ b/probe/overlay/weave.go @@ -134,9 +134,15 @@ func (w *Weave) Tag(r report.Report) (report.Report, error) { } // Put information from weave ps on the container nodes + const maxPrefixSize = 12 for id, node := range r.Container.Nodes { - prefix, _ := node.Latest.Lookup(docker.ContainerID) - prefix = prefix[:12] + prefix, ok := node.Latest.Lookup(docker.ContainerID) + if !ok { + continue + } + if len(prefix) > maxPrefixSize { + prefix = prefix[:maxPrefixSize] + } entry, ok := w.psCache[prefix] if !ok { continue