SSH tunnels fallback to LegacyHostIP

pull/6/head
Chi Vinh Le 2015-07-28 10:10:48 +02:00
parent c5bffaaf31
commit d91932f0b7
2 changed files with 32 additions and 0 deletions

View File

@ -758,12 +758,20 @@ func (m *Master) api_v1() *apiserver.APIGroupVersion {
return version
}
// findExternalAddress returns ExternalIP of provided node with fallback to LegacyHostIP.
func findExternalAddress(node *api.Node) (string, error) {
var fallback string
for ix := range node.Status.Addresses {
addr := &node.Status.Addresses[ix]
if addr.Type == api.NodeExternalIP {
return addr.Address, nil
}
if fallback == "" && addr.Type == api.NodeLegacyHostIP {
fallback = addr.Address
}
}
if fallback != "" {
return fallback, nil
}
return "", fmt.Errorf("Couldn't find external address: %v", node)
}

View File

@ -46,3 +46,27 @@ func TestGetServersToValidate(t *testing.T) {
}
}
}
func TestFindExternalAddress(t *testing.T) {
expectedIP := "172.0.0.1"
nodes := []*api.Node{new(api.Node), new(api.Node), new(api.Node)}
nodes[0].Status.Addresses = []api.NodeAddress{{"ExternalIP", expectedIP}}
nodes[1].Status.Addresses = []api.NodeAddress{{"LegacyHostIP", expectedIP}}
nodes[2].Status.Addresses = []api.NodeAddress{{"ExternalIP", expectedIP}, {"LegacyHostIP", "172.0.0.2"}}
for _, node := range nodes {
ip, err := findExternalAddress(node)
if err != nil {
t.Errorf("error getting node external address: %s", err)
}
if ip != expectedIP {
t.Errorf("expected ip to be %s, but was %s", expectedIP, ip)
}
}
_, err := findExternalAddress(new(api.Node))
if err == nil {
t.Errorf("expected findExternalAddress to fail on a node with missing ip information")
}
}