From 11e5135d195e4c8448c91e358d99edcebe27eca7 Mon Sep 17 00:00:00 2001 From: Alfonso Acosta Date: Tue, 25 Aug 2015 10:31:13 +0000 Subject: [PATCH] Address PR comment --- render/detailed_node.go | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/render/detailed_node.go b/render/detailed_node.go index 6c08a7575..66e42d135 100644 --- a/render/detailed_node.go +++ b/render/detailed_node.go @@ -76,20 +76,7 @@ func MakeDetailedNode(r report.Report, n RenderableNode) DetailedNode { tables := sortableTables{} // Figure out if multiple hosts/containers are referenced by the renderableNode - originHosts := make(map[string]struct{}) - originContainers := make(map[string]struct{}) - for _, id := range n.Origins { - for _, topology := range r.Topologies() { - if nmd, ok := topology.NodeMetadatas[id]; ok { - originHosts[report.ExtractHostID(nmd)] = struct{}{} - if id, ok := nmd.Metadata[docker.ContainerID]; ok { - originContainers[id] = struct{}{} - } - } - } - } - multiHost := len(originHosts) > 1 - multiContainer := len(originContainers) > 1 + multiContainer, multiHost := getRenderingContext(r, n) // RenderableNode may be the result of merge operation(s), and so may have // multiple origins. The ultimate goal here is to generate tables to view @@ -122,6 +109,28 @@ func MakeDetailedNode(r report.Report, n RenderableNode) DetailedNode { } } +func getRenderingContext(r report.Report, n RenderableNode) (multiContainer bool, multiHost bool) { + originHosts := make(map[string]struct{}) + originContainers := make(map[string]struct{}) + for _, id := range n.Origins { + for _, topology := range r.Topologies() { + if nmd, ok := topology.NodeMetadatas[id]; ok { + originHosts[report.ExtractHostID(nmd)] = struct{}{} + if id, ok := nmd.Metadata[docker.ContainerID]; ok { + originContainers[id] = struct{}{} + } + } + // Return early if possible + multiHost = len(originHosts) > 1 + multiContainer = len(originContainers) > 1 + if multiHost && multiContainer { + return + } + } + } + return +} + func connectionsTable(connections []Row, r report.Report, n RenderableNode) (Table, bool) { sec := r.Window.Seconds() rate := func(u *uint64) (float64, bool) {