From 583e81d733e030d8f0968154bcce8bdf1a6f69a3 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Sun, 24 Dec 2017 19:11:24 +0000 Subject: [PATCH] make Report.Toplogy(name) fast Previously this was buidling a fresh map of all topologies, just so it could look up the one given as an argument. Node summarisation (via detailed.Summaries) in particular was badly affected by that. --- report/report.go | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/report/report.go b/report/report.go index e25f35b69..c314e34a4 100644 --- a/report/report.go +++ b/report/report.go @@ -314,8 +314,39 @@ func (r *Report) WalkPairedTopologies(o *Report, f func(*Topology, *Topology)) { // Topology gets a topology by name func (r Report) Topology(name string) (Topology, bool) { - if t, ok := r.TopologyMap()[name]; ok { - return *t, true + switch name { + case Endpoint: + return r.Endpoint, true + case Process: + return r.Process, true + case Container: + return r.Container, true + case ContainerImage: + return r.ContainerImage, true + case Pod: + return r.Pod, true + case Service: + return r.Service, true + case Deployment: + return r.Deployment, true + case ReplicaSet: + return r.ReplicaSet, true + case DaemonSet: + return r.DaemonSet, true + case StatefulSet: + return r.StatefulSet, true + case CronJob: + return r.CronJob, true + case Host: + return r.Host, true + case Overlay: + return r.Overlay, true + case ECSTask: + return r.ECSTask, true + case ECSService: + return r.ECSService, true + case SwarmService: + return r.SwarmService, true } return Topology{}, false }