Skip to content

Commit ddbf946

Browse files
Merge pull request #22872 from Miciah/text-slash-extended-check-both-IP-and-Hostname-on-LB
text/extended: Check both IP and Hostname on LB
2 parents 9b67250 + 95b1b7b commit ddbf946

5 files changed

Lines changed: 87 additions & 74 deletions

File tree

test/extended/router/headers.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ var _ = g.Describe("[Conformance][Area:Networking][Feature:Router]", func() {
2929

3030
g.BeforeEach(func() {
3131
var err error
32-
routerIP, err = waitForRouterServiceIP(oc)
32+
routerIP, err = exutil.WaitForRouterServiceIP(oc)
3333
o.Expect(err).NotTo(o.HaveOccurred())
34-
metricsIP, err = waitForRouterInternalIP(oc)
34+
metricsIP, err = exutil.WaitForRouterInternalIP(oc)
3535
o.Expect(err).NotTo(o.HaveOccurred())
3636

3737
if routerIP != metricsIP {

test/extended/router/metrics.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ var _ = g.Describe("[Conformance][Area:Networking][Feature:Router]", func() {
6666
}
6767
}
6868

69-
host, err = waitForRouterInternalIP(oc)
69+
host, err = exutil.WaitForRouterInternalIP(oc)
7070
o.Expect(err).NotTo(o.HaveOccurred())
7171

72-
serviceIP, err = waitForRouterServiceIP(oc)
72+
serviceIP, err = exutil.WaitForRouterServiceIP(oc)
7373
o.Expect(err).NotTo(o.HaveOccurred())
7474

7575
bearerToken, err = findMetricsBearerToken(oc)

test/extended/router/reencrypt.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ var _ = g.Describe("[Conformance][Area:Networking][Feature:Router]", func() {
3939

4040
g.BeforeEach(func() {
4141
var err error
42-
ip, err = waitForRouterServiceIP(oc)
42+
ip, err = exutil.WaitForRouterServiceIP(oc)
4343
o.Expect(err).NotTo(o.HaveOccurred())
4444

4545
ns = oc.KubeFramework().Namespace.Name

test/extended/router/router.go

Lines changed: 1 addition & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
g "github.com/onsi/ginkgo"
88
o "github.com/onsi/gomega"
99

10-
corev1 "k8s.io/api/core/v1"
11-
kapierrs "k8s.io/apimachinery/pkg/api/errors"
1210
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1311
"k8s.io/apimachinery/pkg/labels"
1412
"k8s.io/apimachinery/pkg/util/wait"
@@ -51,7 +49,7 @@ var _ = g.Describe("[Conformance][Area:Networking][Feature:Router]", func() {
5149

5250
g.BeforeEach(func() {
5351
var err error
54-
host, err = waitForRouterServiceIP(oc)
52+
host, err = exutil.WaitForRouterServiceIP(oc)
5553
o.Expect(err).NotTo(o.HaveOccurred())
5654

5755
ns = oc.KubeFramework().Namespace.Name
@@ -99,69 +97,3 @@ var _ = g.Describe("[Conformance][Area:Networking][Feature:Router]", func() {
9997
})
10098
})
10199
})
102-
103-
func waitForRouterInternalIP(oc *exutil.CLI) (string, error) {
104-
return waitForNamedRouterServiceIP(oc, "router-internal-default")
105-
}
106-
107-
func waitForRouterExternalIP(oc *exutil.CLI) (string, error) {
108-
return waitForNamedRouterServiceIP(oc, "router-default")
109-
}
110-
111-
func routerShouldHaveExternalService(oc *exutil.CLI) (bool, error) {
112-
foundLoadBalancerServiceStrategyType := false
113-
err := wait.PollImmediate(2*time.Second, 30*time.Second, func() (bool, error) {
114-
ic, err := oc.AdminOperatorClient().OperatorV1().IngressControllers("openshift-ingress-operator").Get("default", metav1.GetOptions{})
115-
if kapierrs.IsNotFound(err) {
116-
return false, nil
117-
}
118-
o.Expect(err).NotTo(o.HaveOccurred())
119-
if ic.Status.EndpointPublishingStrategy == nil {
120-
return false, nil
121-
}
122-
if ic.Status.EndpointPublishingStrategy.Type == "LoadBalancerService" {
123-
foundLoadBalancerServiceStrategyType = true
124-
}
125-
return true, nil
126-
})
127-
return foundLoadBalancerServiceStrategyType, err
128-
}
129-
130-
func waitForRouterServiceIP(oc *exutil.CLI) (string, error) {
131-
if useExternal, err := routerShouldHaveExternalService(oc); err != nil {
132-
return "", err
133-
} else if useExternal {
134-
return waitForRouterExternalIP(oc)
135-
}
136-
return waitForRouterInternalIP(oc)
137-
}
138-
139-
func waitForNamedRouterServiceIP(oc *exutil.CLI, name string) (string, error) {
140-
_, ns, err := exutil.GetRouterPodTemplate(oc)
141-
if err != nil {
142-
return "", err
143-
}
144-
145-
// wait for the service to show up
146-
var host string
147-
err = wait.PollImmediate(2*time.Second, 60*time.Second, func() (bool, error) {
148-
svc, err := oc.AdminKubeClient().CoreV1().Services(ns).Get(name, metav1.GetOptions{})
149-
if kapierrs.IsNotFound(err) {
150-
// see if an older service named 'router' exists.
151-
svc, err = oc.AdminKubeClient().CoreV1().Services(ns).Get("router", metav1.GetOptions{})
152-
if kapierrs.IsNotFound(err) {
153-
return false, nil
154-
}
155-
}
156-
o.Expect(err).NotTo(o.HaveOccurred())
157-
host = svc.Spec.ClusterIP
158-
if svc.Spec.Type == corev1.ServiceTypeLoadBalancer {
159-
if len(svc.Status.LoadBalancer.Ingress) == 0 || len(svc.Status.LoadBalancer.Ingress[0].Hostname) == 0 {
160-
return false, nil
161-
}
162-
host = svc.Status.LoadBalancer.Ingress[0].Hostname
163-
}
164-
return true, nil
165-
})
166-
return host, err
167-
}

test/extended/util/router.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package util
2+
3+
import (
4+
"time"
5+
6+
o "github.com/onsi/gomega"
7+
8+
corev1 "k8s.io/api/core/v1"
9+
kapierrs "k8s.io/apimachinery/pkg/api/errors"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"k8s.io/apimachinery/pkg/util/wait"
12+
)
13+
14+
func WaitForRouterInternalIP(oc *CLI) (string, error) {
15+
return waitForNamedRouterServiceIP(oc, "router-internal-default")
16+
}
17+
18+
func waitForRouterExternalIP(oc *CLI) (string, error) {
19+
return waitForNamedRouterServiceIP(oc, "router-default")
20+
}
21+
22+
func routerShouldHaveExternalService(oc *CLI) (bool, error) {
23+
foundLoadBalancerServiceStrategyType := false
24+
err := wait.PollImmediate(2*time.Second, 30*time.Second, func() (bool, error) {
25+
ic, err := oc.AdminOperatorClient().OperatorV1().IngressControllers("openshift-ingress-operator").Get("default", metav1.GetOptions{})
26+
if kapierrs.IsNotFound(err) {
27+
return false, nil
28+
}
29+
o.Expect(err).NotTo(o.HaveOccurred())
30+
if ic.Status.EndpointPublishingStrategy == nil {
31+
return false, nil
32+
}
33+
if ic.Status.EndpointPublishingStrategy.Type == "LoadBalancerService" {
34+
foundLoadBalancerServiceStrategyType = true
35+
}
36+
return true, nil
37+
})
38+
return foundLoadBalancerServiceStrategyType, err
39+
}
40+
41+
func WaitForRouterServiceIP(oc *CLI) (string, error) {
42+
if useExternal, err := routerShouldHaveExternalService(oc); err != nil {
43+
return "", err
44+
} else if useExternal {
45+
return waitForRouterExternalIP(oc)
46+
}
47+
return WaitForRouterInternalIP(oc)
48+
}
49+
50+
func waitForNamedRouterServiceIP(oc *CLI, name string) (string, error) {
51+
_, ns, err := GetRouterPodTemplate(oc)
52+
if err != nil {
53+
return "", err
54+
}
55+
56+
// wait for the service to show up
57+
var endpoint string
58+
err = wait.PollImmediate(2*time.Second, 60*time.Second, func() (bool, error) {
59+
svc, err := oc.AdminKubeClient().CoreV1().Services(ns).Get(name, metav1.GetOptions{})
60+
if kapierrs.IsNotFound(err) {
61+
return false, nil
62+
}
63+
o.Expect(err).NotTo(o.HaveOccurred())
64+
if svc.Spec.Type == corev1.ServiceTypeLoadBalancer {
65+
if len(svc.Status.LoadBalancer.Ingress) != 0 {
66+
if len(svc.Status.LoadBalancer.Ingress[0].IP) != 0 {
67+
endpoint = svc.Status.LoadBalancer.Ingress[0].IP
68+
return true, nil
69+
}
70+
if len(svc.Status.LoadBalancer.Ingress[0].Hostname) != 0 {
71+
endpoint = svc.Status.LoadBalancer.Ingress[0].Hostname
72+
return true, nil
73+
}
74+
}
75+
return false, nil
76+
}
77+
endpoint = svc.Spec.ClusterIP
78+
return true, nil
79+
})
80+
return endpoint, err
81+
}

0 commit comments

Comments
 (0)