@@ -126,15 +126,13 @@ func (l *loadbalancers) cleanupOldNodeBalancer(ctx context.Context, service *v1.
126126 }
127127
128128 previousNB , err := l .getNodeBalancerByStatus (ctx , service )
129- //nolint: errorlint //conversion to errors.Is() may break chainsaw tests
130- switch err .(type ) {
131- case nil :
132- // continue execution
133- break
134- case lbNotFoundError :
135- return nil
136- default :
137- return err
129+ if err != nil {
130+ var targetError lbNotFoundError
131+ if errors .As (err , & targetError ) {
132+ return nil
133+ } else {
134+ return err
135+ }
138136 }
139137
140138 nb , err := l .getNodeBalancerForService (ctx , service )
@@ -178,17 +176,14 @@ func (l *loadbalancers) GetLoadBalancer(ctx context.Context, clusterName string,
178176 }
179177
180178 nb , err := l .getNodeBalancerForService (ctx , service )
181- //nolint: errorlint //conversion to errors.Is() may break chainsaw tests
182- switch err .(type ) {
183- case nil :
184- break
185-
186- case lbNotFoundError :
187- return nil , false , nil
188-
189- default :
190- sentry .CaptureError (ctx , err )
191- return nil , false , err
179+ if err != nil {
180+ var targetError lbNotFoundError
181+ if errors .As (err , & targetError ) {
182+ return nil , false , nil
183+ } else {
184+ sentry .CaptureError (ctx , err )
185+ return nil , false , err
186+ }
192187 }
193188
194189 return makeLoadBalancerStatus (service , nb ), true , nil
@@ -257,31 +252,30 @@ func (l *loadbalancers) EnsureLoadBalancer(ctx context.Context, clusterName stri
257252 var nb * linodego.NodeBalancer
258253
259254 nb , err = l .getNodeBalancerForService (ctx , service )
260- //nolint: errorlint //conversion to errors.Is() may break chainsaw tests
261- switch err .(type ) {
262- case lbNotFoundError :
263- if service .GetAnnotations ()[annotations .AnnLinodeNodeBalancerID ] != "" {
264- // a load balancer annotation has been created so a NodeBalancer is coming, error out and retry later
265- klog .Infof ("NodeBalancer created but not available yet, waiting..." )
266- sentry .CaptureError (ctx , err )
267- return nil , err
268- }
269-
270- if nb , err = l .buildLoadBalancerRequest (ctx , clusterName , service , nodes ); err != nil {
255+ if err == nil {
256+ if err = l .updateNodeBalancer (ctx , clusterName , service , nodes , nb ); err != nil {
271257 sentry .CaptureError (ctx , err )
272258 return nil , err
273259 }
274- klog .Infof ("created new NodeBalancer (%d) for service (%s)" , nb .ID , serviceNn )
260+ } else {
261+ var targetError lbNotFoundError
262+ if errors .As (err , & targetError ) {
263+ if service .GetAnnotations ()[annotations .AnnLinodeNodeBalancerID ] != "" {
264+ // a load balancer annotation has been created so a NodeBalancer is coming, error out and retry later
265+ klog .Infof ("NodeBalancer created but not available yet, waiting..." )
266+ sentry .CaptureError (ctx , err )
267+ return nil , err
268+ }
275269
276- case nil :
277- if err = l .updateNodeBalancer (ctx , clusterName , service , nodes , nb ); err != nil {
270+ if nb , err = l .buildLoadBalancerRequest (ctx , clusterName , service , nodes ); err != nil {
271+ sentry .CaptureError (ctx , err )
272+ return nil , err
273+ }
274+ klog .Infof ("created new NodeBalancer (%d) for service (%s)" , nb .ID , serviceNn )
275+ } else {
278276 sentry .CaptureError (ctx , err )
279277 return nil , err
280278 }
281-
282- default :
283- sentry .CaptureError (ctx , err )
284- return nil , err
285279 }
286280
287281 klog .Infof ("NodeBalancer (%d) has been ensured for service (%s)" , nb .ID , serviceNn )
@@ -558,19 +552,16 @@ func (l *loadbalancers) EnsureLoadBalancerDeleted(ctx context.Context, clusterNa
558552 }
559553
560554 nb , err := l .getNodeBalancerForService (ctx , service )
561- //nolint: errorlint //conversion to errors.Is() may break chainsaw tests
562- switch getErr := err .(type ) {
563- case nil :
564- break
565-
566- case lbNotFoundError :
567- klog .Infof ("short-circuiting deletion for NodeBalancer for service (%s) as one does not exist: %s" , serviceNn , err )
568- return nil
569-
570- default :
571- klog .Errorf ("failed to get NodeBalancer for service (%s): %s" , serviceNn , err )
572- sentry .CaptureError (ctx , getErr )
573- return err
555+ if err != nil {
556+ var targetError lbNotFoundError
557+ if errors .As (err , & targetError ) {
558+ klog .Infof ("short-circuiting deletion for NodeBalancer for service (%s) as one does not exist: %s" , serviceNn , err )
559+ return nil
560+ } else {
561+ klog .Errorf ("failed to get NodeBalancer for service (%s): %s" , serviceNn , err )
562+ sentry .CaptureError (ctx , err )
563+ return err
564+ }
574565 }
575566
576567 if l .shouldPreserveNodeBalancer (service ) {
@@ -628,8 +619,8 @@ func (l *loadbalancers) getNodeBalancerByIPv4(ctx context.Context, service *v1.S
628619func (l * loadbalancers ) getNodeBalancerByID (ctx context.Context , service * v1.Service , id int ) (* linodego.NodeBalancer , error ) {
629620 nb , err := l .client .GetNodeBalancer (ctx , id )
630621 if err != nil {
631- //nolint: errorlint //need type assertion for code field to work
632- if apiErr , ok := err .( * linodego. Error ); ok && apiErr .Code == http .StatusNotFound {
622+ var targetError * linodego. Error
623+ if errors . As ( err , & targetError ) && targetError .Code == http .StatusNotFound {
633624 return nil , lbNotFoundError {serviceNn : getServiceNn (service ), nodeBalancerID : id }
634625 }
635626 return nil , err
0 commit comments