From 51fa8d8ce0297d93539dccebc183cb3cba04ee5c Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Fri, 4 Mar 2016 14:07:56 +0000 Subject: [PATCH] Review feedback II --- render/detailed/node_test.go | 34 ------ render/expected/expected.go | 229 +++++++++-------------------------- render/id.go | 5 - render/mapping.go | 119 ++++++++---------- render/topologies.go | 5 +- render/topologies_test.go | 11 -- 6 files changed, 109 insertions(+), 294 deletions(-) diff --git a/render/detailed/node_test.go b/render/detailed/node_test.go index c4df7dc66..ec2cbe02d 100644 --- a/render/detailed/node_test.go +++ b/render/detailed/node_test.go @@ -261,40 +261,6 @@ func TestMakeDetailedContainerNode(t *testing.T) { }, }, }, - { - ID: "pseudo:10.10.10.10:192.168.1.1:80", - Label: "10.10.10.10", - Linkable: true, - Metadata: []detailed.MetadataRow{ - { - ID: "port", - Value: "80", - Datatype: "number", - }, - { - ID: "count", - Value: "2", - Datatype: "number", - }, - }, - }, - { - ID: "pseudo:10.10.10.11:192.168.1.1:80", - Label: "10.10.10.11", - Linkable: true, - Metadata: []detailed.MetadataRow{ - { - ID: "port", - Value: "80", - Datatype: "number", - }, - { - ID: "count", - Value: "1", - Datatype: "number", - }, - }, - }, }, }, { diff --git a/render/expected/expected.go b/render/expected/expected.go index c0be8a194..76b763764 100644 --- a/render/expected/expected.go +++ b/render/expected/expected.go @@ -2,7 +2,6 @@ package expected import ( "fmt" - "net" "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/report" @@ -27,7 +26,7 @@ var ( NonContainerEndpointID = render.MakeEndpointID(fixture.ServerHostID, fixture.ServerIP, fixture.NonContainerClientPort) GoogleEndpointID = render.MakeEndpointID("", fixture.GoogleIP, fixture.GooglePort) - RemappedEndpoints = (render.RenderableNodes{ + RenderedEndpoints = (render.RenderableNodes{ Client54001EndpointID: { ID: Client54001EndpointID, Shape: circle, @@ -104,12 +103,12 @@ var ( }, }).Prune() - Client54001PseudoEndpointID = render.MakePseudoEndpointID(fixture.ClientHostID, fixture.ClientIP, fixture.ClientPort54001) - Client54002PseudoEndpointID = render.MakePseudoEndpointID(fixture.ClientHostID, fixture.ClientIP, fixture.ClientPort54002) - ServerPseudoEndpointID = render.MakePseudoEndpointID(fixture.ServerHostID, fixture.ServerIP, fixture.ServerPort) - NonContainerPseudoEndpointID = render.MakePseudoEndpointID(fixture.ServerHostID, fixture.ServerIP, fixture.NonContainerClientPort) - unknownPseudoNode1ID = render.MakePseudoNodeID(fixture.UnknownClient1IP, fixture.ServerIP, fixture.ServerPort) - unknownPseudoNode2ID = render.MakePseudoNodeID(fixture.UnknownClient3IP, fixture.ServerIP, fixture.ServerPort) + ClientProcess1ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client1PID) + ClientProcess2ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client2PID) + ServerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.ServerPID) + nonContainerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.NonContainerPID) + unknownPseudoNode1ID = render.MakePseudoNodeID(fixture.UnknownClient1IP, fixture.ServerIP, fixture.ServerPort) + unknownPseudoNode2ID = render.MakePseudoNodeID(fixture.UnknownClient3IP, fixture.ServerIP, fixture.ServerPort) unknownPseudoNode1 = func(adjacent string) render.RenderableNode { return render.RenderableNode{ @@ -119,8 +118,8 @@ var ( Shape: circle, Node: report.MakeNode().WithAdjacent(adjacent), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[UnknownClient1EndpointID], - RemappedEndpoints[UnknownClient2EndpointID], + RenderedEndpoints[UnknownClient1EndpointID], + RenderedEndpoints[UnknownClient2EndpointID], ), EdgeMetadata: report.EdgeMetadata{ EgressPacketCount: newu64(70), @@ -136,7 +135,7 @@ var ( Shape: circle, Node: report.MakeNode().WithAdjacent(adjacent), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[UnknownClient3EndpointID], + RenderedEndpoints[UnknownClient3EndpointID], ), EdgeMetadata: report.EdgeMetadata{ EgressPacketCount: newu64(50), @@ -153,7 +152,7 @@ var ( Shape: cloud, Node: report.MakeNode().WithAdjacent(adjacent), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[RandomClientEndpointID], + RenderedEndpoints[RandomClientEndpointID], ), EdgeMetadata: report.EdgeMetadata{ EgressPacketCount: newu64(60), @@ -170,86 +169,20 @@ var ( Node: report.MakeNode(), EdgeMetadata: report.EdgeMetadata{}, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[GoogleEndpointID], + RenderedEndpoints[GoogleEndpointID], ), } - RenderedEndpoints = (render.RenderableNodes{ - Client54001PseudoEndpointID: { - ID: Client54001PseudoEndpointID, - LabelMajor: net.JoinHostPort(fixture.ClientIP, fixture.ClientPort54001), - LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client1PID), - Shape: circle, - Node: report.MakeNode().WithAdjacent(ServerPseudoEndpointID), - Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - ), - EdgeMetadata: report.EdgeMetadata{ - EgressPacketCount: newu64(10), - EgressByteCount: newu64(100), - }, - }, - Client54002PseudoEndpointID: { - ID: Client54002PseudoEndpointID, - LabelMajor: net.JoinHostPort(fixture.ClientIP, fixture.ClientPort54002), - LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client2PID), - Shape: circle, - Node: report.MakeNode().WithAdjacent(ServerPseudoEndpointID), - Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54002EndpointID], - ), - EdgeMetadata: report.EdgeMetadata{ - EgressPacketCount: newu64(20), - EgressByteCount: newu64(200), - }, - }, - ServerPseudoEndpointID: { - ID: ServerPseudoEndpointID, - LabelMajor: net.JoinHostPort(fixture.ServerIP, fixture.ServerPort), - LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.ServerPID), - Shape: circle, - Node: report.MakeNode(), - Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - ), - EdgeMetadata: report.EdgeMetadata{ - IngressPacketCount: newu64(210), - IngressByteCount: newu64(2100), - }, - }, - NonContainerPseudoEndpointID: { - ID: NonContainerPseudoEndpointID, - LabelMajor: net.JoinHostPort(fixture.ServerIP, fixture.NonContainerClientPort), - LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.NonContainerPID), - Shape: circle, - Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), - Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - ), - }, - unknownPseudoNode1ID: unknownPseudoNode1(ServerPseudoEndpointID), - unknownPseudoNode2ID: unknownPseudoNode2(ServerPseudoEndpointID), - render.IncomingInternetID: theIncomingInternetNode(ServerPseudoEndpointID), - render.OutgoingInternetID: theOutgoingInternetNode, - }).Prune() - - ClientProcess1ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client1PID) - ClientProcess2ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client2PID) - ServerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.ServerPID) - nonContainerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.NonContainerPID) - RenderedProcesses = (render.RenderableNodes{ ClientProcess1ID: { ID: ClientProcess1ID, LabelMajor: fixture.Client1Name, LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client1PID), Rank: fixture.Client1Name, - Pseudo: false, Shape: square, Node: report.MakeNode().WithAdjacent(ServerProcessID), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RenderedEndpoints[Client54001PseudoEndpointID], + RenderedEndpoints[Client54001EndpointID], ), EdgeMetadata: report.EdgeMetadata{ EgressPacketCount: newu64(10), @@ -261,12 +194,10 @@ var ( LabelMajor: fixture.Client2Name, LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client2PID), Rank: fixture.Client2Name, - Pseudo: false, Shape: square, Node: report.MakeNode().WithAdjacent(ServerProcessID), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54002EndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], + RenderedEndpoints[Client54002EndpointID], ), EdgeMetadata: report.EdgeMetadata{ EgressPacketCount: newu64(20), @@ -278,12 +209,10 @@ var ( LabelMajor: fixture.ServerName, LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.ServerPID), Rank: fixture.ServerName, - Pseudo: false, Shape: square, Node: report.MakeNode(), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[ServerEndpointID], ), EdgeMetadata: report.EdgeMetadata{ IngressPacketCount: newu64(210), @@ -295,12 +224,10 @@ var ( LabelMajor: fixture.NonContainerName, LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.NonContainerPID), Rank: fixture.NonContainerName, - Pseudo: false, Shape: square, Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - RenderedEndpoints[NonContainerPseudoEndpointID], + RenderedEndpoints[NonContainerEndpointID], ), EdgeMetadata: report.EdgeMetadata{}, }, @@ -316,14 +243,11 @@ var ( LabelMajor: fixture.Client1Name, LabelMinor: "2 processes", Rank: fixture.Client1Name, - Pseudo: false, Shape: square, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RemappedEndpoints[Client54002EndpointID], - RenderedEndpoints[Client54001PseudoEndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], + RenderedEndpoints[Client54001EndpointID], + RenderedEndpoints[Client54002EndpointID], RenderedProcesses[ClientProcess1ID], RenderedProcesses[ClientProcess2ID], ), @@ -338,12 +262,10 @@ var ( LabelMajor: fixture.ServerName, LabelMinor: "1 process", Rank: fixture.ServerName, - Pseudo: false, Shape: square, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[ServerEndpointID], RenderedProcesses[ServerProcessID], ), Node: report.MakeNode(), @@ -357,12 +279,10 @@ var ( LabelMajor: fixture.NonContainerName, LabelMinor: "1 process", Rank: fixture.NonContainerName, - Pseudo: false, Shape: square, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - RenderedEndpoints[NonContainerPseudoEndpointID], + RenderedEndpoints[NonContainerEndpointID], RenderedProcesses[nonContainerProcessID], ), Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), @@ -383,13 +303,10 @@ var ( ID: ClientContainerID, LabelMajor: "client", LabelMinor: fixture.ClientHostName, - Pseudo: false, Shape: hexagon, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RemappedEndpoints[Client54002EndpointID], - RenderedEndpoints[Client54001PseudoEndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], + RenderedEndpoints[Client54001EndpointID], + RenderedEndpoints[Client54002EndpointID], RenderedProcesses[ClientProcess1ID], RenderedProcesses[ClientProcess2ID], ), @@ -404,11 +321,9 @@ var ( ID: ServerContainerID, LabelMajor: "server", LabelMinor: fixture.ServerHostName, - Pseudo: false, Shape: hexagon, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[ServerEndpointID], RenderedProcesses[ServerProcessID], ), Node: report.MakeNode(), @@ -422,19 +337,18 @@ var ( ID: uncontainedServerID, LabelMajor: render.UncontainedMajor, LabelMinor: fixture.ServerHostName, - Pseudo: true, Shape: square, Stack: true, + Pseudo: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - RenderedEndpoints[NonContainerPseudoEndpointID], + RenderedEndpoints[NonContainerEndpointID], RenderedProcesses[nonContainerProcessID], ), Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), EdgeMetadata: report.EdgeMetadata{}, }, - unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerID), - unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerID), + // unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerID), + // unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerID), render.IncomingInternetID: theIncomingInternetNode(ServerContainerID), render.OutgoingInternetID: theOutgoingInternetNode, }).Prune() @@ -448,14 +362,11 @@ var ( LabelMajor: fixture.ClientContainerImageName, LabelMinor: "1 container", Rank: fixture.ClientContainerImageName, - Pseudo: false, Shape: hexagon, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RemappedEndpoints[Client54002EndpointID], - RenderedEndpoints[Client54001PseudoEndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], + RenderedEndpoints[Client54001EndpointID], + RenderedEndpoints[Client54002EndpointID], RenderedProcesses[ClientProcess1ID], RenderedProcesses[ClientProcess2ID], RenderedContainers[ClientContainerID], @@ -471,12 +382,10 @@ var ( LabelMajor: fixture.ServerContainerImageName, LabelMinor: "1 container", Rank: fixture.ServerContainerImageName, - Pseudo: false, Shape: hexagon, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[ServerEndpointID], RenderedProcesses[ServerProcessID], RenderedContainers[ServerContainerID], ), @@ -490,19 +399,18 @@ var ( ID: uncontainedServerID, LabelMajor: render.UncontainedMajor, LabelMinor: fixture.ServerHostName, - Pseudo: true, Shape: square, Stack: true, + Pseudo: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - RenderedEndpoints[NonContainerPseudoEndpointID], + RenderedEndpoints[NonContainerEndpointID], RenderedProcesses[nonContainerProcessID], ), Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), EdgeMetadata: report.EdgeMetadata{}, }, - unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerImageID), - unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerImageID), + // unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerImageID), + // unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerImageID), render.IncomingInternetID: theIncomingInternetNode(ServerContainerImageID), render.OutgoingInternetID: theOutgoingInternetNode, }).Prune() @@ -563,22 +471,14 @@ var ( LabelMajor: "client", // before first . LabelMinor: "hostname.com", // after first . Rank: "hostname.com", - Pseudo: false, Shape: circle, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RemappedEndpoints[Client54002EndpointID], - - RenderedEndpoints[Client54001PseudoEndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], - + RenderedEndpoints[Client54001EndpointID], + RenderedEndpoints[Client54002EndpointID], RenderedProcesses[ClientProcess1ID], RenderedProcesses[ClientProcess2ID], - RenderedContainers[ClientContainerID], - RenderedContainerImages[ClientContainerImageID], - RenderedAddresses[ClientAddressID], ), Node: report.MakeNode().WithAdjacent(ServerHostID), @@ -592,11 +492,9 @@ var ( LabelMajor: "server", // before first . LabelMinor: "hostname.com", // after first . Rank: "hostname.com", - Pseudo: false, Shape: circle, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[ServerEndpointID], RenderedProcesses[ServerProcessID], RenderedContainers[ServerContainerID], @@ -604,9 +502,10 @@ var ( RenderedAddresses[ServerAddressID], - // RemappedEndpoints[NonContainerEndpointID], - // RenderedEndpoints[NonContainerPseudoEndpointID], - // RenderedProcesses[nonContainerProcessID], + // See #1102 + // RemappedEndpoints[NonContainerEndpointID], + // RenderedEndpoints[NonContainerPseudoEndpointID], + // RenderedProcesses[nonContainerProcessID], ), Node: report.MakeNode(), EdgeMetadata: report.EdgeMetadata{ @@ -623,9 +522,8 @@ var ( Node: report.MakeNode().WithAdjacent(ServerHostID), EdgeMetadata: report.EdgeMetadata{}, Children: render.MakeRenderableNodeSet( - //TODO - //RenderedEndpoints[unknownPseudoNode2ID], - //RenderedAddresses[unknownPseudoAddress1ID], + // RenderedEndpoints[unknownPseudoNode2ID], + // RenderedAddresses[unknownPseudoAddress1ID], ), }, pseudoHostID2: { @@ -636,8 +534,8 @@ var ( Node: report.MakeNode().WithAdjacent(ServerHostID), EdgeMetadata: report.EdgeMetadata{}, Children: render.MakeRenderableNodeSet( - //RenderedEndpoints[unknownPseudoNode2ID], - //RenderedAddresses[unknownPseudoAddress2ID], + // RenderedEndpoints[unknownPseudoNode2ID], + // RenderedAddresses[unknownPseudoAddress2ID], ), }, render.IncomingInternetID: { @@ -649,7 +547,7 @@ var ( Node: report.MakeNode().WithAdjacent(ServerHostID), EdgeMetadata: report.EdgeMetadata{}, Children: render.MakeRenderableNodeSet( - //RenderedEndpoints[render.TheInternetID], + // RenderedEndpoints[render.TheInternetID], ), }, }).Prune() @@ -663,13 +561,10 @@ var ( LabelMajor: "pong-a", LabelMinor: "1 container", Rank: "ping/pong-a", - Pseudo: false, Shape: heptagon, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RemappedEndpoints[Client54002EndpointID], - RenderedEndpoints[Client54001PseudoEndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], + RenderedEndpoints[Client54001EndpointID], + RenderedEndpoints[Client54002EndpointID], RenderedProcesses[ClientProcess1ID], RenderedProcesses[ClientProcess2ID], RenderedContainers[ClientContainerID], @@ -685,11 +580,9 @@ var ( LabelMajor: "pong-b", LabelMinor: "1 container", Rank: "ping/pong-b", - Pseudo: false, Shape: heptagon, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[ServerEndpointID], RenderedProcesses[ServerProcessID], RenderedContainers[ServerContainerID], ), @@ -707,15 +600,14 @@ var ( Shape: square, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - RenderedEndpoints[NonContainerPseudoEndpointID], + RenderedEndpoints[NonContainerEndpointID], RenderedProcesses[nonContainerProcessID], ), Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), EdgeMetadata: report.EdgeMetadata{}, }, - unknownPseudoNode1ID: unknownPseudoNode1(ServerPodRenderedID), - unknownPseudoNode2ID: unknownPseudoNode2(ServerPodRenderedID), + // unknownPseudoNode1ID: unknownPseudoNode1(ServerPodRenderedID), + // unknownPseudoNode2ID: unknownPseudoNode2(ServerPodRenderedID), render.IncomingInternetID: theIncomingInternetNode(ServerPodRenderedID), render.OutgoingInternetID: theOutgoingInternetNode, }).Prune() @@ -728,16 +620,12 @@ var ( LabelMajor: "pongservice", LabelMinor: "2 pods", Rank: fixture.ServiceID, - Pseudo: false, Shape: heptagon, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[Client54001EndpointID], - RemappedEndpoints[Client54002EndpointID], - RemappedEndpoints[ServerEndpointID], - RenderedEndpoints[Client54001PseudoEndpointID], - RenderedEndpoints[Client54002PseudoEndpointID], - RenderedEndpoints[ServerPseudoEndpointID], + RenderedEndpoints[Client54001EndpointID], + RenderedEndpoints[Client54002EndpointID], + RenderedEndpoints[ServerEndpointID], RenderedProcesses[ClientProcess1ID], RenderedProcesses[ClientProcess2ID], RenderedProcesses[ServerProcessID], @@ -762,15 +650,14 @@ var ( Shape: square, Stack: true, Children: render.MakeRenderableNodeSet( - RemappedEndpoints[NonContainerEndpointID], - RenderedEndpoints[NonContainerPseudoEndpointID], + RenderedEndpoints[NonContainerEndpointID], RenderedProcesses[nonContainerProcessID], ), Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID), EdgeMetadata: report.EdgeMetadata{}, }, - unknownPseudoNode1ID: unknownPseudoNode1(ServiceRenderedID), - unknownPseudoNode2ID: unknownPseudoNode2(ServiceRenderedID), + // unknownPseudoNode1ID: unknownPseudoNode1(ServiceRenderedID), + // unknownPseudoNode2ID: unknownPseudoNode2(ServiceRenderedID), render.IncomingInternetID: theIncomingInternetNode(ServiceRenderedID), render.OutgoingInternetID: theOutgoingInternetNode, }).Prune() diff --git a/render/id.go b/render/id.go index 5acc38b90..03a0f693c 100644 --- a/render/id.go +++ b/render/id.go @@ -24,11 +24,6 @@ func MakeEndpointID(hostID, addr, port string) string { return makeID("endpoint", hostID, addr, port) } -// MakePseudoEndpointID makes a pseudo endpoint node ID for rendered nodes. -func MakePseudoEndpointID(hostID, addr, port string) string { - return makeID("pseudo-endpoint", hostID, addr, port) -} - // MakeProcessID makes a process node ID for rendered nodes. func MakeProcessID(hostID, pid string) string { return makeID("process", hostID, pid) diff --git a/render/mapping.go b/render/mapping.go index 39133ab02..0ebcaf6fb 100644 --- a/render/mapping.go +++ b/render/mapping.go @@ -60,29 +60,11 @@ func theInternetNode(m RenderableNode) RenderableNode { return node } -// RemapEndpointIDs remaps endpoints to have an id format consistent +// MapEndpointIdentity remaps endpoints to have an id format consistent // with render/id.go; no pseudo nodes are introduced in this step, so // that pseudo nodes introduces later are guaranteed to have endpoints // as children. This is needed to construct the connection details tables. -func RemapEndpointIDs(m RenderableNode, _ report.Networks) RenderableNodes { - addr, ok := m.Latest.Lookup(endpoint.Addr) - if !ok { - return RenderableNodes{} - } - - port, ok := m.Latest.Lookup(endpoint.Port) - if !ok { - return RenderableNodes{} - } - - id := MakeEndpointID(report.ExtractHostID(m.Node), addr, port) - return RenderableNodes{id: NewRenderableNodeWith(id, "", "", "", m)} -} - -// MapEndpointIdentity maps an endpoint topology node to a single endpoint -// renderable node. As it is only ever run on endpoint topology nodes, we -// expect that certain keys are present. -func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNodes { +func MapEndpointIdentity(m RenderableNode, _ report.Networks) RenderableNodes { addr, ok := m.Latest.Lookup(endpoint.Addr) if !ok { return RenderableNodes{} @@ -99,50 +81,8 @@ func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNode return RenderableNodes{} } - // Nodes without a hostid are treated as psuedo nodes - if _, ok = m.Latest.Lookup(report.HostNodeID); !ok { - var node RenderableNode - - if ip := net.ParseIP(addr); ip != nil && !local.Contains(ip) { - // If the dstNodeAddr is not in a network local to this report, we emit an - // internet node - node = theInternetNode(m) - - } else if p, err := strconv.Atoi(port); err == nil && len(m.Adjacency) > 0 && p >= 32768 && p < 65535 { - // We are a 'client' pseudo node if the port is in the ephemeral port range. - // Linux uses 32768 to 61000, IANA suggests 49152 to 65535. - // We only exist if there is something in our adjacency - // Generate a single pseudo node for every (client ip, server ip, server port) - _, serverIP, serverPort, _ := ParseEndpointID(m.Adjacency[0]) - node = newDerivedPseudoNode(MakePseudoNodeID(addr, serverIP, serverPort), addr, m) - - } else if port != "" { - // Otherwise (the server node is missing), generate a pseudo node for every (server ip, server port) - node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr+":"+port, m) - - } else { - // Empty port for some reason... - node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr, m) - } - - node.Children = node.Children.Add(m) - return RenderableNodes{node.ID: node} - } - - var ( - id = MakePseudoEndpointID(report.ExtractHostID(m.Node), addr, port) - major = fmt.Sprintf("%s:%s", addr, port) - minor = report.ExtractHostID(m.Node) - ) - - pid, pidOK := m.Latest.Lookup(process.PID) - if pidOK { - minor = fmt.Sprintf("%s (%s)", minor, pid) - } - - node := NewRenderableNodeWith(id, major, minor, "", m) - node.Children = node.Children.Add(m) - return RenderableNodes{id: node} + id := MakeEndpointID(report.ExtractHostID(m.Node), addr, port) + return RenderableNodes{id: NewRenderableNodeWith(id, "", "", "", m)} } // MapProcessIdentity maps a process topology node to a process renderable @@ -447,9 +387,45 @@ func MapIP2Container(n RenderableNode, _ report.Networks) RenderableNodes { // format for a process, but without any Major or Minor labels. // It does not have enough info to do that, and the resulting graph // must be merged with a process graph to get that info. -func MapEndpoint2Process(n RenderableNode, _ report.Networks) RenderableNodes { - if n.Pseudo { - return RenderableNodes{n.ID: n} +func MapEndpoint2Process(n RenderableNode, local report.Networks) RenderableNodes { + // Nodes without a hostid are treated as psuedo nodes + if _, ok := n.Latest.Lookup(report.HostNodeID); !ok { + var node RenderableNode + + addr, ok := n.Latest.Lookup(endpoint.Addr) + if !ok { + return RenderableNodes{} + } + + port, ok := n.Latest.Lookup(endpoint.Port) + if !ok { + return RenderableNodes{} + } + + if ip := net.ParseIP(addr); ip != nil && !local.Contains(ip) { + // If the dstNodeAddr is not in a network local to this report, we emit an + // internet node + node = theInternetNode(n) + + } else if p, err := strconv.Atoi(port); err == nil && len(n.Adjacency) > 0 && p >= 32768 && p < 65535 { + // We are a 'client' pseudo node if the port is in the ephemeral port range. + // Linux uses 32768 to 61000, IANA suggests 49152 to 65535. + // We only exist if there is something in our adjacency + // Generate a single pseudo node for every (client ip, server ip, server port) + _, serverIP, serverPort, _ := ParseEndpointID(n.Adjacency[0]) + node = newDerivedPseudoNode(MakePseudoNodeID(addr, serverIP, serverPort), addr, n) + + } else if port != "" { + // Otherwise (the server node is missing), generate a pseudo node for every (server ip, server port) + node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr+":"+port, n) + + } else { + // Empty port for some reason... + node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr, n) + } + + node.Children = node.Children.Add(n) + return RenderableNodes{node.ID: node} } pid, ok := n.Node.Latest.Lookup(process.PID) @@ -476,11 +452,16 @@ func MapEndpoint2Process(n RenderableNode, _ report.Networks) RenderableNodes { // It does not have enough info to do that, and the resulting graph // must be merged with a container graph to get that info. func MapProcess2Container(n RenderableNode, _ report.Networks) RenderableNodes { - // Propogate pseudo node - if n.Pseudo { + // Propogate the internet pseudo node + if strings.HasSuffix(n.ID, TheInternetID) { return RenderableNodes{n.ID: n} } + // Don't propogate non-internet pseudo nodes + if n.Pseudo { + return RenderableNodes{} + } + // Otherwise, if the process is not in a container, group it // into an per-host "Uncontained" node. If for whatever reason // this node doesn't have a host id in their nodemetadata, it'll diff --git a/render/topologies.go b/render/topologies.go index ee9c431d3..ffe2772f5 100644 --- a/render/topologies.go +++ b/render/topologies.go @@ -13,10 +13,7 @@ import ( // EndpointRenderer is a Renderer which produces a renderable endpoint graph. var EndpointRenderer = MakeMap( MapEndpointIdentity, - MakeMap( - RemapEndpointIDs, - SelectEndpoint, - ), + SelectEndpoint, ) // ProcessRenderer is a Renderer which produces a renderable process diff --git a/render/topologies_test.go b/render/topologies_test.go index 449c85d76..a41ec9040 100644 --- a/render/topologies_test.go +++ b/render/topologies_test.go @@ -13,17 +13,6 @@ import ( "github.com/weaveworks/scope/test/reflect" ) -func TestRemappedEndpoints(t *testing.T) { - have := render.MakeMap( - render.RemapEndpointIDs, - render.SelectEndpoint, - ).Render(fixture.Report).Prune() - want := expected.RemappedEndpoints - if !reflect.DeepEqual(want, have) { - t.Error(test.Diff(want, have)) - } -} - func TestEndpointRenderer(t *testing.T) { have := render.EndpointRenderer.Render(fixture.Report).Prune() want := expected.RenderedEndpoints