Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions controllers/loadbalancer_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,13 @@ func (r *LoadBalancerReconciler) applyLoadBalancer(ctx context.Context, log logr
return netip.Addr{}, err
}
log.V(1).Info("Added loadbalancer route if not existed")

// Since it can not be ensured that we have not missed loadbalancer targets we ask for vni routes
log.V(1).Info("Get routes and add possibly missing route at the first place", "vni", vni)
if err := r.RouteUtil.GetRoutesForVni(ctx, metalbond.VNI(vni)); err != nil {
return netip.Addr{}, err
}

return *lbalancer.Spec.UnderlayRoute, nil
}

Expand Down
18 changes: 9 additions & 9 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -322,15 +322,6 @@ func main() {
mbInstance := mb.NewMetalBond(config, metalnetMBClient)
metalbondRouteUtil := metalbond.NewMBRouteUtil(mbInstance)

for _, metalbondPeer := range metalbondPeers {
if err := mbInstance.AddPeer(metalbondPeer, ""); err != nil {
setupLog.Error(err, "failed to add metalbond peer", "MetalbondPeer", metalbondPeer)
os.Exit(1)
}
}

metalnetMBClient.SetMetalBond(mbInstance)

dpdkUUID, err := dpdkProtoClient.CheckInitialized(context.Background(), &dpdkproto.CheckInitializedRequest{})
if err != nil {
_, err = dpdkProtoClient.Initialize(context.Background(), &dpdkproto.InitializeRequest{})
Expand Down Expand Up @@ -363,6 +354,15 @@ func main() {
"metalnetProtocol", protoVersion.ClientProtocol,
"metalnetVersion", protoVersion.ClientVersion)

for _, metalbondPeer := range metalbondPeers {
if err := mbInstance.AddPeer(metalbondPeer, ""); err != nil {
setupLog.Error(err, "failed to add metalbond peer", "MetalbondPeer", metalbondPeer)
os.Exit(1)
}
}

metalnetMBClient.SetMetalBond(mbInstance)

if err := metalnetclient.SetupNetworkInterfaceNetworkRefNameFieldIndexer(context.TODO(), mgr.GetFieldIndexer()); err != nil {
setupLog.Error(err, "unable to set up field indexer", "Field", metalnetclient.NetworkInterfaceNetworkRefNameField)
os.Exit(1)
Expand Down
6 changes: 4 additions & 2 deletions metalbond/metalbond_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ func (c *MetalnetClient) addLocalRoute(destVni mb.VNI, vni mb.VNI, dest mb.Desti
ip := dest.Prefix.Addr().String()
uid, ok := c.metalnetCache.GetLoadBalancerServer(uint32(vni), ip)
if !ok {
return fmt.Errorf("no registered LoadBalancer on this client for vni %d and ip %s", vni, ip)
c.log.Info(fmt.Sprintf("no registered LoadBalancer on this client for vni %d and ip %s", vni, ip))
return nil
}

if c.config.PreferredNetwork != nil {
Expand Down Expand Up @@ -124,7 +125,8 @@ func (c *MetalnetClient) removeLocalRoute(destVni mb.VNI, vni mb.VNI, dest mb.De
ip := dest.Prefix.Addr().String()
uid, ok := c.metalnetCache.GetLoadBalancerServer(uint32(vni), ip)
if !ok {
return fmt.Errorf("no registered LoadBalancer on this client for vni %d and ip %s", vni, ip)
c.log.Info(fmt.Sprintf("no registered LoadBalancer on this client for vni %d and ip %s", vni, ip))
return nil
}
if _, err := c.dpdk.DeleteLoadBalancerTarget(
ctx,
Expand Down
Loading