/
traffic_generator.go
48 lines (40 loc) · 1.25 KB
/
traffic_generator.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
36
37
38
39
40
41
42
43
44
45
46
47
48
package appender
import (
"github.com/kiali/kiali/graph"
)
const TrafficGeneratorAppenderName = "trafficGenerator"
// TrafficGeneratorAppender is responsible for marking the insider traffic generator nodes (i.e. inside the namespace and only having outgoing edges)
// Name: trafficGenerator
type TrafficGeneratorAppender struct{}
// Name implements Appender
func (f *TrafficGeneratorAppender) Name() string {
return OutsiderAppenderName
}
// IsFinalizer implements Appender
func (a TrafficGeneratorAppender) IsFinalizer() bool {
return true
}
// AppendGraph implements Appender
func (f *TrafficGeneratorAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, _namespaceInfo *graph.AppenderNamespaceInfo) {
if len(trafficMap) == 0 {
return
}
markTrafficGenerators(trafficMap)
}
// MarkTrafficGenerators set IsRoot metadata. It is called after appender work is complete.
func markTrafficGenerators(trafficMap graph.TrafficMap) {
destMap := make(map[string]*graph.Node)
for _, n := range trafficMap {
for _, e := range n.Edges {
destMap[e.Dest.ID] = e.Dest
}
}
for _, n := range trafficMap {
if len(n.Edges) == 0 {
continue
}
if _, isDest := destMap[n.ID]; !isDest {
n.Metadata[graph.IsRoot] = true
}
}
}