Merge pull request #3368 from ddysher/static-hostip

Post hostip for static machines
This commit is contained in:
bgrant0607 2015-01-12 13:51:11 -08:00
commit e965b7ec18
2 changed files with 36 additions and 2 deletions

View File

@ -18,6 +18,7 @@ package controller
import ( import (
"fmt" "fmt"
"net"
"time" "time"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
@ -73,12 +74,26 @@ func (s *NodeController) SyncStatic(period time.Duration) error {
if registered.Has(nodeID) { if registered.Has(nodeID) {
continue continue
} }
_, err := s.kubeClient.Nodes().Create(&api.Node{ node := &api.Node{
ObjectMeta: api.ObjectMeta{Name: nodeID}, ObjectMeta: api.ObjectMeta{Name: nodeID},
Spec: api.NodeSpec{ Spec: api.NodeSpec{
Capacity: s.staticResources.Capacity, Capacity: s.staticResources.Capacity,
}, },
}) }
addr := net.ParseIP(nodeID)
if addr != nil {
node.Status.HostIP = nodeID
} else {
addrs, err := net.LookupIP(nodeID)
if err != nil {
glog.Errorf("Can't get ip address of node %v", nodeID)
} else if len(addrs) == 0 {
glog.Errorf("No ip address for node %v", nodeID)
} else {
node.Status.HostIP = addrs[0].String()
}
}
_, err := s.kubeClient.Nodes().Create(node)
if err == nil { if err == nil {
registered.Insert(nodeID) registered.Insert(nodeID)
} }

View File

@ -102,6 +102,25 @@ func TestSyncStaticCreateNode(t *testing.T) {
} }
} }
func TestSyncStaticCreateNodeWithHostIP(t *testing.T) {
fakeNodeHandler := &FakeNodeHandler{
CreateHook: func(fake *FakeNodeHandler, node *api.Node) bool {
return true
},
}
nodeController := NewNodeController(nil, ".*", []string{"10.0.0.1"}, &api.NodeResources{}, fakeNodeHandler)
if err := nodeController.SyncStatic(time.Millisecond); err != nil {
t.Errorf("unexpected error: %v", err)
}
if fakeNodeHandler.CreatedNodes[0].Name != "10.0.0.1" {
t.Errorf("unexpect node %v created", fakeNodeHandler.CreatedNodes[0].Name)
}
if fakeNodeHandler.CreatedNodes[0].Status.HostIP != "10.0.0.1" {
t.Errorf("unexpect nil node HostIP for node %v", fakeNodeHandler.CreatedNodes[0].Name)
}
}
func TestSyncStaticCreateNodeWithError(t *testing.T) { func TestSyncStaticCreateNodeWithError(t *testing.T) {
fakeNodeHandler := &FakeNodeHandler{ fakeNodeHandler := &FakeNodeHandler{
CreateHook: func(fake *FakeNodeHandler, node *api.Node) bool { CreateHook: func(fake *FakeNodeHandler, node *api.Node) bool {