Node addresses

This commit is contained in:
Deyuan Deng
2015-02-13 14:07:23 -05:00
parent 0059c39211
commit 9b0af8df63
14 changed files with 189 additions and 51 deletions

View File

@@ -108,7 +108,7 @@ func (s *NodeController) Run(period time.Duration, syncNodeList, syncNodeStatus
glog.Errorf("Error loading initial static nodes: %v", err)
}
}
nodes, err = s.PopulateIPs(nodes)
nodes, err = s.PopulateAddresses(nodes)
if err != nil {
glog.Errorf("Error getting nodes ips: %v", err)
}
@@ -220,7 +220,7 @@ func (s *NodeController) SyncNodeStatus() error {
return err
}
nodes = s.DoChecks(nodes)
nodes, err = s.PopulateIPs(nodes)
nodes, err = s.PopulateAddresses(nodes)
if err != nil {
return err
}
@@ -264,8 +264,8 @@ func latestReadyTime(node *api.Node) util.Time {
return readyTime
}
// PopulateIPs queries IPs for given list of nodes.
func (s *NodeController) PopulateIPs(nodes *api.NodeList) (*api.NodeList, error) {
// PopulateAddresses queries Address for given list of nodes.
func (s *NodeController) PopulateAddresses(nodes *api.NodeList) (*api.NodeList, error) {
if s.isRunningCloudProvider() {
instances, ok := s.cloud.Instances()
if !ok {
@@ -277,7 +277,8 @@ func (s *NodeController) PopulateIPs(nodes *api.NodeList) (*api.NodeList, error)
if err != nil {
glog.Errorf("error getting instance ip address for %s: %v", node.Name, err)
} else {
node.Status.HostIP = hostIP.String()
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: hostIP.String()}
node.Status.Addresses = append(node.Status.Addresses, address)
}
}
} else {
@@ -285,7 +286,8 @@ func (s *NodeController) PopulateIPs(nodes *api.NodeList) (*api.NodeList, error)
node := &nodes.Items[i]
addr := net.ParseIP(node.Name)
if addr != nil {
node.Status.HostIP = node.Name
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addr.String()}
node.Status.Addresses = append(node.Status.Addresses, address)
} else {
addrs, err := lookupIP(node.Name)
if err != nil {
@@ -293,7 +295,8 @@ func (s *NodeController) PopulateIPs(nodes *api.NodeList) (*api.NodeList, error)
} else if len(addrs) == 0 {
glog.Errorf("No ip address for node %v", node.Name)
} else {
node.Status.HostIP = addrs[0].String()
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addrs[0].String()}
node.Status.Addresses = append(node.Status.Addresses, address)
}
}
}

View File

@@ -621,35 +621,37 @@ func TestHealthCheckNode(t *testing.T) {
}
}
func TestPopulateNodeIPs(t *testing.T) {
func TestPopulateNodeAddresses(t *testing.T) {
table := []struct {
nodes *api.NodeList
fakeCloud *fake_cloud.FakeCloud
expectedFail bool
expectedIP string
nodes *api.NodeList
fakeCloud *fake_cloud.FakeCloud
expectedFail bool
expectedAddresses []api.NodeAddress
}{
{
nodes: &api.NodeList{Items: []api.Node{*newNode("node0"), *newNode("node1")}},
fakeCloud: &fake_cloud.FakeCloud{IP: net.ParseIP("1.2.3.4")},
expectedIP: "1.2.3.4",
nodes: &api.NodeList{Items: []api.Node{*newNode("node0"), *newNode("node1")}},
fakeCloud: &fake_cloud.FakeCloud{IP: net.ParseIP("1.2.3.4")},
expectedAddresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"},
},
},
{
nodes: &api.NodeList{Items: []api.Node{*newNode("node0"), *newNode("node1")}},
fakeCloud: &fake_cloud.FakeCloud{Err: ErrQueryIPAddress},
expectedIP: "",
nodes: &api.NodeList{Items: []api.Node{*newNode("node0"), *newNode("node1")}},
fakeCloud: &fake_cloud.FakeCloud{Err: ErrQueryIPAddress},
expectedAddresses: nil,
},
}
for _, item := range table {
nodeController := NewNodeController(item.fakeCloud, ".*", nil, nil, nil, nil, 10, time.Minute)
result, err := nodeController.PopulateIPs(item.nodes)
result, err := nodeController.PopulateAddresses(item.nodes)
// In case of IP querying error, we should continue.
if err != nil {
t.Errorf("unexpected error: %v", err)
}
for _, node := range result.Items {
if node.Status.HostIP != item.expectedIP {
t.Errorf("expect HostIP %s, got %s", item.expectedIP, node.Status.HostIP)
if !reflect.DeepEqual(item.expectedAddresses, node.Status.Addresses) {
t.Errorf("expect HostIP %s, got %s", item.expectedAddresses, node.Status.Addresses)
}
}
}
@@ -1031,7 +1033,9 @@ func TestSyncNodeStatus(t *testing.T) {
Reason: "Node health check succeeded: kubelet /healthz endpoint returns ok",
},
},
HostIP: "1.2.3.4",
Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"},
},
},
},
{
@@ -1044,7 +1048,9 @@ func TestSyncNodeStatus(t *testing.T) {
Reason: "Node health check succeeded: kubelet /healthz endpoint returns ok",
},
},
HostIP: "1.2.3.4",
Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"},
},
},
},
},