Skip to content

Commit cfb8cec

Browse files
RAPSNXRaphael Groemmer
andauthored
WIP: Stop dropping status.FloatingID when OpenStack API returns 404 (#449)
* Remove status removal * Improve error handling * Adapt PR suggestions --------- Co-authored-by: Raphael Groemmer <mail@rapsn.me>
1 parent aec0469 commit cfb8cec

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

controllers/yawol-controller/loadbalancer/loadbalancer_controller.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -421,16 +421,16 @@ func (r *Reconciler) reconcileFIP(
421421
// Get FIP
422422
var fip *floatingips.FloatingIP
423423
if fip, err = openstackhelper.GetFIPByID(ctx, fipClient, *lb.Status.FloatingID); err != nil {
424-
switch err.(type) {
425-
case gophercloud.ErrUnexpectedResponseCode, gophercloud.ErrResourceNotFound:
426-
r.Log.Info("fip not found in openstack", "fip", *lb.Status.FloatingID)
427-
// fip not found by ID, remove it from status and trigger reconcile
428-
if err := helper.RemoveFromLBStatus(ctx, r.Status(), lb, "floatingID"); err != nil {
429-
return false, fmt.Errorf("failed to remove FIP from lb status: %w", err)
424+
switch e := err.(type) {
425+
case gophercloud.ErrUnexpectedResponseCode:
426+
code := e.GetStatusCode()
427+
if code == 404 {
428+
return false, fmt.Errorf("fip not found: %w", err)
429+
} else {
430+
return false, fmt.Errorf("unexpected gophercloud error occurred: %w", err)
430431
}
431-
return true, err
432432
default:
433-
r.Log.Info("unexpected error occurred")
433+
r.Log.Info("unexpected go error occurred", "error: ", err)
434434
return false, kubernetes.SendErrorAsEvent(r.RecorderLB, err, lb)
435435
}
436436
}
@@ -497,7 +497,10 @@ func (r *Reconciler) assignOrCreateFIP(
497497
}
498498

499499
// try to find FIP by name
500-
fip, _ = openstackhelper.GetFIPByName(ctx, fipClient, *lb.Status.FloatingName)
500+
fip, err = openstackhelper.GetFIPByName(ctx, fipClient, *lb.Status.FloatingName)
501+
if err != nil {
502+
r.Log.Error(err, "retrieving FIP by Name failed")
503+
}
501504
if fip != nil {
502505
r.Log.Info("Found FloatingIP by Name", "lb", lb.Name)
503506
return helper.PatchLBStatus(

0 commit comments

Comments
 (0)