@@ -242,18 +242,7 @@ func (gw *GatewayManager) cleanupStalePodSNATs(nodeName string, nodeIPs []*net.I
242242 return nil
243243}
244244
245- // GatewayInit creates a gateway router for the local chassis.
246- // enableGatewayMTU enables options:gateway_mtu for gateway routers.
247- func (gw * GatewayManager ) GatewayInit (
248- nodeName string ,
249- clusterIPSubnet []* net.IPNet ,
250- hostSubnets []* net.IPNet ,
251- l3GatewayConfig * util.L3GatewayConfig ,
252- gwLRPJoinIPs , drLRPIfAddrs []* net.IPNet ,
253- externalIPs []net.IP ,
254- enableGatewayMTU bool ,
255- ) error {
256-
245+ func (gw * GatewayManager ) createGWRouter (l3GatewayConfig * util.L3GatewayConfig , gwLRPJoinIPs []* net.IPNet ) (* nbdb.LogicalRouter , error ) {
257246 // Create a gateway router.
258247 dynamicNeighRouters := "true"
259248 if config .OVNKubernetesFeature .EnableInterconnect {
@@ -313,10 +302,33 @@ func (gw *GatewayManager) GatewayInit(
313302 }
314303 }
315304
305+ err := libovsdbops .CreateOrUpdateLogicalRouter (gw .nbClient , & gwRouter , & gwRouter .Options ,
306+ & gwRouter .ExternalIDs , & gwRouter .LoadBalancerGroup , & gwRouter .Copp )
307+ if err != nil {
308+ return nil , fmt .Errorf ("failed to create logical router %+v: %v" , gwRouter , err )
309+ }
310+ return & gwRouter , nil
311+ }
312+
313+ // GatewayInit creates a gateway router for the local chassis.
314+ // enableGatewayMTU enables options:gateway_mtu for gateway routers.
315+ func (gw * GatewayManager ) GatewayInit (
316+ nodeName string ,
317+ clusterIPSubnet []* net.IPNet ,
318+ hostSubnets []* net.IPNet ,
319+ l3GatewayConfig * util.L3GatewayConfig ,
320+ gwLRPJoinIPs , drLRPIfAddrs []* net.IPNet ,
321+ externalIPs []net.IP ,
322+ enableGatewayMTU bool ,
323+ ) error {
324+
316325 // If l3gatewayAnnotation.IPAddresses changed, we need to update the perPodSNATs,
317326 // so let's save the old value before we update the router for later use
318327 var oldExtIPs []net.IP
319- oldLogicalRouter , err := libovsdbops .GetLogicalRouter (gw .nbClient , & gwRouter )
328+ oldLogicalRouter , err := libovsdbops .GetLogicalRouter (gw .nbClient ,
329+ & nbdb.LogicalRouter {
330+ Name : gw .gwRouterName ,
331+ })
320332 if err != nil && ! errors .Is (err , libovsdbclient .ErrNotFound ) {
321333 return fmt .Errorf ("failed in retrieving %s, error: %v" , gw .gwRouterName , err )
322334 }
@@ -336,10 +348,9 @@ func (gw *GatewayManager) GatewayInit(
336348 }
337349 }
338350
339- err = libovsdbops .CreateOrUpdateLogicalRouter (gw .nbClient , & gwRouter , & gwRouter .Options ,
340- & gwRouter .ExternalIDs , & gwRouter .LoadBalancerGroup , & gwRouter .Copp )
351+ gwRouter , err := gw .createGWRouter (l3GatewayConfig , gwLRPJoinIPs )
341352 if err != nil {
342- return fmt . Errorf ( "failed to create logical router %+v: %v" , gwRouter , err )
353+ return err
343354 }
344355
345356 gwSwitchPort := types .JoinSwitchToGWRouterPrefix + gw .gwRouterName
@@ -441,7 +452,7 @@ func (gw *GatewayManager) GatewayInit(
441452 }
442453 }
443454
444- err = libovsdbops .CreateOrUpdateLogicalRouterPort (gw .nbClient , & gwRouter ,
455+ err = libovsdbops .CreateOrUpdateLogicalRouterPort (gw .nbClient , gwRouter ,
445456 & logicalRouterPort , nil , & logicalRouterPort .MAC , & logicalRouterPort .Networks ,
446457 & logicalRouterPort .Options )
447458 if err != nil {
@@ -464,7 +475,7 @@ func (gw *GatewayManager) GatewayInit(
464475 // a better way to do it. Adding support for indirection in ModelClients
465476 // opModel (being able to operate on thins pointed to from another model)
466477 // would be a great way to simplify this.
467- updatedGWRouter , err := libovsdbops .GetLogicalRouter (gw .nbClient , & gwRouter )
478+ updatedGWRouter , err := libovsdbops .GetLogicalRouter (gw .nbClient , gwRouter )
468479 if err != nil {
469480 return fmt .Errorf ("unable to retrieve logical router %+v: %v" , gwRouter , err )
470481 }
@@ -742,7 +753,7 @@ func (gw *GatewayManager) GatewayInit(
742753 }
743754
744755 if len (natsToUpdate ) > 0 {
745- err = libovsdbops .CreateOrUpdateNATs (gw .nbClient , & gwRouter , natsToUpdate ... )
756+ err = libovsdbops .CreateOrUpdateNATs (gw .nbClient , gwRouter , natsToUpdate ... )
746757 if err != nil {
747758 return fmt .Errorf ("failed to update GW SNAT rule for pod on router %s error: %v" , gw .gwRouterName , err )
748759 }
@@ -770,7 +781,7 @@ func (gw *GatewayManager) GatewayInit(
770781 nat := libovsdbops .BuildSNAT (& externalIP [0 ], joinIPNet , "" , extIDs )
771782 joinNATs = append (joinNATs , nat )
772783 }
773- err = libovsdbops .CreateOrUpdateNATs (gw .nbClient , & gwRouter , joinNATs ... )
784+ err = libovsdbops .CreateOrUpdateNATs (gw .nbClient , gwRouter , joinNATs ... )
774785 if err != nil {
775786 return fmt .Errorf ("failed to create SNAT rule for join subnet on router %s error: %v" , gw .gwRouterName , err )
776787 }
@@ -790,7 +801,7 @@ func (gw *GatewayManager) GatewayInit(
790801 nat = libovsdbops .BuildSNATWithMatch (& externalIP [0 ], entry , "" , extIDs , gw .netInfo .GetNetworkScopedClusterSubnetSNATMatch (nodeName ))
791802 nats = append (nats , nat )
792803 }
793- err := libovsdbops .CreateOrUpdateNATs (gw .nbClient , & gwRouter , nats ... )
804+ err := libovsdbops .CreateOrUpdateNATs (gw .nbClient , gwRouter , nats ... )
794805 if err != nil {
795806 return fmt .Errorf ("failed to update SNAT rule for pod on router %s error: %v" , gw .gwRouterName , err )
796807 }
@@ -800,7 +811,7 @@ func (gw *GatewayManager) GatewayInit(
800811 nat = libovsdbops .BuildSNATWithMatch (nil , logicalSubnet , "" , extIDs , gw .netInfo .GetNetworkScopedClusterSubnetSNATMatch (nodeName ))
801812 nats = append (nats , nat )
802813 }
803- err := libovsdbops .DeleteNATs (gw .nbClient , & gwRouter , nats ... )
814+ err := libovsdbops .DeleteNATs (gw .nbClient , gwRouter , nats ... )
804815 if err != nil {
805816 return fmt .Errorf ("failed to delete GW SNAT rule for pod on router %s error: %v" , gw .gwRouterName , err )
806817 }
0 commit comments