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  }