Merge pull request #5116 from justinsb/skip_duplicate_node_address

Don't allow duplicate values in NodeAddresses
This commit is contained in:
Daniel Smith 2015-03-09 11:59:54 -07:00
commit 2a7be5619a
4 changed files with 21 additions and 5 deletions

View File

@ -1405,3 +1405,19 @@ const (
PortHeader = "port" PortHeader = "port"
) )
// Appends the NodeAddresses to the passed-by-pointer slice, only if they do not already exist
func AddToNodeAddresses(addresses *[]NodeAddress, addAddresses ...NodeAddress) {
for _, add := range addAddresses {
exists := false
for _, existing := range *addresses {
if existing.Address == add.Address && existing.Type == add.Type {
exists = true
break
}
}
if !exists {
*addresses = append(*addresses, add)
}
}
}

View File

@ -730,7 +730,7 @@ func init() {
} }
if in.HostIP != "" { if in.HostIP != "" {
out.Status.Addresses = append(out.Status.Addresses, newer.AddToNodeAddresses(&out.Status.Addresses,
newer.NodeAddress{Type: newer.NodeLegacyHostIP, Address: in.HostIP}) newer.NodeAddress{Type: newer.NodeLegacyHostIP, Address: in.HostIP})
} }
out.Spec.PodCIDR = in.PodCIDR out.Spec.PodCIDR = in.PodCIDR

View File

@ -650,7 +650,7 @@ func init() {
} }
if in.HostIP != "" { if in.HostIP != "" {
out.Status.Addresses = append(out.Status.Addresses, newer.AddToNodeAddresses(&out.Status.Addresses,
newer.NodeAddress{Type: newer.NodeLegacyHostIP, Address: in.HostIP}) newer.NodeAddress{Type: newer.NodeLegacyHostIP, Address: in.HostIP})
} }
out.Spec.PodCIDR = in.PodCIDR out.Spec.PodCIDR = in.PodCIDR

View File

@ -278,7 +278,7 @@ func (s *NodeController) PopulateAddresses(nodes *api.NodeList) (*api.NodeList,
glog.Errorf("error getting instance ip address for %s: %v", node.Name, err) glog.Errorf("error getting instance ip address for %s: %v", node.Name, err)
} else { } else {
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: hostIP.String()} address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: hostIP.String()}
node.Status.Addresses = append(node.Status.Addresses, address) api.AddToNodeAddresses(&node.Status.Addresses, address)
} }
} }
} else { } else {
@ -287,7 +287,7 @@ func (s *NodeController) PopulateAddresses(nodes *api.NodeList) (*api.NodeList,
addr := net.ParseIP(node.Name) addr := net.ParseIP(node.Name)
if addr != nil { if addr != nil {
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addr.String()} address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addr.String()}
node.Status.Addresses = append(node.Status.Addresses, address) api.AddToNodeAddresses(&node.Status.Addresses, address)
} else { } else {
addrs, err := lookupIP(node.Name) addrs, err := lookupIP(node.Name)
if err != nil { if err != nil {
@ -296,7 +296,7 @@ func (s *NodeController) PopulateAddresses(nodes *api.NodeList) (*api.NodeList,
glog.Errorf("No ip address for node %v", node.Name) glog.Errorf("No ip address for node %v", node.Name)
} else { } else {
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addrs[0].String()} address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addrs[0].String()}
node.Status.Addresses = append(node.Status.Addresses, address) api.AddToNodeAddresses(&node.Status.Addresses, address)
} }
} }
} }