Skip to content

Commit

Permalink
fix - peer nodes should have the peer.String() (i.e. full name), elim…
Browse files Browse the repository at this point in the history
…inating the namespace only from the label displayed on the graph.

to avoid wrong edges if different namespaces have peers with similar names
  • Loading branch information
shireenf-ibm committed Dec 7, 2023
1 parent da563e0 commit 3c94246
Show file tree
Hide file tree
Showing 37 changed files with 1,269 additions and 1,272 deletions.
12 changes: 5 additions & 7 deletions pkg/netpol/connlist/conns_formatter_dot.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@ type formatDOT struct {
// formats an edge line from a singleConnFields struct , to be used for dot graph
func getEdgeLine(c Peer2PeerConnection) string {
connStr := common.ConnStrFromConnProperties(c.AllProtocolsAndPorts(), c.ProtocolsAndPorts())
srcName, _, _ := peerNameAndColorByType(c.Src())
dstName, _, _ := peerNameAndColorByType(c.Dst())
return fmt.Sprintf("\t%q -> %q [label=%q color=\"gold2\" fontcolor=\"darkgreen\"]", srcName, dstName, connStr)
return fmt.Sprintf("\t%q -> %q [label=%q color=\"gold2\" fontcolor=\"darkgreen\"]", c.Src().String(), c.Dst().String(), connStr)
}

// returns the peer name and color to be represented in the graph, and whether the peer is external to cluster's namespaces
func peerNameAndColorByType(peer Peer) (name, color string, isExternal bool) {
// returns the peer label and color to be represented in the graph, and whether the peer is external to cluster's namespaces
func peerNameAndColorByType(peer Peer) (nameLabel, color string, isExternal bool) {
if peer.IsPeerIPType() {
return peer.String(), ipColor, true
} else if peer.Name() == common.IngressPodName {
Expand All @@ -37,8 +35,8 @@ func peerNameAndColorByType(peer Peer) (name, color string, isExternal bool) {

// formats a peer line for dot graph
func getPeerLine(peer Peer) (string, bool) {
peerName, peerColor, isExternalPeer := peerNameAndColorByType(peer)
return fmt.Sprintf("\t%q [label=%q color=%q fontcolor=%q]", peerName, peerName, peerColor, peerColor), isExternalPeer
peerNameLabel, peerColor, isExternalPeer := peerNameAndColorByType(peer)
return fmt.Sprintf("\t%q [label=%q color=%q fontcolor=%q]", peer.String(), peerNameLabel, peerColor, peerColor), isExternalPeer
}

// returns a dot string form of connections from list of Peer2PeerConnection objects
Expand Down
11 changes: 5 additions & 6 deletions pkg/netpol/diff/diff_formatter_dot.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func (df *diffFormatDOT) getEdgesAndPeersLinesByCategory(connsPairs []SrcDstDiff
if !peersSet[src] {
peersSet[src] = true
nodePeerLabel, isExternal := getNodePeerLabelAndType(connsPair.Src())
peerLine := getPeerLine(nodePeerLabel, connsPair.DiffType(), connsPair.IsSrcNewOrRemoved())
peerLine := getPeerLine(src, nodePeerLabel, connsPair.DiffType(), connsPair.IsSrcNewOrRemoved())
if isExternal {
externalPeersLines = append(externalPeersLines, peerLine)
} else {
Expand All @@ -82,7 +82,7 @@ func (df *diffFormatDOT) getEdgesAndPeersLinesByCategory(connsPairs []SrcDstDiff
if !peersSet[dst] {
peersSet[dst] = true
nodePeerLabel, isExternal := getNodePeerLabelAndType(connsPair.Dst())
peerLine := getPeerLine(nodePeerLabel, connsPair.DiffType(), connsPair.IsDstNewOrRemoved())
peerLine := getPeerLine(dst, nodePeerLabel, connsPair.DiffType(), connsPair.IsDstNewOrRemoved())
if isExternal {
externalPeersLines = append(externalPeersLines, peerLine)
} else {
Expand All @@ -106,7 +106,7 @@ const (
)

// getPeerLine returns peer line string in dot format
func getPeerLine(peerName string, diffType DiffTypeStr, isNewOrLost bool) string {
func getPeerLine(peerName, peerLabelName string, diffType DiffTypeStr, isNewOrLost bool) string {
peerColor := persistentPeerColor
if isNewOrLost {
switch diffType {
Expand All @@ -118,7 +118,7 @@ func getPeerLine(peerName string, diffType DiffTypeStr, isNewOrLost bool) string
break
}
}
return fmt.Sprintf("\t%q [label=%q color=%q fontcolor=%q]", peerName, peerName, peerColor, peerColor)
return fmt.Sprintf("\t%q [label=%q color=%q fontcolor=%q]", peerName, peerLabelName, peerColor, peerColor)
}

const (
Expand All @@ -130,8 +130,7 @@ const (

// addEdgesLines forms the appropriate edge line of the given conns pair
func (df *diffFormatDOT) addEdgesLines(connsPair SrcDstDiff) string {
src, _ := getNodePeerLabelAndType(connsPair.Src())
dst, _ := getNodePeerLabelAndType(connsPair.Dst())
src, dst, _ := getConnPeersStrings(connsPair)
firstConn, secondConn := getDirsConnsStrings(connsPair)
switch connsPair.DiffType() {
case UnchangedType:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
digraph {
subgraph cluster_default {
"checkoutservice[Deployment]" [label="checkoutservice[Deployment]" color="blue" fontcolor="blue"]
"emailservice[Deployment]" [label="emailservice[Deployment]" color="blue" fontcolor="blue"]
"default/checkoutservice[Deployment]" [label="checkoutservice[Deployment]" color="blue" fontcolor="blue"]
"default/emailservice[Deployment]" [label="emailservice[Deployment]" color="blue" fontcolor="blue"]
label="default"
}
"checkoutservice[Deployment]" -> "emailservice[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"default/checkoutservice[Deployment]" -> "default/emailservice[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 25 additions & 25 deletions test_outputs/connlist/acs-security-demos_connlist_output.dot
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
digraph {
subgraph cluster_backend {
"catalog[Deployment]" [label="catalog[Deployment]" color="blue" fontcolor="blue"]
"checkout[Deployment]" [label="checkout[Deployment]" color="blue" fontcolor="blue"]
"notification[Deployment]" [label="notification[Deployment]" color="blue" fontcolor="blue"]
"recommendation[Deployment]" [label="recommendation[Deployment]" color="blue" fontcolor="blue"]
"reports[Deployment]" [label="reports[Deployment]" color="blue" fontcolor="blue"]
"shipping[Deployment]" [label="shipping[Deployment]" color="blue" fontcolor="blue"]
"backend/catalog[Deployment]" [label="catalog[Deployment]" color="blue" fontcolor="blue"]
"backend/checkout[Deployment]" [label="checkout[Deployment]" color="blue" fontcolor="blue"]
"backend/notification[Deployment]" [label="notification[Deployment]" color="blue" fontcolor="blue"]
"backend/recommendation[Deployment]" [label="recommendation[Deployment]" color="blue" fontcolor="blue"]
"backend/reports[Deployment]" [label="reports[Deployment]" color="blue" fontcolor="blue"]
"backend/shipping[Deployment]" [label="shipping[Deployment]" color="blue" fontcolor="blue"]
label="backend"
}
subgraph cluster_frontend {
"asset-cache[Deployment]" [label="asset-cache[Deployment]" color="blue" fontcolor="blue"]
"webapp[Deployment]" [label="webapp[Deployment]" color="blue" fontcolor="blue"]
"frontend/asset-cache[Deployment]" [label="asset-cache[Deployment]" color="blue" fontcolor="blue"]
"frontend/webapp[Deployment]" [label="webapp[Deployment]" color="blue" fontcolor="blue"]
label="frontend"
}
subgraph cluster_payments {
"gateway[Deployment]" [label="gateway[Deployment]" color="blue" fontcolor="blue"]
"mastercard-processor[Deployment]" [label="mastercard-processor[Deployment]" color="blue" fontcolor="blue"]
"visa-processor[Deployment]" [label="visa-processor[Deployment]" color="blue" fontcolor="blue"]
"payments/gateway[Deployment]" [label="gateway[Deployment]" color="blue" fontcolor="blue"]
"payments/mastercard-processor[Deployment]" [label="mastercard-processor[Deployment]" color="blue" fontcolor="blue"]
"payments/visa-processor[Deployment]" [label="visa-processor[Deployment]" color="blue" fontcolor="blue"]
label="payments"
}
"{ingress-controller}" [label="{ingress-controller}" color="blue" fontcolor="blue"]
"checkout[Deployment]" -> "gateway[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"checkout[Deployment]" -> "notification[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"checkout[Deployment]" -> "recommendation[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"gateway[Deployment]" -> "mastercard-processor[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"gateway[Deployment]" -> "visa-processor[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"recommendation[Deployment]" -> "catalog[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"reports[Deployment]" -> "catalog[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"reports[Deployment]" -> "recommendation[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"webapp[Deployment]" -> "checkout[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"webapp[Deployment]" -> "recommendation[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"webapp[Deployment]" -> "reports[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"webapp[Deployment]" -> "shipping[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"{ingress-controller}" -> "asset-cache[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"{ingress-controller}" -> "webapp[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"backend/checkout[Deployment]" -> "backend/notification[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"backend/checkout[Deployment]" -> "backend/recommendation[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"backend/checkout[Deployment]" -> "payments/gateway[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"backend/recommendation[Deployment]" -> "backend/catalog[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"backend/reports[Deployment]" -> "backend/catalog[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"backend/reports[Deployment]" -> "backend/recommendation[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"frontend/webapp[Deployment]" -> "backend/checkout[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"frontend/webapp[Deployment]" -> "backend/recommendation[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"frontend/webapp[Deployment]" -> "backend/reports[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"frontend/webapp[Deployment]" -> "backend/shipping[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"payments/gateway[Deployment]" -> "payments/mastercard-processor[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"payments/gateway[Deployment]" -> "payments/visa-processor[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"{ingress-controller}" -> "frontend/asset-cache[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
"{ingress-controller}" -> "frontend/webapp[Deployment]" [label="TCP 8080" color="gold2" fontcolor="darkgreen"]
}
Loading

0 comments on commit 3c94246

Please sign in to comment.