Don't allow duplicate values in NodeAddresses

pull/6/head
Justin Santa Barbara 2015-03-05 16:40:28 -08:00
parent e8ee20afff
commit bf031fb082
4 changed files with 21 additions and 5 deletions

View File

@ -1405,3 +1405,19 @@ const (
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 != "" {
out.Status.Addresses = append(out.Status.Addresses,
newer.AddToNodeAddresses(&out.Status.Addresses,
newer.NodeAddress{Type: newer.NodeLegacyHostIP, Address: in.HostIP})
}
out.Spec.PodCIDR = in.PodCIDR

View File

@ -650,7 +650,7 @@ func init() {
}
if in.HostIP != "" {
out.Status.Addresses = append(out.Status.Addresses,
newer.AddToNodeAddresses(&out.Status.Addresses,
newer.NodeAddress{Type: newer.NodeLegacyHostIP, Address: in.HostIP})
}
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)
} else {
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: hostIP.String()}
node.Status.Addresses = append(node.Status.Addresses, address)
api.AddToNodeAddresses(&node.Status.Addresses, address)
}
}
} else {
@ -287,7 +287,7 @@ func (s *NodeController) PopulateAddresses(nodes *api.NodeList) (*api.NodeList,
addr := net.ParseIP(node.Name)
if addr != nil {
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addr.String()}
node.Status.Addresses = append(node.Status.Addresses, address)
api.AddToNodeAddresses(&node.Status.Addresses, address)
} else {
addrs, err := lookupIP(node.Name)
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)
} else {
address := api.NodeAddress{Type: api.NodeLegacyHostIP, Address: addrs[0].String()}
node.Status.Addresses = append(node.Status.Addresses, address)
api.AddToNodeAddresses(&node.Status.Addresses, address)
}
}
}