From 19dc67b6cf1ebbab739dc861f22ba242ead00f6a Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Thu, 21 Dec 2017 09:35:41 +0000 Subject: [PATCH] render sensible labels for pseudo nodes with little/no metadata The main change here is to to label the node with its pseudoID as the last resort. We also set the rank to the pseudoID instead of the full node id, since including the "pseudo:" prefix is not conducive to good ranking. The rest is just moving from 'if' to 'switch'. --- render/detailed/summary.go | 52 +++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/render/detailed/summary.go b/render/detailed/summary.go index 3990af033..27e8292a7 100644 --- a/render/detailed/summary.go +++ b/render/detailed/summary.go @@ -155,51 +155,45 @@ func baseNodeSummary(r report.Report, n report.Node) NodeSummary { } func pseudoNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) { + pseudoID, _ := render.ParsePseudoNodeID(n.ID) base.Pseudo = true - base.Rank = n.ID + base.Rank = pseudoID - // try rendering as an internet node - if template, ok := templates[n.ID]; ok { + switch { + case render.IsInternetNode(n): + // render as an internet node + template := templates[n.ID] base.Label = template.Label base.LabelMinor = template.LabelMinor base.Shape = report.Cloud - return base, true - } - - // try rendering as a known service node - if strings.HasPrefix(n.ID, render.ServiceNodeIDPrefix) { + case strings.HasPrefix(n.ID, render.ServiceNodeIDPrefix): + // render as a known service node base.Label = n.ID[len(render.ServiceNodeIDPrefix):] base.LabelMinor = "" base.Shape = report.Cloud - return base, true - } - - // try rendering it as an uncontained node - if strings.HasPrefix(n.ID, render.UncontainedIDPrefix) { + case strings.HasPrefix(n.ID, render.UncontainedIDPrefix): + // render as an uncontained node base.Label = render.UncontainedMajor base.LabelMinor = report.ExtractHostID(n) base.Shape = report.Square base.Stack = true - return base, true - } - - // try rendering it as an unmanaged node - if strings.HasPrefix(n.ID, render.UnmanagedIDPrefix) { + case strings.HasPrefix(n.ID, render.UnmanagedIDPrefix): + // render as an unmanaged node base.Label = render.UnmanagedMajor + base.LabelMinor = report.ExtractHostID(n) base.Shape = report.Square base.Stack = true - base.LabelMinor = report.ExtractHostID(n) - return base, true + default: + // try rendering it as an endpoint + if _, addr, _, ok := report.ParseEndpointNodeID(n.ID); ok { + base.Label = addr + base.Shape = report.Circle + } else { + // last resort + base.Label = pseudoID + } } - - // try rendering it as an endpoint - if _, addr, _, ok := report.ParseEndpointNodeID(n.ID); ok { - base.Label = addr - base.Shape = report.Circle - return base, true - } - - return NodeSummary{}, false + return base, true } func processNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) {