From de51527a2812d239d632bf3e4ef7d0325939ec8a Mon Sep 17 00:00:00 2001 From: Deyuan Deng Date: Tue, 3 Feb 2015 18:07:12 -0500 Subject: [PATCH] Lower case node names before registering --- pkg/cloudprovider/controller/nodecontroller.go | 10 ++++++++++ .../controller/nodecontroller_test.go | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/pkg/cloudprovider/controller/nodecontroller.go b/pkg/cloudprovider/controller/nodecontroller.go index 10c2367c4da..acdf826c5dc 100644 --- a/pkg/cloudprovider/controller/nodecontroller.go +++ b/pkg/cloudprovider/controller/nodecontroller.go @@ -20,6 +20,7 @@ import ( "errors" "net" "reflect" + "strings" "sync" "time" @@ -112,6 +113,7 @@ func (s *NodeController) Run(period time.Duration, retryCount int) { // RegisterNodes registers the given list of nodes, it keeps retrying for `retryCount` times. func (s *NodeController) RegisterNodes(nodes *api.NodeList, retryCount int, retryInterval time.Duration) error { registered := util.NewStringSet() + nodes = s.canonicalizeName(nodes) for i := 0; i < retryCount; i++ { for _, node := range nodes.Items { if registered.Has(node.Name) { @@ -330,3 +332,11 @@ func (s *NodeController) CloudNodes() (*api.NodeList, error) { func (s *NodeController) isRunningCloudProvider() bool { return s.cloud != nil && len(s.matchRE) > 0 } + +// canonicalizeName takes a node list and lowercases all nodes' name. +func (s *NodeController) canonicalizeName(nodes *api.NodeList) *api.NodeList { + for i := range nodes.Items { + nodes.Items[i].Name = strings.ToLower(nodes.Items[i].Name) + } + return nodes +} diff --git a/pkg/cloudprovider/controller/nodecontroller_test.go b/pkg/cloudprovider/controller/nodecontroller_test.go index 7c4126b83a0..4462a74fbcc 100644 --- a/pkg/cloudprovider/controller/nodecontroller_test.go +++ b/pkg/cloudprovider/controller/nodecontroller_test.go @@ -134,6 +134,22 @@ func TestRegisterNodes(t *testing.T) { expectedCreateCount: 2, expectedFail: false, }, + { + // Canonicalize node names. + machines: []string{"NODE0", "node1"}, + fakeNodeHandler: &FakeNodeHandler{ + CreateHook: func(fake *FakeNodeHandler, node *api.Node) bool { + if node.Name == "NODE0" { + return false + } + return true + }, + }, + retryCount: 1, + expectedRequestCount: 2, + expectedCreateCount: 2, + expectedFail: false, + }, { // No machine to register. machines: []string{},