From 31c22ff6344c55bd4cf487cef6f5eef178fb444d Mon Sep 17 00:00:00 2001 From: Aaron U'Ren Date: Thu, 9 Mar 2023 15:25:38 -0600 Subject: [PATCH] fix(bgp_policies.go): don't get BGP peers twice Fixes a problem where a user would end up with redundant external peers in their BGP policies because getting peers is IP family agnostic and yet is run twice on the same list. This also ruined unit test consistency. --- pkg/controllers/routing/bgp_policies.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/pkg/controllers/routing/bgp_policies.go b/pkg/controllers/routing/bgp_policies.go index 7b622971..e79e58c0 100644 --- a/pkg/controllers/routing/bgp_policies.go +++ b/pkg/controllers/routing/bgp_policies.go @@ -430,6 +430,18 @@ func (nrc *NetworkRoutingController) addExternalBGPPeersDefinedSet() (map[v1core externalBgpPeers := make([]string, 0) externalBGPPeerCIDRs := make(map[v1core.IPFamily][]string) + if len(nrc.globalPeerRouters) > 0 { + for _, peer := range nrc.globalPeerRouters { + externalBgpPeers = append(externalBgpPeers, peer.Conf.NeighborAddress) + } + } + if len(nrc.nodePeerRouters) > 0 { + externalBgpPeers = append(externalBgpPeers, nrc.nodePeerRouters...) + } + if len(externalBgpPeers) == 0 { + return externalBGPPeerCIDRs, nil + } + for family, extPeerSetName := range map[v1core.IPFamily]string{ v1core.IPv4Protocol: externalPeerSet, v1core.IPv6Protocol: externalPeerSetV6} { @@ -438,17 +450,6 @@ func (nrc *NetworkRoutingController) addExternalBGPPeersDefinedSet() (map[v1core return externalBGPPeerCIDRs, err } - if len(nrc.globalPeerRouters) > 0 { - for _, peer := range nrc.globalPeerRouters { - externalBgpPeers = append(externalBgpPeers, peer.Conf.NeighborAddress) - } - } - if len(nrc.nodePeerRouters) > 0 { - externalBgpPeers = append(externalBgpPeers, nrc.nodePeerRouters...) - } - if len(externalBgpPeers) == 0 { - return externalBGPPeerCIDRs, nil - } for _, peer := range externalBgpPeers { ip := net.ParseIP(peer) if ip == nil {