package render import ( "github.com/weaveworks/scope/report" ) // WeaveRenderer is a Renderer which produces a renderable weave topology. // // not memoised var WeaveRenderer = MakeMap( MapWeaveIdentity, SelectOverlay, ) // MapWeaveIdentity maps an overlay topology node to a weave topology node. func MapWeaveIdentity(m report.Node) report.Node { peerPrefix, _ := report.ParseOverlayNodeID(m.ID) if peerPrefix != report.WeaveOverlayPeerPrefix { return report.Node{} } var ( node = m nickname, _ = m.Latest.Lookup(report.WeavePeerNickName) ) // Nodes without a host id indicate they are not monitored by Scope // (their info doesn't come from a probe monitoring that peer directly) // , display them as pseudo nodes. if _, ok := node.Latest.Lookup(report.HostNodeID); !ok { id := MakePseudoNodeID(UnmanagedID, nickname) node = NewDerivedPseudoNode(id, m) } return node }