Commit de51527a authored by Deyuan Deng's avatar Deyuan Deng

Lower case node names before registering

parent 1e97a660
...@@ -20,6 +20,7 @@ import ( ...@@ -20,6 +20,7 @@ import (
"errors" "errors"
"net" "net"
"reflect" "reflect"
"strings"
"sync" "sync"
"time" "time"
...@@ -112,6 +113,7 @@ func (s *NodeController) Run(period time.Duration, retryCount int) { ...@@ -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. // 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 { func (s *NodeController) RegisterNodes(nodes *api.NodeList, retryCount int, retryInterval time.Duration) error {
registered := util.NewStringSet() registered := util.NewStringSet()
nodes = s.canonicalizeName(nodes)
for i := 0; i < retryCount; i++ { for i := 0; i < retryCount; i++ {
for _, node := range nodes.Items { for _, node := range nodes.Items {
if registered.Has(node.Name) { if registered.Has(node.Name) {
...@@ -330,3 +332,11 @@ func (s *NodeController) CloudNodes() (*api.NodeList, error) { ...@@ -330,3 +332,11 @@ func (s *NodeController) CloudNodes() (*api.NodeList, error) {
func (s *NodeController) isRunningCloudProvider() bool { func (s *NodeController) isRunningCloudProvider() bool {
return s.cloud != nil && len(s.matchRE) > 0 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
}
...@@ -135,6 +135,22 @@ func TestRegisterNodes(t *testing.T) { ...@@ -135,6 +135,22 @@ func TestRegisterNodes(t *testing.T) {
expectedFail: false, 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. // No machine to register.
machines: []string{}, machines: []string{},
fakeNodeHandler: &FakeNodeHandler{ fakeNodeHandler: &FakeNodeHandler{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment