remove deprecated NodeLegacyHostIP

pull/6/head
NickrenREN 2017-04-24 10:21:29 +08:00
parent 35159f9c45
commit 7d00e5cfb6
21 changed files with 31 additions and 88 deletions

View File

@ -102,8 +102,6 @@ func NewServerRunOptions() *ServerRunOptions {
// external, preferring DNS if reported // external, preferring DNS if reported
string(api.NodeExternalDNS), string(api.NodeExternalDNS),
string(api.NodeExternalIP), string(api.NodeExternalIP),
string(api.NodeLegacyHostIP),
}, },
EnableHttps: true, EnableHttps: true,
HTTPTimeout: time.Duration(5) * time.Second, HTTPTimeout: time.Duration(5) * time.Second,

View File

@ -483,7 +483,6 @@ func createService(clientset client.Interface, namespace, svcName, federationNam
func getClusterNodeIPs(clientset client.Interface) ([]string, error) { func getClusterNodeIPs(clientset client.Interface) ([]string, error) {
preferredAddressTypes := []api.NodeAddressType{ preferredAddressTypes := []api.NodeAddressType{
api.NodeExternalIP, api.NodeExternalIP,
api.NodeLegacyHostIP,
} }
nodeList, err := clientset.Core().Nodes().List(metav1.ListOptions{}) nodeList, err := clientset.Core().Nodes().List(metav1.ListOptions{})
if err != nil { if err != nil {

View File

@ -2904,16 +2904,12 @@ type NodeCondition struct {
type NodeAddressType string type NodeAddressType string
// These are valid address types of node. NodeLegacyHostIP is used to transit
// from out-dated HostIP field to NodeAddress.
const ( const (
// Deprecated: NodeLegacyHostIP will be removed in 1.7. NodeHostName NodeAddressType = "Hostname"
NodeLegacyHostIP NodeAddressType = "LegacyHostIP" NodeExternalIP NodeAddressType = "ExternalIP"
NodeHostName NodeAddressType = "Hostname" NodeInternalIP NodeAddressType = "InternalIP"
NodeExternalIP NodeAddressType = "ExternalIP" NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalIP NodeAddressType = "InternalIP" NodeInternalDNS NodeAddressType = "InternalDNS"
NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalDNS NodeAddressType = "InternalDNS"
) )
type NodeAddress struct { type NodeAddress struct {

View File

@ -3345,13 +3345,11 @@ type NodeAddressType string
// These are valid address type of node. // These are valid address type of node.
const ( const (
// Deprecated: NodeLegacyHostIP will be removed in 1.7. NodeHostName NodeAddressType = "Hostname"
NodeLegacyHostIP NodeAddressType = "LegacyHostIP" NodeExternalIP NodeAddressType = "ExternalIP"
NodeHostName NodeAddressType = "Hostname" NodeInternalIP NodeAddressType = "InternalIP"
NodeExternalIP NodeAddressType = "ExternalIP" NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalIP NodeAddressType = "InternalIP" NodeInternalDNS NodeAddressType = "InternalDNS"
NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalDNS NodeAddressType = "InternalDNS"
) )
// NodeAddress contains information for the node's address. // NodeAddress contains information for the node's address.

View File

@ -6244,7 +6244,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6262,7 +6262,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6279,7 +6279,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6318,7 +6318,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6406,7 +6406,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6425,7 +6425,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6444,7 +6444,7 @@ func TestValidateNode(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "something"}, {Type: api.NodeExternalIP, Address: "something"},
}, },
Capacity: api.ResourceList{ Capacity: api.ResourceList{
api.ResourceName(api.ResourceCPU): resource.MustParse("10"), api.ResourceName(api.ResourceCPU): resource.MustParse("10"),
@ -6687,7 +6687,7 @@ func TestValidateNodeUpdate(t *testing.T) {
}, },
Status: api.NodeStatus{ Status: api.NodeStatus{
Addresses: []api.NodeAddress{ Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}, {Type: api.NodeExternalIP, Address: "1.2.3.4"},
}, },
}, },
}, api.Node{ }, api.Node{

View File

@ -909,8 +909,6 @@ func (c *Cloud) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) {
return nil, err return nil, err
} }
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: internalIP}) addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: internalIP})
// Legacy compatibility: the private ip was the legacy host ip
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeLegacyHostIP, Address: internalIP})
externalIP, err := c.metadata.GetMetadata("public-ipv4") externalIP, err := c.metadata.GetMetadata("public-ipv4")
if err != nil { if err != nil {
@ -955,9 +953,6 @@ func (c *Cloud) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) {
return nil, fmt.Errorf("EC2 instance had invalid private address: %s (%s)", orEmpty(instance.InstanceId), ipAddress) return nil, fmt.Errorf("EC2 instance had invalid private address: %s (%s)", orEmpty(instance.InstanceId), ipAddress)
} }
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: ip.String()}) addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: ip.String()})
// Legacy compatibility: the private ip was the legacy host ip
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeLegacyHostIP, Address: ip.String()})
} }
// TODO: Other IP addresses (multiple ips)? // TODO: Other IP addresses (multiple ips)?

View File

@ -599,11 +599,10 @@ func TestNodeAddresses(t *testing.T) {
if err3 != nil { if err3 != nil {
t.Errorf("Should not error when instance found") t.Errorf("Should not error when instance found")
} }
if len(addrs3) != 5 { if len(addrs3) != 4 {
t.Errorf("Should return exactly 5 NodeAddresses") t.Errorf("Should return exactly 4 NodeAddresses")
} }
testHasNodeAddress(t, addrs3, v1.NodeInternalIP, "192.168.0.1") testHasNodeAddress(t, addrs3, v1.NodeInternalIP, "192.168.0.1")
testHasNodeAddress(t, addrs3, v1.NodeLegacyHostIP, "192.168.0.1")
testHasNodeAddress(t, addrs3, v1.NodeExternalIP, "1.2.3.4") testHasNodeAddress(t, addrs3, v1.NodeExternalIP, "1.2.3.4")
testHasNodeAddress(t, addrs3, v1.NodeExternalDNS, "instance-same.ec2.external") testHasNodeAddress(t, addrs3, v1.NodeExternalDNS, "instance-same.ec2.external")
testHasNodeAddress(t, addrs3, v1.NodeInternalDNS, "instance-same.ec2.internal") testHasNodeAddress(t, addrs3, v1.NodeInternalDNS, "instance-same.ec2.internal")

View File

@ -298,7 +298,6 @@ func (c *MesosCloud) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, e
return nil, err return nil, err
} }
return []v1.NodeAddress{ return []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: ip.String()},
{Type: v1.NodeInternalIP, Address: ip.String()}, {Type: v1.NodeInternalIP, Address: ip.String()},
{Type: v1.NodeExternalIP, Address: ip.String()}, {Type: v1.NodeExternalIP, Address: ip.String()},
}, nil }, nil

View File

@ -174,7 +174,6 @@ func (v *OVirtCloud) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, e
} }
return []v1.NodeAddress{ return []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: address.String()},
{Type: v1.NodeInternalIP, Address: address.String()}, {Type: v1.NodeInternalIP, Address: address.String()},
{Type: v1.NodeExternalIP, Address: address.String()}, {Type: v1.NodeExternalIP, Address: address.String()},
}, nil }, nil

View File

@ -381,7 +381,6 @@ func (i *Instances) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, er
// net.ParseIP().String() is to maintain compatibility with the old code // net.ParseIP().String() is to maintain compatibility with the old code
parsedIP := net.ParseIP(ip).String() parsedIP := net.ParseIP(ip).String()
return []v1.NodeAddress{ return []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: parsedIP},
{Type: v1.NodeInternalIP, Address: parsedIP}, {Type: v1.NodeInternalIP, Address: parsedIP},
{Type: v1.NodeExternalIP, Address: parsedIP}, {Type: v1.NodeExternalIP, Address: parsedIP},
}, nil }, nil

View File

@ -465,7 +465,6 @@ func (kl *Kubelet) setNodeAddress(node *v1.Node) error {
return fmt.Errorf("can't get ip address of node %s. error: %v", node.Name, err) return fmt.Errorf("can't get ip address of node %s. error: %v", node.Name, err)
} else { } else {
node.Status.Addresses = []v1.NodeAddress{ node.Status.Addresses = []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: ipAddr.String()},
{Type: v1.NodeInternalIP, Address: ipAddr.String()}, {Type: v1.NodeInternalIP, Address: ipAddr.String()},
{Type: v1.NodeHostName, Address: kl.GetHostname()}, {Type: v1.NodeHostName, Address: kl.GetHostname()},
} }

View File

@ -218,7 +218,6 @@ func TestUpdateNewNodeStatus(t *testing.T) {
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI), v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
}, },
Addresses: []v1.NodeAddress{ Addresses: []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: "127.0.0.1"},
{Type: v1.NodeInternalIP, Address: "127.0.0.1"}, {Type: v1.NodeInternalIP, Address: "127.0.0.1"},
{Type: v1.NodeHostName, Address: testKubeletHostname}, {Type: v1.NodeHostName, Address: testKubeletHostname},
}, },
@ -455,7 +454,6 @@ func TestUpdateExistingNodeStatus(t *testing.T) {
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI), v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
}, },
Addresses: []v1.NodeAddress{ Addresses: []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: "127.0.0.1"},
{Type: v1.NodeInternalIP, Address: "127.0.0.1"}, {Type: v1.NodeInternalIP, Address: "127.0.0.1"},
{Type: v1.NodeHostName, Address: testKubeletHostname}, {Type: v1.NodeHostName, Address: testKubeletHostname},
}, },
@ -739,7 +737,6 @@ func TestUpdateNodeStatusWithRuntimeStateError(t *testing.T) {
v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI), v1.ResourcePods: *resource.NewQuantity(0, resource.DecimalSI),
}, },
Addresses: []v1.NodeAddress{ Addresses: []v1.NodeAddress{
{Type: v1.NodeLegacyHostIP, Address: "127.0.0.1"},
{Type: v1.NodeInternalIP, Address: "127.0.0.1"}, {Type: v1.NodeInternalIP, Address: "127.0.0.1"},
{Type: v1.NodeHostName, Address: testKubeletHostname}, {Type: v1.NodeHostName, Address: testKubeletHostname},
}, },

View File

@ -349,7 +349,6 @@ type nodeAddressProvider struct {
func (n nodeAddressProvider) externalAddresses() ([]string, error) { func (n nodeAddressProvider) externalAddresses() ([]string, error) {
preferredAddressTypes := []apiv1.NodeAddressType{ preferredAddressTypes := []apiv1.NodeAddressType{
apiv1.NodeExternalIP, apiv1.NodeExternalIP,
apiv1.NodeLegacyHostIP,
} }
nodes, err := n.nodeClient.List(metav1.ListOptions{}) nodes, err := n.nodeClient.List(metav1.ListOptions{})
if err != nil { if err != nil {

View File

@ -205,16 +205,6 @@ func TestGetNodeAddresses(t *testing.T) {
addrs, err = addressProvider.externalAddresses() addrs, err = addressProvider.externalAddresses()
assert.NoError(err, "addresses should not have returned an error.") assert.NoError(err, "addresses should not have returned an error.")
assert.Equal([]string{"127.0.0.1", "127.0.0.1"}, addrs) assert.Equal([]string{"127.0.0.1", "127.0.0.1"}, addrs)
// Pass case with LegacyHost type IP
nodes, _ = fakeNodeClient.List(metav1.ListOptions{})
for index := range nodes.Items {
nodes.Items[index].Status.Addresses = []apiv1.NodeAddress{{Type: apiv1.NodeLegacyHostIP, Address: "127.0.0.2"}}
fakeNodeClient.Update(&nodes.Items[index])
}
addrs, err = addressProvider.externalAddresses()
assert.NoError(err, "addresses failback should not have returned an error.")
assert.Equal([]string{"127.0.0.2", "127.0.0.2"}, addrs)
} }
func decodeResponse(resp *http.Response, obj interface{}) error { func decodeResponse(resp *http.Response, obj interface{}) error {

View File

@ -852,7 +852,6 @@ func TestPrintNodeExternalIP(t *testing.T) {
node: api.Node{ node: api.Node{
ObjectMeta: metav1.ObjectMeta{Name: "foo3"}, ObjectMeta: metav1.ObjectMeta{Name: "foo3"},
Status: api.NodeStatus{Addresses: []api.NodeAddress{ Status: api.NodeStatus{Addresses: []api.NodeAddress{
{Type: api.NodeLegacyHostIP, Address: "1.1.1.1"},
{Type: api.NodeExternalIP, Address: "2.2.2.2"}, {Type: api.NodeExternalIP, Address: "2.2.2.2"},
{Type: api.NodeInternalIP, Address: "3.3.3.3"}, {Type: api.NodeInternalIP, Address: "3.3.3.3"},
{Type: api.NodeExternalIP, Address: "4.4.4.4"}, {Type: api.NodeExternalIP, Address: "4.4.4.4"},

View File

@ -75,7 +75,6 @@ func GetPreferredNodeAddress(node *v1.Node, preferredAddressTypes []v1.NodeAddre
// GetNodeHostIP returns the provided node's IP, based on the priority: // GetNodeHostIP returns the provided node's IP, based on the priority:
// 1. NodeInternalIP // 1. NodeInternalIP
// 2. NodeExternalIP // 2. NodeExternalIP
// 3. NodeLegacyHostIP
func GetNodeHostIP(node *v1.Node) (net.IP, error) { func GetNodeHostIP(node *v1.Node) (net.IP, error) {
addresses := node.Status.Addresses addresses := node.Status.Addresses
addressMap := make(map[v1.NodeAddressType][]v1.NodeAddress) addressMap := make(map[v1.NodeAddressType][]v1.NodeAddress)
@ -88,16 +87,12 @@ func GetNodeHostIP(node *v1.Node) (net.IP, error) {
if addresses, ok := addressMap[v1.NodeExternalIP]; ok { if addresses, ok := addressMap[v1.NodeExternalIP]; ok {
return net.ParseIP(addresses[0].Address), nil return net.ParseIP(addresses[0].Address), nil
} }
if addresses, ok := addressMap[v1.NodeLegacyHostIP]; ok {
return net.ParseIP(addresses[0].Address), nil
}
return nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses) return nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses)
} }
// InternalGetNodeHostIP returns the provided node's IP, based on the priority: // InternalGetNodeHostIP returns the provided node's IP, based on the priority:
// 1. NodeInternalIP // 1. NodeInternalIP
// 2. NodeExternalIP // 2. NodeExternalIP
// 3. NodeLegacyHostIP
func InternalGetNodeHostIP(node *api.Node) (net.IP, error) { func InternalGetNodeHostIP(node *api.Node) (net.IP, error) {
addresses := node.Status.Addresses addresses := node.Status.Addresses
addressMap := make(map[api.NodeAddressType][]api.NodeAddress) addressMap := make(map[api.NodeAddressType][]api.NodeAddress)
@ -110,9 +105,6 @@ func InternalGetNodeHostIP(node *api.Node) (net.IP, error) {
if addresses, ok := addressMap[api.NodeExternalIP]; ok { if addresses, ok := addressMap[api.NodeExternalIP]; ok {
return net.ParseIP(addresses[0].Address), nil return net.ParseIP(addresses[0].Address), nil
} }
if addresses, ok := addressMap[api.NodeLegacyHostIP]; ok {
return net.ParseIP(addresses[0].Address), nil
}
return nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses) return nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses)
} }

View File

@ -2904,16 +2904,12 @@ type NodeCondition struct {
type NodeAddressType string type NodeAddressType string
// These are valid address types of node. NodeLegacyHostIP is used to transit
// from out-dated HostIP field to NodeAddress.
const ( const (
// Deprecated: NodeLegacyHostIP will be removed in 1.7. NodeHostName NodeAddressType = "Hostname"
NodeLegacyHostIP NodeAddressType = "LegacyHostIP" NodeExternalIP NodeAddressType = "ExternalIP"
NodeHostName NodeAddressType = "Hostname" NodeInternalIP NodeAddressType = "InternalIP"
NodeExternalIP NodeAddressType = "ExternalIP" NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalIP NodeAddressType = "InternalIP" NodeInternalDNS NodeAddressType = "InternalDNS"
NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalDNS NodeAddressType = "InternalDNS"
) )
type NodeAddress struct { type NodeAddress struct {

View File

@ -3345,13 +3345,11 @@ type NodeAddressType string
// These are valid address type of node. // These are valid address type of node.
const ( const (
// Deprecated: NodeLegacyHostIP will be removed in 1.7. NodeHostName NodeAddressType = "Hostname"
NodeLegacyHostIP NodeAddressType = "LegacyHostIP" NodeExternalIP NodeAddressType = "ExternalIP"
NodeHostName NodeAddressType = "Hostname" NodeInternalIP NodeAddressType = "InternalIP"
NodeExternalIP NodeAddressType = "ExternalIP" NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalIP NodeAddressType = "InternalIP" NodeInternalDNS NodeAddressType = "InternalDNS"
NodeExternalDNS NodeAddressType = "ExternalDNS"
NodeInternalDNS NodeAddressType = "InternalDNS"
) )
// NodeAddress contains information for the node's address. // NodeAddress contains information for the node's address.

View File

@ -476,10 +476,7 @@ func (config *NetworkingTestConfig) setup(selector map[string]string) {
ExpectNoError(WaitForAllNodesSchedulable(config.f.ClientSet, 10*time.Minute)) ExpectNoError(WaitForAllNodesSchedulable(config.f.ClientSet, 10*time.Minute))
nodeList := GetReadySchedulableNodesOrDie(config.f.ClientSet) nodeList := GetReadySchedulableNodesOrDie(config.f.ClientSet)
config.ExternalAddrs = NodeAddresses(nodeList, v1.NodeExternalIP) config.ExternalAddrs = NodeAddresses(nodeList, v1.NodeExternalIP)
if len(config.ExternalAddrs) < 2 {
// fall back to legacy IPs
config.ExternalAddrs = NodeAddresses(nodeList, v1.NodeLegacyHostIP)
}
SkipUnlessNodeCountIsAtLeast(2) SkipUnlessNodeCountIsAtLeast(2)
config.Nodes = nodeList.Items config.Nodes = nodeList.Items

View File

@ -258,9 +258,6 @@ func GetNodePublicIps(c clientset.Interface) ([]string, error) {
nodes := GetReadySchedulableNodesOrDie(c) nodes := GetReadySchedulableNodesOrDie(c)
ips := CollectAddresses(nodes, v1.NodeExternalIP) ips := CollectAddresses(nodes, v1.NodeExternalIP)
if len(ips) == 0 {
ips = CollectAddresses(nodes, v1.NodeLegacyHostIP)
}
return ips, nil return ips, nil
} }

View File

@ -1353,9 +1353,6 @@ var _ = framework.KubeDescribe("ESIPP [Slow]", func() {
} }
ips := framework.CollectAddresses(nodes, v1.NodeExternalIP) ips := framework.CollectAddresses(nodes, v1.NodeExternalIP)
if len(ips) == 0 {
ips = framework.CollectAddresses(nodes, v1.NodeLegacyHostIP)
}
ingressIP := framework.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0]) ingressIP := framework.GetIngressPoint(&svc.Status.LoadBalancer.Ingress[0])
svcTCPPort := int(svc.Spec.Ports[0].Port) svcTCPPort := int(svc.Spec.Ports[0].Port)