@@ -451,6 +451,7 @@ func (lbc *LoadBalancerClient) updateRoutingPolicyRules(ctx context.Context, lbI
451451 return err
452452}
453453
454+ // UpdateBackends updates Backends for backendSetName, while preserving sslConfig, policy, and healthChecker details
454455func (lbc * LoadBalancerClient ) UpdateBackends (ctx context.Context , lbID string , backendSetName string , backends []loadbalancer.BackendDetails ) error {
455456 lb , etag , err := lbc .GetLoadBalancer (ctx , lbID )
456457 if err != nil {
@@ -477,56 +478,60 @@ func (lbc *LoadBalancerClient) UpdateBackends(ctx context.Context, lbID string,
477478 return nil
478479 }
479480
480- return lbc .UpdateBackendSet (ctx , lb .Id , etag , backendSet , backends , nil , nil , nil )
481- }
482-
483- func (lbc * LoadBalancerClient ) UpdateBackendSet (ctx context.Context , lbID * string , etag string , backendSet loadbalancer.BackendSet ,
484- backends []loadbalancer.BackendDetails , sslConfig * loadbalancer.SslConfigurationDetails ,
485- healthCheckerDetails * loadbalancer.HealthCheckerDetails , policy * string ) error {
486-
487- if backends == nil {
488- backends = make ([]loadbalancer.BackendDetails , len (backendSet .Backends ))
489- for i := range backendSet .Backends {
490- backend := backendSet .Backends [i ]
491- backends [i ] = loadbalancer.BackendDetails {
492- IpAddress : backend .IpAddress ,
493- Port : backend .Port ,
494- Weight : backend .Weight ,
495- Drain : backend .Drain ,
496- Backup : backend .Backup ,
497- Offline : backend .Offline ,
498- }
481+ var sslConfig * loadbalancer.SslConfigurationDetails
482+ if backendSet .SslConfiguration != nil {
483+ sslConfig = & loadbalancer.SslConfigurationDetails {
484+ TrustedCertificateAuthorityIds : backendSet .SslConfiguration .TrustedCertificateAuthorityIds ,
499485 }
500486 }
501- if sslConfig == nil && backendSet .SslConfiguration != nil {
502- sslConfig = & loadbalancer.SslConfigurationDetails {TrustedCertificateAuthorityIds : backendSet .SslConfiguration .TrustedCertificateAuthorityIds }
503- }
504-
505- if healthCheckerDetails == nil {
506- healthChecker := backendSet .HealthChecker
507- healthCheckerDetails = & loadbalancer.HealthCheckerDetails {
508- Protocol : healthChecker .Protocol ,
509- UrlPath : healthChecker .UrlPath ,
510- Port : healthChecker .Port ,
511- ReturnCode : healthChecker .ReturnCode ,
512- Retries : healthChecker .Retries ,
513- TimeoutInMillis : healthChecker .TimeoutInMillis ,
514- IntervalInMillis : healthChecker .IntervalInMillis ,
515- ResponseBodyRegex : healthChecker .ResponseBodyRegex ,
516- IsForcePlainText : healthChecker .IsForcePlainText ,
517- }
487+
488+ healthCheckerDetails := & loadbalancer.HealthCheckerDetails {
489+ Protocol : backendSet .HealthChecker .Protocol ,
490+ UrlPath : backendSet .HealthChecker .UrlPath ,
491+ Port : backendSet .HealthChecker .Port ,
492+ ReturnCode : backendSet .HealthChecker .ReturnCode ,
493+ Retries : backendSet .HealthChecker .Retries ,
494+ TimeoutInMillis : backendSet .HealthChecker .TimeoutInMillis ,
495+ IntervalInMillis : backendSet .HealthChecker .IntervalInMillis ,
496+ ResponseBodyRegex : backendSet .HealthChecker .ResponseBodyRegex ,
497+ IsForcePlainText : backendSet .HealthChecker .IsForcePlainText ,
518498 }
519499
520- if policy == nil {
521- policy = backendSet .Policy
500+ policy := * backendSet .Policy
501+
502+ return lbc .UpdateBackendSet (ctx , lbID , etag , * backendSet .Name , policy , healthCheckerDetails , sslConfig , backends )
503+ }
504+
505+ // UpdateBackendSetDetails updates sslConfig, policy, and healthChecker details for backendSet, while preserving individual backends
506+ func (lbc * LoadBalancerClient ) UpdateBackendSetDetails (ctx context.Context , lbID string , etag string ,
507+ backendSet * loadbalancer.BackendSet , sslConfig * loadbalancer.SslConfigurationDetails ,
508+ healthCheckerDetails * loadbalancer.HealthCheckerDetails , policy string ) error {
509+
510+ backends := make ([]loadbalancer.BackendDetails , len (backendSet .Backends ))
511+ for i := range backendSet .Backends {
512+ backend := backendSet .Backends [i ]
513+ backends [i ] = loadbalancer.BackendDetails {
514+ IpAddress : backend .IpAddress ,
515+ Port : backend .Port ,
516+ Weight : backend .Weight ,
517+ Drain : backend .Drain ,
518+ Backup : backend .Backup ,
519+ Offline : backend .Offline ,
520+ }
522521 }
523522
523+ return lbc .UpdateBackendSet (ctx , lbID , etag , * backendSet .Name , policy , healthCheckerDetails , sslConfig , backends )
524+ }
525+
526+ func (lbc * LoadBalancerClient ) UpdateBackendSet (ctx context.Context , lbID string , etag string , backendSetName string ,
527+ policy string , healthCheckerDetails * loadbalancer.HealthCheckerDetails , sslConfig * loadbalancer.SslConfigurationDetails ,
528+ backends []loadbalancer.BackendDetails ) error {
524529 updateBackendSetRequest := loadbalancer.UpdateBackendSetRequest {
525530 IfMatch : common .String (etag ),
526- LoadBalancerId : lbID ,
527- BackendSetName : common .String (* backendSet . Name ),
531+ LoadBalancerId : common . String ( lbID ) ,
532+ BackendSetName : common .String (backendSetName ),
528533 UpdateBackendSetDetails : loadbalancer.UpdateBackendSetDetails {
529- Policy : policy ,
534+ Policy : common . String ( policy ) ,
530535 HealthChecker : healthCheckerDetails ,
531536 SslConfiguration : sslConfig ,
532537 Backends : backends ,
@@ -539,7 +544,8 @@ func (lbc *LoadBalancerClient) UpdateBackendSet(ctx context.Context, lbID *strin
539544 return err
540545 }
541546
542- klog .Infof ("Update backend set response: name: %s, work request id: %s, opc request id: %s." , * backendSet .Name , * resp .OpcWorkRequestId , * resp .OpcRequestId )
547+ klog .Infof ("Update backend set response: name: %s, work request id: %s, opc request id: %s." ,
548+ * updateBackendSetRequest .BackendSetName , * resp .OpcWorkRequestId , * resp .OpcRequestId )
543549 _ , err = lbc .waitForWorkRequest (ctx , * resp .OpcWorkRequestId )
544550 return err
545551}
@@ -643,7 +649,7 @@ func (lbc *LoadBalancerClient) CreateListener(ctx context.Context, lbID string,
643649 if sslConfig == nil {
644650 return fmt .Errorf ("no TLS configuration provided for a HTTP2 listener at port %d" , listenerPort )
645651 }
646-
652+
647653 sslConfig .CipherSuiteName = common .String (util .ProtocolHTTP2DefaultCipherSuite )
648654 }
649655
0 commit comments