diff --git a/test/e2e/framework/node/resource.go b/test/e2e/framework/node/resource.go index a3a50628840..d6359a2d807 100644 --- a/test/e2e/framework/node/resource.go +++ b/test/e2e/framework/node/resource.go @@ -89,18 +89,6 @@ type PodNode struct { Node string } -// FirstAddress returns the first address of the given type of each node. -func FirstAddress(nodelist *v1.NodeList, addrType v1.NodeAddressType) string { - for _, n := range nodelist.Items { - for _, addr := range n.Status.Addresses { - if addr.Type == addrType && addr.Address != "" { - return addr.Address - } - } - } - return "" -} - func isNodeConditionSetAsExpected(node *v1.Node, conditionType v1.NodeConditionType, wantTrue, silent bool) bool { // Check the node readiness condition (logging all). for _, cond := range node.Status.Conditions { @@ -294,19 +282,6 @@ func CollectAddresses(nodes *v1.NodeList, addressType v1.NodeAddressType) []stri return ips } -// PickIP picks one public node IP -func PickIP(ctx context.Context, c clientset.Interface) (string, error) { - publicIps, err := GetPublicIps(ctx, c) - if err != nil { - return "", fmt.Errorf("get node public IPs error: %w", err) - } - if len(publicIps) == 0 { - return "", fmt.Errorf("got unexpected number (%d) of public IPs", len(publicIps)) - } - ip := publicIps[0] - return ip, nil -} - // GetPublicIps returns a public IP list of nodes. func GetPublicIps(ctx context.Context, c clientset.Interface) ([]string, error) { nodes, err := GetReadySchedulableNodes(ctx, c) diff --git a/test/e2e/framework/service/jig.go b/test/e2e/framework/service/jig.go index ecbd897496c..c76e14011b0 100644 --- a/test/e2e/framework/service/jig.go +++ b/test/e2e/framework/service/jig.go @@ -361,26 +361,6 @@ func (j *TestJig) CreateLoadBalancerService(ctx context.Context, timeout time.Du return j.WaitForLoadBalancer(ctx, timeout) } -// GetEndpointNodes returns a map of nodenames:external-ip on which the -// endpoints of the Service are running. -func (j *TestJig) GetEndpointNodes(ctx context.Context) (map[string][]string, error) { - return j.GetEndpointNodesWithIP(ctx, v1.NodeExternalIP) -} - -// GetEndpointNodesWithIP returns a map of nodenames: on which the -// endpoints of the Service are running. -func (j *TestJig) GetEndpointNodesWithIP(ctx context.Context, addressType v1.NodeAddressType) (map[string][]string, error) { - nodes, err := j.ListNodesWithEndpoint(ctx) - if err != nil { - return nil, err - } - nodeMap := map[string][]string{} - for _, node := range nodes { - nodeMap[node.Name] = e2enode.GetAddresses(&node, addressType) - } - return nodeMap, nil -} - // ListNodesWithEndpoint returns a list of nodes on which the // endpoints of the given Service are running. func (j *TestJig) ListNodesWithEndpoint(ctx context.Context) ([]v1.Node, error) { diff --git a/test/e2e/framework/ssh/ssh.go b/test/e2e/framework/ssh/ssh.go index d60cec3c225..c9a136d8d7f 100644 --- a/test/e2e/framework/ssh/ssh.go +++ b/test/e2e/framework/ssh/ssh.go @@ -125,8 +125,7 @@ func makePrivateKeySignerFromFile(key string) (ssh.Signer, error) { // NodeSSHHosts returns SSH-able host names for all schedulable nodes. // If it can't find any external IPs, it falls back to // looking for internal IPs. If it can't find an internal IP for every node it -// returns an error, though it still returns all hosts that it found in that -// case. +// returns an error. func NodeSSHHosts(ctx context.Context, c clientset.Interface) ([]string, error) { nodelist := waitListSchedulableNodesOrDie(ctx, c) @@ -136,10 +135,9 @@ func NodeSSHHosts(ctx context.Context, c clientset.Interface) ([]string, error) framework.Logf("No external IP address on nodes, falling back to internal IPs") hosts = nodeAddresses(nodelist, v1.NodeInternalIP) } - - // Error if neither External nor Internal IPs weren't available for all nodes. if len(hosts) != len(nodelist.Items) { - return hosts, fmt.Errorf( + // Something is wrong; all schedulable nodes should have at least one IP. + return nil, fmt.Errorf( "only found %d IPs on nodes, but found %d nodes. Nodelist: %v", len(hosts), len(nodelist.Items), nodelist) } diff --git a/test/e2e/network/service.go b/test/e2e/network/service.go index 08efe86412c..8a7d742c077 100644 --- a/test/e2e/network/service.go +++ b/test/e2e/network/service.go @@ -698,16 +698,17 @@ func waitForAPIServerUp(ctx context.Context, c clientset.Interface) error { // getEndpointNodesWithInternalIP returns a map of nodenames:internal-ip on which the // endpoints of the Service are running. func getEndpointNodesWithInternalIP(ctx context.Context, jig *e2eservice.TestJig) (map[string]string, error) { - nodesWithIPs, err := jig.GetEndpointNodesWithIP(ctx, v1.NodeInternalIP) + nodes, err := jig.ListNodesWithEndpoint(ctx) if err != nil { return nil, err } - endpointsNodeMap := make(map[string]string, len(nodesWithIPs)) - for nodeName, internalIPs := range nodesWithIPs { + endpointsNodeMap := make(map[string]string, len(nodes)) + for _, node := range nodes { + internalIPs := e2enode.GetAddresses(&node, v1.NodeInternalIP) if len(internalIPs) < 1 { - return nil, fmt.Errorf("no internal ip found for node %s", nodeName) + return nil, fmt.Errorf("no internal ip found for node %s", node.Name) } - endpointsNodeMap[nodeName] = internalIPs[0] + endpointsNodeMap[node.Name] = internalIPs[0] } return endpointsNodeMap, nil } diff --git a/test/e2e/windows/service.go b/test/e2e/windows/service.go index 9cc0d349a89..a88f52b099d 100644 --- a/test/e2e/windows/service.go +++ b/test/e2e/windows/service.go @@ -54,8 +54,6 @@ var _ = sigDescribe("Services", skipUnlessWindows(func() { ns := f.Namespace.Name jig := e2eservice.NewTestJig(cs, ns, serviceName) - nodeIP, err := e2enode.PickIP(ctx, jig.Client) - framework.ExpectNoError(err) ginkgo.By("creating service " + serviceName + " with type=NodePort in namespace " + ns) svc, err := jig.CreateTCPService(ctx, func(svc *v1.Service) { @@ -63,6 +61,11 @@ var _ = sigDescribe("Services", skipUnlessWindows(func() { }) framework.ExpectNoError(err) + node, err := e2enode.GetRandomReadySchedulableNode(ctx, jig.Client) + framework.ExpectNoError(err) + ips := e2enode.GetAddressesByTypeAndFamily(node, v1.NodeInternalIP, svc.Spec.IPFamilies[0]) + gomega.Expect(ips).NotTo(gomega.BeEmpty()) + nodeIP := ips[0] nodePort := int(svc.Spec.Ports[0].NodePort) ginkgo.By("creating Pod to be part of service " + serviceName)