github.com/kiali/kiali@v1.84.0/graph/telemetry/istio/appender/traffic_generator.go (about) 1 package appender 2 3 import ( 4 "github.com/kiali/kiali/graph" 5 ) 6 7 const TrafficGeneratorAppenderName = "trafficGenerator" 8 9 // TrafficGeneratorAppender is responsible for marking the insider traffic generator nodes (i.e. inside the namespace and only having outgoing edges) 10 // Name: trafficGenerator 11 type TrafficGeneratorAppender struct{} 12 13 // Name implements Appender 14 func (f *TrafficGeneratorAppender) Name() string { 15 return OutsiderAppenderName 16 } 17 18 // IsFinalizer implements Appender 19 func (a TrafficGeneratorAppender) IsFinalizer() bool { 20 return true 21 } 22 23 // AppendGraph implements Appender 24 func (f *TrafficGeneratorAppender) AppendGraph(trafficMap graph.TrafficMap, globalInfo *graph.AppenderGlobalInfo, _namespaceInfo *graph.AppenderNamespaceInfo) { 25 if len(trafficMap) == 0 { 26 return 27 } 28 29 markTrafficGenerators(trafficMap) 30 } 31 32 // MarkTrafficGenerators set IsRoot metadata. It is called after appender work is complete. 33 func markTrafficGenerators(trafficMap graph.TrafficMap) { 34 destMap := make(map[string]*graph.Node) 35 for _, n := range trafficMap { 36 for _, e := range n.Edges { 37 destMap[e.Dest.ID] = e.Dest 38 } 39 } 40 for _, n := range trafficMap { 41 if len(n.Edges) == 0 { 42 continue 43 } 44 if _, isDest := destMap[n.ID]; !isDest { 45 n.Metadata[graph.IsRoot] = true 46 } 47 } 48 }