From bb3ae1ef70818abe5a980fe3e58c6d078d3c5f12 Mon Sep 17 00:00:00 2001 From: Gustavo Massaneiro Date: Wed, 16 Feb 2022 04:01:59 -0300 Subject: [PATCH] Service Map node key as entry.Name instead of entry.IP (#818) --- .../service_map_controller_test.go | 4 +-- agent/pkg/servicemap/servicemap.go | 33 +++++++++++++------ agent/pkg/servicemap/servicemap_test.go | 25 ++++++++++---- 3 files changed, 44 insertions(+), 18 deletions(-) diff --git a/agent/pkg/controllers/service_map_controller_test.go b/agent/pkg/controllers/service_map_controller_test.go index 45b8f8a27..c6b372406 100644 --- a/agent/pkg/controllers/service_map_controller_test.go +++ b/agent/pkg/controllers/service_map_controller_test.go @@ -102,13 +102,13 @@ func (s *ServiceMapControllerSuite) TestGet() { // response nodes aNode := servicemap.ServiceMapNode{ Id: 1, - Name: TCPEntryA.IP, + Name: TCPEntryA.Name, Entry: TCPEntryA, Count: 1, } bNode := servicemap.ServiceMapNode{ Id: 2, - Name: TCPEntryB.IP, + Name: TCPEntryB.Name, Entry: TCPEntryB, Count: 1, } diff --git a/agent/pkg/servicemap/servicemap.go b/agent/pkg/servicemap/servicemap.go index 0738c0727..3537e9855 100644 --- a/agent/pkg/servicemap/servicemap.go +++ b/agent/pkg/servicemap/servicemap.go @@ -172,20 +172,33 @@ func (s *serviceMap) NewTCPEntry(src *tapApi.TCP, dst *tapApi.TCP, p *tapApi.Pro return } - srcEntry := &entryData{ - key: key(src.IP), - entry: src, - } - if len(srcEntry.entry.Name) == 0 { + var srcEntry *entryData + var dstEntry *entryData + + if len(src.Name) == 0 { + srcEntry = &entryData{ + key: key(src.IP), + entry: src, + } srcEntry.entry.Name = UnresolvedNodeName + } else { + srcEntry = &entryData{ + key: key(src.Name), + entry: src, + } } - dstEntry := &entryData{ - key: key(dst.IP), - entry: dst, - } - if len(dstEntry.entry.Name) == 0 { + if len(dst.Name) == 0 { + dstEntry = &entryData{ + key: key(dst.IP), + entry: dst, + } dstEntry.entry.Name = UnresolvedNodeName + } else { + dstEntry = &entryData{ + key: key(dst.Name), + entry: dst, + } } s.addEdge(srcEntry, dstEntry, p) diff --git a/agent/pkg/servicemap/servicemap_test.go b/agent/pkg/servicemap/servicemap_test.go index 0372fbde2..9a0de04b6 100644 --- a/agent/pkg/servicemap/servicemap_test.go +++ b/agent/pkg/servicemap/servicemap_test.go @@ -268,9 +268,14 @@ func (s *ServiceMapEnabledSuite) TestServiceMap() { assert.LessOrEqual(node.Id, expectedNodeCount) // entry - // node.Name is the key of the node, key = entry.IP + // node.Name is the key of the node, key = entry.Name by default // entry.Name is the name of the service and could be unresolved - assert.Equal(node.Name, node.Entry.IP) + // when entry.Name is unresolved, key = entry.IP + if node.Entry.Name == UnresolvedNodeName { + assert.Equal(node.Name, node.Entry.IP) + } else { + assert.Equal(node.Name, node.Entry.Name) + } assert.Equal(Port, node.Entry.Port) assert.Equal(entryName, node.Entry.Name) @@ -320,16 +325,24 @@ func (s *ServiceMapEnabledSuite) TestServiceMap() { cdEdge := -1 acEdge := -1 var validateEdge = func(edge ServiceMapEdge, sourceEntryName string, destEntryName string, protocolName string, protocolCount int) { - // source + // source node assert.Contains(nodeIds, edge.Source.Id) assert.LessOrEqual(edge.Source.Id, expectedNodeCount) - assert.Equal(edge.Source.Name, edge.Source.Entry.IP) + if edge.Source.Entry.Name == UnresolvedNodeName { + assert.Equal(edge.Source.Name, edge.Source.Entry.IP) + } else { + assert.Equal(edge.Source.Name, edge.Source.Entry.Name) + } assert.Equal(sourceEntryName, edge.Source.Entry.Name) - // destination + // destination node assert.Contains(nodeIds, edge.Destination.Id) assert.LessOrEqual(edge.Destination.Id, expectedNodeCount) - assert.Equal(edge.Destination.Name, edge.Destination.Entry.IP) + if edge.Destination.Entry.Name == UnresolvedNodeName { + assert.Equal(edge.Destination.Name, edge.Destination.Entry.IP) + } else { + assert.Equal(edge.Destination.Name, edge.Destination.Entry.Name) + } assert.Equal(destEntryName, edge.Destination.Entry.Name) // protocol