Skip to content
This repository was archived by the owner on Nov 12, 2025. It is now read-only.

Commit 1208e39

Browse files
authored
Merge pull request #46 from GDATASoftwareAG/improve-error-handling-failoverGroup
improve error handling failoverGroup
2 parents 0568cf0 + 79deff7 commit 1208e39

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

internal/controller/ionoscloudmachine_controller.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
goctx "context"
2121
b64 "encoding/base64"
2222
"fmt"
23+
"go.uber.org/multierr"
2324
"net/http"
2425
"strings"
2526
"time"
@@ -422,14 +423,15 @@ func (r *IONOSCloudMachineReconciler) reconcileServer(ctx *context.MachineContex
422423

423424
err = r.reconcileFailoverGroups(ctx, server)
424425
if err != nil {
425-
ctx.Logger.Info("failoverGroup not yet correct assigned", "err", err.Error())
426+
ctx.Logger.Error(err, "failoverGroup not yet correct assigned")
426427
return &reconcile.Result{RequeueAfter: defaultMachineRetryIntervalOnBusy}, nil
427428
}
428429

429430
return nil, nil
430431
}
431432

432433
func (r *IONOSCloudMachineReconciler) reconcileFailoverGroups(ctx *context.MachineContext, server ionoscloud.Server) error {
434+
var errors error
433435
for i := range ctx.IONOSCloudCluster.Spec.Lans {
434436
lanSpec := &ctx.IONOSCloudCluster.Spec.Lans[i]
435437
serverNic := serverNicByLan(server, lanSpec)
@@ -439,25 +441,25 @@ func (r *IONOSCloudMachineReconciler) reconcileFailoverGroups(ctx *context.Machi
439441
for k := range lanSpec.FailoverGroups {
440442
group := &lanSpec.FailoverGroups[k]
441443
ctx.Logger.Info("Reconciling failover group " + group.ID)
442-
443444
block, _, err := ctx.IONOSClient.GetIPBlock(ctx, group.ID)
444445
if err != nil {
445-
return err
446+
errors = multierr.Append(errors, err)
447+
continue
446448
}
447449
ips := *block.Properties.Ips
450+
err = ctx.IONOSClient.EnsureAdditionalIPsOnNic(ctx, ctx.IONOSCloudCluster.Spec.DataCenterID, ctx.IONOSCloudMachine.Spec.ProviderID, *serverNic.Id, ips)
451+
if err != nil {
452+
errors = multierr.Append(errors, err)
453+
}
448454
//TODO: only once per cluster and change if machine gets delete
449455
lanId := fmt.Sprint(*lanSpec.LanID)
450456
err = ctx.IONOSClient.EnsureFailoverIPsOnLan(ctx, ctx.IONOSCloudCluster.Spec.DataCenterID, lanId, *serverNic.Id, ips)
451457
if err != nil {
452-
return err
453-
}
454-
err = ctx.IONOSClient.EnsureAdditionalIPsOnNic(ctx, ctx.IONOSCloudCluster.Spec.DataCenterID, ctx.IONOSCloudMachine.Spec.ProviderID, *serverNic.Id, ips)
455-
if err != nil {
456-
return err
458+
errors = multierr.Append(errors, err)
457459
}
458460
}
459461
}
460-
return nil
462+
return errors
461463
}
462464

463465
func (r *IONOSCloudMachineReconciler) reconcileLoadBalancerForwardingRule(ctx *context.MachineContext) (*reconcile.Result, error) {

internal/ionos/apiclient.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ func (c *APIClient) EnsureFailoverIPsOnLan(ctx context.Context, datacenterId, la
142142
})
143143
}
144144
}
145+
fmt.Printf("requireRegister %t, failovers %d", requireRegister, len(failovers))
145146
if !requireRegister {
146147
return nil
147148
}

0 commit comments

Comments
 (0)