From fb648dd7205de9cf7fa7244e5beff013fe189b7d Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Tue, 28 Oct 2025 17:02:04 +0000 Subject: [PATCH] OVN-Interconnect: Only set-up LRP/LSP between the transit switches and default router if we want to. This allows people to create transit switches and only have non-default routers connected to them Signed-off-by: Andrew Lee --- pkg/ovn_ic_controller/ovn_ic_controller.go | 47 +++++++++++++--------- yamls/ovn-ic-config.yaml.j2 | 1 + 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/pkg/ovn_ic_controller/ovn_ic_controller.go b/pkg/ovn_ic_controller/ovn_ic_controller.go index b89da489f60..1fe3ba39870 100644 --- a/pkg/ovn_ic_controller/ovn_ic_controller.go +++ b/pkg/ovn_ic_controller/ovn_ic_controller.go @@ -291,6 +291,13 @@ func (c *Controller) establishInterConnection(config map[string]string) error { gwNodes := strings.Split(strings.Trim(config["gw-nodes"], ","), ",") chassises := make([]string, len(gwNodes)) + // Only set up LRPs and LSPs for default router if specified. + var interconnectDefaultRouter = true + val, ok := config["interconnect-default-router"] + if ok && val == "false" { + interconnectDefaultRouter = false + } + for i, tsName := range tsNames { gwNodesOrdered := generateNewOrderGwNodes(gwNodes, i) for j, gw := range gwNodesOrdered { @@ -317,27 +324,29 @@ func (c *Controller) establishInterConnection(config map[string]string) error { } } - tsPort := fmt.Sprintf("%s-%s", tsName, config["az-name"]) - exist, err := c.OVNNbClient.LogicalSwitchPortExists(tsPort) - if err != nil { - klog.Errorf("failed to check logical switch port %q: %v", tsPort, err) - return err - } - if exist { - klog.Infof("ts port %s already exists", tsPort) - continue - } + if interconnectDefaultRouter { + tsPort := fmt.Sprintf("%s-%s", tsName, config["az-name"]) + exist, err := c.OVNNbClient.LogicalSwitchPortExists(tsPort) + if err != nil { + klog.Errorf("failed to check logical switch port %q: %v", tsPort, err) + return err + } + if exist { + klog.Infof("ts port %s already exists", tsPort) + continue + } - lrpAddr, err := c.acquireLrpAddress(tsName) - if err != nil { - klog.Errorf("failed to acquire lrp address for ts %q: %v", tsName, err) - return err - } + lrpAddr, err := c.acquireLrpAddress(tsName) + if err != nil { + klog.Errorf("failed to acquire lrp address for ts %q: %v", tsName, err) + return err + } - lrpName := fmt.Sprintf("%s-%s", config["az-name"], tsName) - if err := c.OVNNbClient.CreateLogicalPatchPort(tsName, c.config.ClusterRouter, tsPort, lrpName, lrpAddr, util.GenerateMac(), chassises...); err != nil { - klog.Errorf("failed to create ovn-ic lrp %q: %v", lrpName, err) - return err + lrpName := fmt.Sprintf("%s-%s", config["az-name"], tsName) + if err := c.OVNNbClient.CreateLogicalPatchPort(tsName, c.config.ClusterRouter, tsPort, lrpName, lrpAddr, util.GenerateMac(), chassises...); err != nil { + klog.Errorf("failed to create ovn-ic lrp %q: %v", lrpName, err) + return err + } } } diff --git a/yamls/ovn-ic-config.yaml.j2 b/yamls/ovn-ic-config.yaml.j2 index 18c3887aa6b..515bc5067db 100644 --- a/yamls/ovn-ic-config.yaml.j2 +++ b/yamls/ovn-ic-config.yaml.j2 @@ -11,3 +11,4 @@ data: ic-sb-port: "6646" gw-nodes: "{{ gateway_nodes }}" auto-route: "true" + interconnect-default-router: "true"