From f8174a66be137c965aa2d90bae75b90da8309fe9 Mon Sep 17 00:00:00 2001 From: Bryan Zubrod Date: Thu, 3 Aug 2017 02:49:20 -0500 Subject: [PATCH] network_route_controller: Avoid redundant policy sets (#98) * gofmt * route_controller: Avoid redundant DefinedSet adds --- app/controllers/network_routes_controller.go | 17 +++++++++++++---- app/watchers/network_policy_watcher.go | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/controllers/network_routes_controller.go b/app/controllers/network_routes_controller.go index 3d03aa69..6efd1a31 100644 --- a/app/controllers/network_routes_controller.go +++ b/app/controllers/network_routes_controller.go @@ -256,12 +256,15 @@ func (nrc *NetworkRoutingController) addExportPolicies() error { podCidrPrefixSet, err := table.NewPrefixSet(config.PrefixSet{ PrefixSetName: "podcidrprefixset", PrefixList: []config.Prefix{ - config.Prefix{ + { IpPrefix: cidr, }, }, }) - nrc.bgpServer.AddDefinedSet(podCidrPrefixSet) + err = nrc.bgpServer.ReplaceDefinedSet(podCidrPrefixSet) + if err != nil { + nrc.bgpServer.AddDefinedSet(podCidrPrefixSet) + } // creates prefix set to represent all the cluster IP associated with the services clusterIpPrefixList := make([]config.Prefix, 0) @@ -273,7 +276,10 @@ func (nrc *NetworkRoutingController) addExportPolicies() error { PrefixSetName: "clusteripprefixset", PrefixList: clusterIpPrefixList, }) - nrc.bgpServer.AddDefinedSet(clusterIpPrefixSet) + err = nrc.bgpServer.ReplaceDefinedSet(clusterIpPrefixSet) + if err != nil { + nrc.bgpServer.AddDefinedSet(clusterIpPrefixSet) + } statements := make([]config.Statement, 0) @@ -302,7 +308,10 @@ func (nrc *NetworkRoutingController) addExportPolicies() error { NeighborSetName: "externalpeerset", NeighborInfoList: externalBgpPeers, }) - nrc.bgpServer.AddDefinedSet(ns) + err = nrc.bgpServer.ReplaceDefinedSet(ns) + if err != nil { + nrc.bgpServer.AddDefinedSet(ns) + } // statement to represent the export policy to permit advertising cluster IP's // only to the global BGP peer or node specific BGP peer statements = append(statements, config.Statement{ diff --git a/app/watchers/network_policy_watcher.go b/app/watchers/network_policy_watcher.go index b0c4b1cf..6863cef2 100644 --- a/app/watchers/network_policy_watcher.go +++ b/app/watchers/network_policy_watcher.go @@ -89,7 +89,7 @@ func StartNetworkPolicyWatcher(clientset *kubernetes.Clientset, resyncPeriod tim if v1NetworkPolicy { lw = cache.NewListWatchFromClient(clientset.Networking().RESTClient(), "networkpolicies", metav1.NamespaceAll, fields.Everything()) npw.networkPolicyLister, npw.networkPolicyController = cache.NewIndexerInformer( - lw, &networking.NetworkPolicy{}, resyncPeriod, eventHandler, + lw, &networking.NetworkPolicy{}, resyncPeriod, eventHandler, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, ) } else {