From 918b0ef479def188e059765244ae4d25e9c14c77 Mon Sep 17 00:00:00 2001 From: CJ Cullen Date: Wed, 10 Feb 2016 15:57:20 -0800 Subject: [PATCH] Don't try to create routes for nodes w/o CIDRs assigned. --- pkg/controller/route/routecontroller.go | 4 ++++ pkg/controller/route/routecontroller_test.go | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/pkg/controller/route/routecontroller.go b/pkg/controller/route/routecontroller.go index f21ee3a57ca..114acdf4afc 100644 --- a/pkg/controller/route/routecontroller.go +++ b/pkg/controller/route/routecontroller.go @@ -75,6 +75,10 @@ func (rc *RouteController) reconcile(nodes []api.Node, routes []*cloudprovider.R routeMap[route.TargetInstance] = route } for _, node := range nodes { + // Skip if the node hasn't been assigned a CIDR yet. + if node.Spec.PodCIDR == "" { + continue + } // Check if we have a route for this node w/ the correct CIDR. r := routeMap[node.Name] if r == nil || r.DestinationCIDR != node.Spec.PodCIDR { diff --git a/pkg/controller/route/routecontroller_test.go b/pkg/controller/route/routecontroller_test.go index 5cd2f4c4ded..3db2079f5a1 100644 --- a/pkg/controller/route/routecontroller_test.go +++ b/pkg/controller/route/routecontroller_test.go @@ -145,6 +145,17 @@ func TestReconcile(t *testing.T) { {cluster + "-02", "node-2", "10.120.1.0/24"}, }, }, + // 2 nodes, one node without CIDR assigned. + { + nodes: []api.Node{ + {ObjectMeta: api.ObjectMeta{Name: "node-1", UID: "01"}, Spec: api.NodeSpec{PodCIDR: "10.120.0.0/24"}}, + {ObjectMeta: api.ObjectMeta{Name: "node-2", UID: "02"}, Spec: api.NodeSpec{PodCIDR: ""}}, + }, + initialRoutes: []*cloudprovider.Route{}, + expectedRoutes: []*cloudprovider.Route{ + {cluster + "-01", "node-1", "10.120.0.0/24"}, + }, + }, } for i, testCase := range testCases { cloud := &fakecloud.FakeCloud{RouteMap: make(map[string]*fakecloud.FakeRoute)}