@@ -15,12 +15,14 @@ type translatedBackendLBPolicy struct {
1515 backendKeys []string
1616 sessionPersistence * ir.SessionPersistencePolicy
1717 loadBalancing * ir.LoadBalancingPolicy
18+ circuitBreaker * ir.CircuitBreakerConfig
1819 policy backendlbv1alpha2.BackendLBPolicy
1920}
2021
2122type backendLBPolicyIndexes struct {
2223 sessionPersistence map [string ]* ir.SessionPersistencePolicy
2324 loadBalancing map [string ]* ir.LoadBalancingPolicy
25+ circuitBreaker map [string ]* ir.CircuitBreakerConfig
2426}
2527
2628func buildBackendLBPolicyIndexes (
@@ -48,7 +50,8 @@ func buildBackendLBPolicyIndexesWithIndexes(
4850 policy .Spec .SessionPersistence ,
4951 )
5052 loadBalancing := backendLoadBalancing (policy .Spec .LoadBalancing )
51- if sessionPersistence == nil && loadBalancing == nil {
53+ circuitBreaker := backendCircuitBreaker (policy .Spec .CircuitBreaker )
54+ if sessionPersistence == nil && loadBalancing == nil && circuitBreaker == nil {
5255 continue
5356 }
5457
@@ -61,6 +64,7 @@ func buildBackendLBPolicyIndexesWithIndexes(
6164 backendKeys : backendKeys ,
6265 sessionPersistence : sessionPersistence ,
6366 loadBalancing : loadBalancing ,
67+ circuitBreaker : circuitBreaker ,
6468 policy : policy ,
6569 })
6670 translationIndex := len (translations ) - 1
@@ -74,6 +78,7 @@ func buildBackendLBPolicyIndexesWithIndexes(
7478
7579 sessionPersistence := make (map [string ]* ir.SessionPersistencePolicy , len (owners ))
7680 loadBalancing := make (map [string ]* ir.LoadBalancingPolicy , len (owners ))
81+ circuitBreaker := make (map [string ]* ir.CircuitBreakerConfig , len (owners ))
7782 for backendKey , ownerIndex := range owners {
7883 if item := translations [ownerIndex ].sessionPersistence ; item != nil {
7984 copyItem := * item
@@ -87,11 +92,16 @@ func buildBackendLBPolicyIndexesWithIndexes(
8792 }
8893 loadBalancing [backendKey ] = & copyItem
8994 }
95+ if item := translations [ownerIndex ].circuitBreaker ; item != nil {
96+ copyItem := * item
97+ circuitBreaker [backendKey ] = & copyItem
98+ }
9099 }
91100
92101 return backendLBPolicyIndexes {
93102 sessionPersistence : sessionPersistence ,
94103 loadBalancing : loadBalancing ,
104+ circuitBreaker : circuitBreaker ,
95105 }
96106}
97107
@@ -154,3 +164,12 @@ func backendLBPolicyBackendKeysWithIndexes(
154164 sort .Strings (keys )
155165 return compactStrings (keys ), true
156166}
167+
168+ func backendCircuitBreaker (cb * backendlbv1alpha2.CircuitBreakerConfig ) * ir.CircuitBreakerConfig {
169+ if cb == nil || cb .MaxInflightRequests == nil {
170+ return nil
171+ }
172+ return & ir.CircuitBreakerConfig {
173+ MaxInflightRequests : int (* cb .MaxInflightRequests ),
174+ }
175+ }
0 commit comments