@@ -218,9 +218,13 @@ func (t *Translator) processHTTPRouteRules(httpRoute *HTTPRouteContext, parentRe
218
218
backendRefNames := make ([]string , len (rule .BackendRefs ))
219
219
backendCustomRefs := []* ir.UnstructuredRef {}
220
220
// process each backendRef, and calculate the destination settings for this rule
221
- for i , backendRef := range rule .BackendRefs {
221
+ for i := range rule .BackendRefs {
222
222
settingName := irDestinationSettingName (destName , i )
223
- ds , unstructuredRef , err := t .processDestination (settingName , backendRef , parentRef , httpRoute , resources )
223
+ backendRefCtx := BackendRefWithFilters {
224
+ BackendRef : & rule .BackendRefs [i ].BackendRef ,
225
+ Filters : rule .BackendRefs [i ].Filters ,
226
+ }
227
+ ds , unstructuredRef , err := t .processDestination (settingName , backendRefCtx , parentRef , httpRoute , resources )
224
228
if err != nil {
225
229
errs .Add (status .NewRouteStatusError (
226
230
fmt .Errorf ("failed to process route rule %d backendRef %d: %w" , ruleIdx , i , err ),
@@ -242,8 +246,8 @@ func (t *Translator) processHTTPRouteRules(httpRoute *HTTPRouteContext, parentRe
242
246
if ds .IsDynamicResolver {
243
247
hasDynamicResolver = true
244
248
}
245
- backendNamespace := NamespaceDerefOr (backendRef .Namespace , httpRoute .GetNamespace ())
246
- backendRefNames [i ] = fmt .Sprintf ("%s/%s" , backendNamespace , backendRef .Name )
249
+ backendNamespace := NamespaceDerefOr (rule . BackendRefs [ i ] .Namespace , httpRoute .GetNamespace ())
250
+ backendRefNames [i ] = fmt .Sprintf ("%s/%s" , backendNamespace , rule . BackendRefs [ i ] .Name )
247
251
}
248
252
249
253
// process each ir route
@@ -664,9 +668,13 @@ func (t *Translator) processGRPCRouteRules(grpcRoute *GRPCRouteContext, parentRe
664
668
failedProcessDestination := false
665
669
666
670
backendRefNames := make ([]string , len (rule .BackendRefs ))
667
- for i , backendRef := range rule .BackendRefs {
671
+ for i := range rule .BackendRefs {
668
672
settingName := irDestinationSettingName (destName , i )
669
- ds , _ , err := t .processDestination (settingName , backendRef , parentRef , grpcRoute , resources )
673
+ backendRefCtx := BackendRefWithFilters {
674
+ BackendRef : & rule .BackendRefs [i ].BackendRef ,
675
+ Filters : rule .BackendRefs [i ].Filters ,
676
+ }
677
+ ds , _ , err := t .processDestination (settingName , backendRefCtx , parentRef , grpcRoute , resources )
670
678
if err != nil {
671
679
errs .Add (status .NewRouteStatusError (
672
680
fmt .Errorf ("failed to process route rule %d backendRef %d: %w" , ruleIdx , i , err ),
@@ -680,8 +688,8 @@ func (t *Translator) processGRPCRouteRules(grpcRoute *GRPCRouteContext, parentRe
680
688
continue
681
689
}
682
690
allDs = append (allDs , ds )
683
- backendNamespace := NamespaceDerefOr (backendRef .Namespace , grpcRoute .GetNamespace ())
684
- backendRefNames [i ] = fmt .Sprintf ("%s/%s" , backendNamespace , backendRef .Name )
691
+ backendNamespace := NamespaceDerefOr (rule . BackendRefs [ i ] .Namespace , grpcRoute .GetNamespace ())
692
+ backendRefNames [i ] = fmt .Sprintf ("%s/%s" , backendNamespace , rule . BackendRefs [ i ] .Name )
685
693
}
686
694
687
695
// process each ir route
@@ -955,9 +963,10 @@ func (t *Translator) processTLSRouteParentRefs(tlsRoute *TLSRouteContext, resour
955
963
956
964
// compute backends
957
965
for _ , rule := range tlsRoute .Spec .Rules {
958
- for i , backendRef := range rule .BackendRefs {
966
+ for i := range rule .BackendRefs {
959
967
settingName := irDestinationSettingName (destName , i )
960
- ds , _ , err := t .processDestination (settingName , backendRef , parentRef , tlsRoute , resources )
968
+ backendRefCtx := DirectBackendRef {BackendRef : & rule .BackendRefs [i ]}
969
+ ds , _ , err := t .processDestination (settingName , backendRefCtx , parentRef , tlsRoute , resources )
961
970
if err != nil {
962
971
resolveErrs .Add (err )
963
972
continue
@@ -1110,9 +1119,10 @@ func (t *Translator) processUDPRouteParentRefs(udpRoute *UDPRouteContext, resour
1110
1119
destName = irRouteDestinationName (udpRoute , - 1 /*rule index*/ )
1111
1120
)
1112
1121
1113
- for i , backendRef := range udpRoute .Spec .Rules [0 ].BackendRefs {
1122
+ for i := range udpRoute .Spec .Rules [0 ].BackendRefs {
1114
1123
settingName := irDestinationSettingName (destName , i )
1115
- ds , _ , err := t .processDestination (settingName , backendRef , parentRef , udpRoute , resources )
1124
+ backendRefCtx := DirectBackendRef {BackendRef : & udpRoute .Spec .Rules [0 ].BackendRefs [i ]}
1125
+ ds , _ , err := t .processDestination (settingName , backendRefCtx , parentRef , udpRoute , resources )
1116
1126
if err != nil {
1117
1127
resolveErrs .Add (err )
1118
1128
continue
@@ -1259,9 +1269,10 @@ func (t *Translator) processTCPRouteParentRefs(tcpRoute *TCPRouteContext, resour
1259
1269
destName = irRouteDestinationName (tcpRoute , - 1 /*rule index*/ )
1260
1270
)
1261
1271
1262
- for i , backendRef := range tcpRoute .Spec .Rules [0 ].BackendRefs {
1272
+ for i := range tcpRoute .Spec .Rules [0 ].BackendRefs {
1263
1273
settingName := irDestinationSettingName (destName , i )
1264
- ds , _ , err := t .processDestination (settingName , backendRef , parentRef , tcpRoute , resources )
1274
+ backendRefCtx := DirectBackendRef {BackendRef : & tcpRoute .Spec .Rules [0 ].BackendRefs [i ]}
1275
+ ds , _ , err := t .processDestination (settingName , backendRefCtx , parentRef , tcpRoute , resources )
1265
1276
// skip adding the route and provide the reason via route status.
1266
1277
if err != nil {
1267
1278
resolveErrs .Add (err )
@@ -1375,7 +1386,7 @@ func (t *Translator) processDestination(name string, backendRefContext BackendRe
1375
1386
) (ds * ir.DestinationSetting , unstructuredRef * ir.UnstructuredRef , err status.Error ) {
1376
1387
routeType := route .GetRouteType ()
1377
1388
weight := uint32 (1 )
1378
- backendRef := GetBackendRef (backendRefContext )
1389
+ backendRef := backendRefContext . GetBackendRef ()
1379
1390
if backendRef .Weight != nil {
1380
1391
weight = uint32 (* backendRef .Weight )
1381
1392
}
@@ -1606,7 +1617,10 @@ func (t *Translator) processServiceDestinationSetting(
1606
1617
}
1607
1618
1608
1619
func getBackendFilters (routeType gwapiv1.Kind , backendRefContext BackendRefContext ) (backendFilters any ) {
1609
- filters := GetFilters (backendRefContext )
1620
+ filters := backendRefContext .GetFilters ()
1621
+ if filters == nil {
1622
+ return nil
1623
+ }
1610
1624
switch routeType {
1611
1625
case resource .KindHTTPRoute :
1612
1626
if len (filters .([]gwapiv1.HTTPRouteFilter )) > 0 {
0 commit comments