forked from weaveworks/scope
-
Notifications
You must be signed in to change notification settings - Fork 0
/
weave.go
35 lines (29 loc) · 968 Bytes
/
weave.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package render
import (
"github.com/weaveworks/scope/probe/overlay"
"github.com/weaveworks/scope/report"
)
// WeaveRenderer is a Renderer which produces a renderable weave topology.
var WeaveRenderer = MakeMap(
MapWeaveIdentity,
SelectOverlay,
)
// MapWeaveIdentity maps an overlay topology node to a weave topology node.
func MapWeaveIdentity(m report.Node, _ report.Networks) report.Nodes {
peerPrefix, _ := report.ParseOverlayNodeID(m.ID)
if peerPrefix != report.WeaveOverlayPeerPrefix {
return nil
}
var (
node = m
nickname, _ = m.Latest.Lookup(overlay.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 report.Nodes{node.ID: node}
}