diff --git a/pkg/controllers/routing/bgp_peers.go b/pkg/controllers/routing/bgp_peers.go index 2163b058..113f213e 100644 --- a/pkg/controllers/routing/bgp_peers.go +++ b/pkg/controllers/routing/bgp_peers.go @@ -45,7 +45,11 @@ func (nrc *NetworkRoutingController) syncInternalPeers() { currentNodes := make([]string, 0) for _, obj := range nodes { node := obj.(*v1core.Node) - nodeIP, _ := utils.GetNodeIP(node) + nodeIP, err := utils.GetNodeIP(node) + if err != nil { + glog.Errorf("Failed to find a node IP and therefore cannot sync internal BGP Peer: %v", err) + continue + } // skip self if nodeIP.String() == nrc.nodeIP.String() { @@ -321,7 +325,11 @@ func (nrc *NetworkRoutingController) newNodeEventHandler() cache.ResourceEventHa return cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { node := obj.(*v1core.Node) - nodeIP, _ := utils.GetNodeIP(node) + nodeIP, err := utils.GetNodeIP(node) + if err != nil { + glog.Errorf("New node received, but we were unable to add it as we were couldn't find it's node IP: %v", err) + return + } glog.V(2).Infof("Received node %s added update from watch API so peer with new node", nodeIP) nrc.OnNodeUpdate(obj) @@ -344,9 +352,15 @@ func (nrc *NetworkRoutingController) newNodeEventHandler() cache.ResourceEventHa return } } - nodeIP, _ := utils.GetNodeIP(node) + nodeIP, err := utils.GetNodeIP(node) + // In this case even if we can't get the NodeIP that's alright as the node is being removed anyway and + // future node lister operations that happen in OnNodeUpdate won't be affected as the node won't be returned + if err == nil { + glog.Infof("Received node %s removed update from watch API, so remove node from peer", nodeIP) + } else { + glog.Infof("Received node (IP unavailable) removed update from watch API, so remove node from peer") + } - glog.Infof("Received node %s removed update from watch API, so remove node from peer", nodeIP) nrc.OnNodeUpdate(obj) }, } diff --git a/pkg/controllers/routing/bgp_policies.go b/pkg/controllers/routing/bgp_policies.go index 41ff5320..f4dd4269 100644 --- a/pkg/controllers/routing/bgp_policies.go +++ b/pkg/controllers/routing/bgp_policies.go @@ -2,7 +2,7 @@ package routing import ( "errors" - "fmt" + "github.com/golang/glog" "github.com/cloudnativelabs/kube-router/pkg/utils" "github.com/osrg/gobgp/config" @@ -56,7 +56,8 @@ func (nrc *NetworkRoutingController) AddPolicies() error { nodeObj := node.(*v1core.Node) nodeIP, err := utils.GetNodeIP(nodeObj) if err != nil { - return fmt.Errorf("Failed to find a node IP: %s", err) + glog.Errorf("Failed to find a node IP and therefore cannot add internal BGP Peer: %v", err) + continue } iBGPPeers = append(iBGPPeers, nodeIP.String()) } diff --git a/pkg/controllers/routing/network_routes_controller.go b/pkg/controllers/routing/network_routes_controller.go index c29c4362..f98da073 100644 --- a/pkg/controllers/routing/network_routes_controller.go +++ b/pkg/controllers/routing/network_routes_controller.go @@ -553,7 +553,8 @@ func (nrc *NetworkRoutingController) syncNodeIPSets() error { currentPodCidrs = append(currentPodCidrs, podCIDR) nodeIP, err := utils.GetNodeIP(node) if err != nil { - return fmt.Errorf("Failed to find a node IP: %s", err) + glog.Errorf("Failed to find a node IP, cannot add to node ipset which could affect routing: %v", err) + continue } currentNodeIPs = append(currentNodeIPs, nodeIP.String()) }