mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-02 09:40:34 +00:00
Filter out docker overlay peers
This commit is contained in:
@@ -13,11 +13,10 @@ import (
|
||||
|
||||
// Keys for use in Node
|
||||
const (
|
||||
ImageID = "docker_image_id"
|
||||
ImageName = "docker_image_name"
|
||||
ImageLabelPrefix = "docker_image_label_"
|
||||
OverlayPeerPrefix = "docker_peer_"
|
||||
IsInHostNetwork = "docker_is_in_host_network"
|
||||
ImageID = "docker_image_id"
|
||||
ImageName = "docker_image_name"
|
||||
ImageLabelPrefix = "docker_image_label_"
|
||||
IsInHostNetwork = "docker_is_in_host_network"
|
||||
)
|
||||
|
||||
// Exposed for testing
|
||||
@@ -261,10 +260,9 @@ func (r *Reporter) overlayTopology() report.Topology {
|
||||
}
|
||||
|
||||
})
|
||||
peerID := OverlayPeerPrefix + r.hostID
|
||||
// Add both local and global networks to the LocalNetworks Set
|
||||
// since we treat container IPs as local
|
||||
node := report.MakeNode(report.MakeOverlayNodeID(peerID)).WithSets(
|
||||
node := report.MakeNode(report.MakeOverlayNodeID(report.DockerOverlayPeerPrefix, r.hostID)).WithSets(
|
||||
report.MakeSets().Add(host.LocalNetworks, report.MakeStringSet(subnets...)))
|
||||
return report.MakeTopology().AddNode(node)
|
||||
}
|
||||
|
||||
@@ -134,8 +134,7 @@ func TestReporter(t *testing.T) {
|
||||
|
||||
// Reporter should add a container network
|
||||
{
|
||||
peerID := docker.OverlayPeerPrefix + hostID
|
||||
overlayNodeID := report.MakeOverlayNodeID(peerID)
|
||||
overlayNodeID := report.MakeOverlayNodeID(report.DockerOverlayPeerPrefix, hostID)
|
||||
node, ok := rpt.Overlay.Nodes[overlayNodeID]
|
||||
if !ok {
|
||||
t.Fatalf("Expected report to have overlay node %q, but not found", overlayNodeID)
|
||||
|
||||
@@ -164,24 +164,25 @@ func (w *Weave) Report() (report.Report, error) {
|
||||
WeaveDNSHostname: {ID: WeaveDNSHostname, Label: "Weave DNS Name", From: report.FromLatest, Priority: 18},
|
||||
})
|
||||
for _, peer := range w.statusCache.Router.Peers {
|
||||
node := report.MakeNodeWith(report.MakeOverlayNodeID(peer.Name), map[string]string{
|
||||
WeavePeerName: peer.Name,
|
||||
WeavePeerNickName: peer.NickName,
|
||||
})
|
||||
node := report.MakeNodeWith(report.MakeOverlayNodeID(report.WeaveOverlayPeerPrefix, peer.Name),
|
||||
map[string]string{
|
||||
WeavePeerName: peer.Name,
|
||||
WeavePeerNickName: peer.NickName,
|
||||
})
|
||||
if peer.Name == w.statusCache.Router.Name {
|
||||
node = node.WithLatest(report.HostNodeID, mtime.Now(), w.hostID)
|
||||
node = node.WithParents(report.EmptySets.Add(report.Host, report.MakeStringSet(w.hostID)))
|
||||
}
|
||||
for _, conn := range peer.Connections {
|
||||
if conn.Outbound {
|
||||
node = node.WithAdjacent(report.MakeOverlayNodeID(conn.Name))
|
||||
node = node.WithAdjacent(report.MakeOverlayNodeID(report.WeaveOverlayPeerPrefix, conn.Name))
|
||||
}
|
||||
}
|
||||
r.Overlay.AddNode(node)
|
||||
}
|
||||
if w.statusCache.IPAM.DefaultSubnet != "" {
|
||||
r.Overlay.AddNode(
|
||||
report.MakeNode(report.MakeOverlayNodeID(w.statusCache.Router.Name)).WithSets(
|
||||
report.MakeNode(report.MakeOverlayNodeID(report.WeaveOverlayPeerPrefix, w.statusCache.Router.Name)).WithSets(
|
||||
report.MakeSets().Add(host.LocalNetworks, report.MakeStringSet(w.statusCache.IPAM.DefaultSubnet)),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ func TestWeaveTaggerOverlayTopology(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
nodeID := report.MakeOverlayNodeID(weave.MockWeavePeerName)
|
||||
nodeID := report.MakeOverlayNodeID(report.WeaveOverlayPeerPrefix, weave.MockWeavePeerName)
|
||||
node, ok := have.Overlay.Nodes[nodeID]
|
||||
if !ok {
|
||||
t.Errorf("Expected overlay node %q, but not found", nodeID)
|
||||
|
||||
@@ -13,11 +13,17 @@ var WeaveRenderer = MakeMap(
|
||||
|
||||
// MapWeaveIdentity maps an overlay topology node to a weave topology node.
|
||||
func MapWeaveIdentity(m report.Node, _ report.Networks) report.Nodes {
|
||||
var node = m
|
||||
if _, ok := m.Latest.Lookup(report.HostNodeID); !ok {
|
||||
|
||||
peerPrefix, peerName := report.ParseOverlayNodeID(m.ID)
|
||||
if peerPrefix != report.WeaveOverlayPeerPrefix {
|
||||
return nil
|
||||
}
|
||||
|
||||
var node = NewDerivedNode(peerName, m)
|
||||
if _, ok := node.Latest.Lookup(report.HostNodeID); !ok {
|
||||
nickname, _ := m.Latest.Lookup(overlay.WeavePeerNickName)
|
||||
id := MakePseudoNodeID(UnmanagedID, nickname)
|
||||
node = NewDerivedPseudoNode(id, m)
|
||||
}
|
||||
return report.Nodes{node.ID: node}
|
||||
return report.Nodes{peerName: node}
|
||||
}
|
||||
|
||||
29
report/id.go
29
report/id.go
@@ -22,6 +22,12 @@ const (
|
||||
|
||||
// Key added to nodes to prevent them being joined with conntracked connections
|
||||
DoesNotMakeConnections = "does_not_make_connections"
|
||||
|
||||
// WeaveOverlayPeerPrefix is the prefix for weave peers in the overlay network
|
||||
WeaveOverlayPeerPrefix = ""
|
||||
|
||||
// DockerOverlayPeerPrefix is the prefix for docker peers in the overlay network
|
||||
DockerOverlayPeerPrefix = "docker_peer_"
|
||||
)
|
||||
|
||||
// MakeEndpointNodeID produces an endpoint node ID from its composite parts.
|
||||
@@ -134,9 +140,26 @@ func parseSingleComponentID(tag string) func(string) (string, bool) {
|
||||
}
|
||||
|
||||
// MakeOverlayNodeID produces an overlay topology node ID from a router peer's
|
||||
// name, which is assumed to be globally unique.
|
||||
func MakeOverlayNodeID(peerName string) string {
|
||||
return "#" + peerName
|
||||
// prefix and name, which is assumed to be globally unique.
|
||||
func MakeOverlayNodeID(peerPrefix, peerName string) string {
|
||||
return "#" + peerPrefix + peerName
|
||||
}
|
||||
|
||||
// ParseOverlayNodeID produces the overlay type and peer name.
|
||||
func ParseOverlayNodeID(id string) (overlayPrefix string, peerName string) {
|
||||
|
||||
if !strings.HasPrefix(id, "#") {
|
||||
// Best we can do
|
||||
return "", ""
|
||||
}
|
||||
|
||||
id = id[1:]
|
||||
|
||||
if strings.HasPrefix(id, DockerOverlayPeerPrefix) {
|
||||
return DockerOverlayPeerPrefix, id[len(DockerOverlayPeerPrefix):]
|
||||
}
|
||||
|
||||
return WeaveOverlayPeerPrefix, peerName
|
||||
}
|
||||
|
||||
// ParseNodeID produces the host ID and remainder (typically an address) from
|
||||
|
||||
Reference in New Issue
Block a user