@@ -13,28 +13,6 @@ const (
1313 topologyDefaultLimit = "100"
1414)
1515
16- var (
17- aggregateKeyLabels = map [string ][]string {
18- "app" : {"app" },
19- "droppedState" : {"PktDropLatestState" },
20- "droppedCause" : {"PktDropLatestDropCause" },
21- "dnsRCode" : {"DnsFlagsResponseCode" },
22- "cluster" : {"K8S_ClusterName" },
23- "zone" : {"SrcK8S_Zone" , "DstK8S_Zone" },
24- "host" : {"SrcK8S_HostName" , "DstK8S_HostName" },
25- "namespace" : {"SrcK8S_Namespace" , "DstK8S_Namespace" },
26- "owner" : {"SrcK8S_OwnerName" , "SrcK8S_OwnerType" , "DstK8S_OwnerName" , "DstK8S_OwnerType" , "SrcK8S_Namespace" , "DstK8S_Namespace" },
27- "resource" : {"SrcK8S_Name" , "SrcK8S_Type" , "SrcK8S_OwnerName" , "SrcK8S_OwnerType" , "SrcK8S_Namespace" , "SrcAddr" , "SrcK8S_HostName" , "DstK8S_Name" , "DstK8S_Type" , "DstK8S_OwnerName" , "DstK8S_OwnerType" , "DstK8S_Namespace" , "DstAddr" , "DstK8S_HostName" },
28- }
29- groupKeyLabels = map [string ][]string {
30- "clusters" : {"K8S_ClusterName" },
31- "zones" : {"SrcK8S_Zone" , "DstK8S_Zone" },
32- "hosts" : {"SrcK8S_HostName" , "DstK8S_HostName" },
33- "namespaces" : {"SrcK8S_Namespace" , "DstK8S_Namespace" },
34- "owners" : {"SrcK8S_OwnerName" , "SrcK8S_OwnerType" , "DstK8S_OwnerName" , "DstK8S_OwnerType" },
35- }
36- )
37-
3816type TopologyInput struct {
3917 Start string
4018 End string
@@ -53,10 +31,11 @@ type TopologyInput struct {
5331
5432type TopologyQueryBuilder struct {
5533 * FlowQueryBuilder
56- topology * TopologyInput
34+ topology * TopologyInput
35+ aggregateKeyLabels map [string ][]string
5736}
5837
59- func NewTopologyQuery (cfg * config.Loki , in * TopologyInput ) (* TopologyQueryBuilder , error ) {
38+ func NewTopologyQuery (cfg * config.Loki , kl map [ string ][] string , in * TopologyInput ) (* TopologyQueryBuilder , error ) {
6039 var dedup bool
6140 var rt constants.RecordType
6241 if slices .Contains (constants .AnyConnectionType , string (in .RecordType )) {
@@ -69,20 +48,21 @@ func NewTopologyQuery(cfg *config.Loki, in *TopologyInput) (*TopologyQueryBuilde
6948
7049 fqb := NewFlowQueryBuilder (cfg , in .Start , in .End , in .Top , dedup , rt , in .PacketLoss )
7150 return & TopologyQueryBuilder {
72- FlowQueryBuilder : fqb ,
73- topology : in ,
51+ FlowQueryBuilder : fqb ,
52+ topology : in ,
53+ aggregateKeyLabels : kl ,
7454 }, nil
7555}
7656
77- func GetLabelsAndFilter (aggregate , groups string ) ([]string , string ) {
57+ func GetLabelsAndFilter (kl map [ string ][] string , aggregate , groups string ) ([]string , string ) {
7858 var fields []string
7959 var filter string
80- if fields = aggregateKeyLabels [aggregate ]; fields == nil {
60+ if fields = kl [aggregate ]; fields == nil {
8161 fields = []string {aggregate }
8262 filter = aggregate
8363 }
8464 if groups != "" {
85- for gr , labels := range groupKeyLabels {
65+ for gr , labels := range kl {
8666 if strings .Contains (groups , gr ) {
8767 for _ , label := range labels {
8868 if ! slices .Contains (fields , label ) {
@@ -142,7 +122,7 @@ func (q *TopologyQueryBuilder) Build() string {
142122 top = topologyDefaultLimit
143123 }
144124
145- labels , extraFilter := GetLabelsAndFilter (q .topology .Aggregate , q .topology .Groups )
125+ labels , extraFilter := GetLabelsAndFilter (q .aggregateKeyLabels , q . topology .Aggregate , q .topology .Groups )
146126 if q .config .IsLabel (extraFilter ) {
147127 extraFilter = ""
148128 }
0 commit comments