Skip to content

Commit afd53ab

Browse files
authored
Merge pull request #5336 from martinkennelly/fix-kind-localnet
E2Es: remove additional references to KinD setup
2 parents dfc53c8 + b181650 commit afd53ab

File tree

4 files changed

+46
-46
lines changed

4 files changed

+46
-46
lines changed

test/e2e/e2e.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import (
1717
"github.com/onsi/ginkgo/v2"
1818
"github.com/onsi/gomega"
1919

20+
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/config"
21+
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/util"
2022
"github.com/ovn-org/ovn-kubernetes/test/e2e/containerengine"
2123
"github.com/ovn-org/ovn-kubernetes/test/e2e/deploymentconfig"
2224
"github.com/ovn-org/ovn-kubernetes/test/e2e/images"
@@ -558,16 +560,13 @@ func getApiAddress() string {
558560
}
559561

560562
// IsGatewayModeLocal returns true if the gateway mode is local
561-
func IsGatewayModeLocal() bool {
562-
anno, err := e2ekubectl.RunKubectl("default", "get", "node", "ovn-control-plane", "-o", "template", "--template={{.metadata.annotations}}")
563-
if err != nil {
564-
framework.Logf("Error getting annotations: %v", err)
565-
return false
566-
}
567-
framework.Logf("Annotations received: %s", anno)
568-
isLocal := strings.Contains(anno, "local")
569-
framework.Logf("IsGatewayModeLocal returning: %v", isLocal)
570-
return isLocal
563+
func IsGatewayModeLocal(cs kubernetes.Interface) bool {
564+
ginkgo.GinkgoHelper()
565+
node, err := e2enode.GetRandomReadySchedulableNode(context.TODO(), cs)
566+
gomega.Expect(err).NotTo(gomega.HaveOccurred())
567+
l3Config, err := util.ParseNodeL3GatewayAnnotation(node)
568+
gomega.Expect(err).NotTo(gomega.HaveOccurred(), "must get node l3 gateway annotation")
569+
return l3Config.Mode == config.GatewayModeLocal
571570
}
572571

573572
// restartOVNKubeNodePod restarts the ovnkube-node pod from namespace, running on nodeName

test/e2e/multi_node_zones_interconnect.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,8 @@ func checkPodsInterconnectivity(clientPod, serverPod *v1.Pod, namespace string,
9191
var _ = ginkgo.Describe("Multi node zones interconnect", feature.Interconnect, func() {
9292

9393
const (
94-
serverPodNodeName = "ovn-control-plane"
95-
serverPodName = "server-pod"
96-
clientPodNodeName = "ovn-worker3"
97-
clientPodName = "client-pod"
94+
serverPodName = "server-pod"
95+
clientPodName = "client-pod"
9896
)
9997
fr := wrappedTestFramework("multi-node-zones")
10098

@@ -120,13 +118,13 @@ var _ = ginkgo.Describe("Multi node zones interconnect", feature.Interconnect, f
120118
len(nodes.Items))
121119
}
122120

123-
serverPodNode, err = cs.CoreV1().Nodes().Get(context.TODO(), serverPodNodeName, metav1.GetOptions{})
121+
serverPodNode, err = cs.CoreV1().Nodes().Get(context.TODO(), nodes.Items[0].Name, metav1.GetOptions{})
124122
if err != nil {
125123
e2eskipper.Skipf(
126124
"Test requires node with the name %s", serverPodName,
127125
)
128126
}
129-
clientPodNode, err = cs.CoreV1().Nodes().Get(context.TODO(), clientPodNodeName, metav1.GetOptions{})
127+
clientPodNode, err = cs.CoreV1().Nodes().Get(context.TODO(), nodes.Items[1].Name, metav1.GetOptions{})
130128
if err != nil {
131129
e2eskipper.Skipf(
132130
"Test requires node with the name %s", clientPodName,
@@ -141,7 +139,7 @@ var _ = ginkgo.Describe("Multi node zones interconnect", feature.Interconnect, f
141139

142140
if serverPodNodeZone == clientPodNodeZone {
143141
e2eskipper.Skipf(
144-
"Test requires nodes %s and %s are in different zones", serverPodNodeName, clientPodNodeName,
142+
"Test requires nodes %s and %s are in different zones", nodes.Items[0].Name, nodes.Items[1].Name,
145143
)
146144
}
147145
})
@@ -150,21 +148,21 @@ var _ = ginkgo.Describe("Multi node zones interconnect", feature.Interconnect, f
150148
// Create a server pod on zone - zone-1
151149
cmd := httpServerContainerCmd(8000)
152150
serverPod := e2epod.NewAgnhostPod(fr.Namespace.Name, serverPodName, nil, nil, nil, cmd...)
153-
serverPod.Spec.NodeName = serverPodNodeName
151+
serverPod.Spec.NodeName = serverPodNode.Name
154152
e2epod.NewPodClient(fr).CreateSync(context.TODO(), serverPod)
155153

156154
// Create a client pod on zone - zone-2
157155
cmd = []string{}
158156
clientPod := e2epod.NewAgnhostPod(fr.Namespace.Name, clientPodName, nil, nil, nil, cmd...)
159-
clientPod.Spec.NodeName = clientPodNodeName
157+
clientPod.Spec.NodeName = clientPodNode.Name
160158
e2epod.NewPodClient(fr).CreateSync(context.TODO(), clientPod)
161159

162160
ginkgo.By("asserting the *client* pod can contact the server pod exposed endpoint")
163161
err := checkPodsInterconnectivity(clientPod, serverPod, fr.Namespace.Name, cs)
164162
framework.ExpectNoError(err, "failed to check pods interconnectivity")
165163

166164
// Change the zone of client-pod node to that of server-pod node
167-
s := fmt.Sprintf("Changing the client-pod node %s zone from %s to %s", clientPodNodeName, clientPodNodeZone, serverPodNodeZone)
165+
s := fmt.Sprintf("Changing the client-pod node %s zone from %s to %s", clientPodNode.Name, clientPodNodeZone, serverPodNodeZone)
168166
ginkgo.By(s)
169167
err = changeNodeZone(clientPodNode, serverPodNodeZone, cs)
170168
framework.ExpectNoError(err, "failed to change node zone")
@@ -174,7 +172,7 @@ var _ = ginkgo.Describe("Multi node zones interconnect", feature.Interconnect, f
174172
framework.ExpectNoError(err, "failed to check pods interconnectivity")
175173

176174
// Change back the zone of client-pod node
177-
s = fmt.Sprintf("Changing back the client-pod node %s zone from %s to %s", clientPodNodeName, serverPodNodeZone, clientPodNodeZone)
175+
s = fmt.Sprintf("Changing back the client-pod node %s zone from %s to %s", clientPodNode.Name, serverPodNodeZone, clientPodNodeZone)
178176
ginkgo.By(s)
179177
err = changeNodeZone(clientPodNode, clientPodNodeZone, cs)
180178
framework.ExpectNoError(err, "failed to change node zone")

test/e2e/multihoming.go

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -272,18 +272,26 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
272272
)
273273

274274
const (
275-
clientPodName = "client-pod"
276-
clientIPOffset = 100
277-
serverIPOffset = 102
278-
port = 9000
279-
workerOneNodeName = "ovn-worker"
280-
workerTwoNodeName = "ovn-worker2"
275+
clientPodName = "client-pod"
276+
clientIPOffset = 100
277+
serverIPOffset = 102
278+
port = 9000
281279
)
282280

283281
ginkgo.DescribeTable("attached to a localnet network mapped to breth0",
284282

285-
func(netConfigParams networkAttachmentConfigParams, clientPodConfig, serverPodConfig podConfiguration) {
286-
283+
func(netConfigParams networkAttachmentConfigParams, clientPodConfig, serverPodConfig podConfiguration, isCollocatedPods bool) {
284+
By("Get two scheduable nodes and ensure client and server are located on distinct Nodes")
285+
nodes, err := e2enode.GetBoundedReadySchedulableNodes(context.Background(), f.ClientSet, 2)
286+
framework.ExpectNoError(err, "2 scheduable nodes are required")
287+
Expect(len(nodes.Items)).To(BeNumerically(">=", 1), "cluster should have at least 2 nodes")
288+
if isCollocatedPods {
289+
clientPodConfig.nodeSelector = map[string]string{nodeHostnameKey: nodes.Items[0].GetName()}
290+
serverPodConfig.nodeSelector = map[string]string{nodeHostnameKey: nodes.Items[0].GetName()}
291+
} else {
292+
clientPodConfig.nodeSelector = map[string]string{nodeHostnameKey: nodes.Items[0].GetName()}
293+
serverPodConfig.nodeSelector = map[string]string{nodeHostnameKey: nodes.Items[1].GetName()}
294+
}
287295
netConfig := newNetworkAttachmentConfig(networkAttachmentConfigParams{
288296
name: secondaryNetworkName,
289297
namespace: f.Namespace.Name,
@@ -307,7 +315,7 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
307315

308316
nad := generateNAD(netConfig)
309317
By(fmt.Sprintf("creating the attachment configuration: %v\n", nad))
310-
_, err := nadClient.NetworkAttachmentDefinitions(f.Namespace.Name).Create(
318+
_, err = nadClient.NetworkAttachmentDefinitions(f.Namespace.Name).Create(
311319
context.Background(),
312320
nad,
313321
metav1.CreateOptions{},
@@ -369,7 +377,6 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
369377
},
370378
podConfiguration{ // client on default network
371379
name: clientPodName,
372-
nodeSelector: map[string]string{nodeHostnameKey: workerOneNodeName},
373380
isPrivileged: true,
374381
},
375382
podConfiguration{ // server attached to localnet secondary network
@@ -378,9 +385,9 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
378385
}},
379386
name: podName,
380387
containerCmd: httpServerContainerCmd(port),
381-
nodeSelector: map[string]string{nodeHostnameKey: workerTwoNodeName},
382388
needsIPRequestFromHostSubnet: true, // will override attachments above with an IPRequest
383389
},
390+
false, // scheduled on distinct Nodes
384391
Label("BUG", "OCPBUGS-43004"),
385392
),
386393
ginkgo.Entry(
@@ -391,7 +398,6 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
391398
},
392399
podConfiguration{ // client on default network
393400
name: clientPodName + "-same-node",
394-
nodeSelector: map[string]string{nodeHostnameKey: workerTwoNodeName},
395401
isPrivileged: true,
396402
},
397403
podConfiguration{ // server attached to localnet secondary network
@@ -400,9 +406,9 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
400406
}},
401407
name: podName,
402408
containerCmd: httpServerContainerCmd(port),
403-
nodeSelector: map[string]string{nodeHostnameKey: workerTwoNodeName},
404409
needsIPRequestFromHostSubnet: true,
405410
},
411+
true, // collocated on same Node
406412
Label("BUG", "OCPBUGS-43004"),
407413
),
408414
ginkgo.Entry(
@@ -416,16 +422,15 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
416422
Name: secondaryNetworkName,
417423
}},
418424
name: clientPodName,
419-
nodeSelector: map[string]string{nodeHostnameKey: workerOneNodeName},
420425
isPrivileged: true,
421426
needsIPRequestFromHostSubnet: true,
422427
},
423428
podConfiguration{ // server on default network, pod is host-networked
424429
name: podName,
425430
containerCmd: httpServerContainerCmd(port),
426-
nodeSelector: map[string]string{nodeHostnameKey: workerTwoNodeName},
427431
hostNetwork: true,
428432
},
433+
false, // not collocated on same node
429434
Label("STORY", "SDN-5345"),
430435
),
431436
ginkgo.Entry(
@@ -439,30 +444,27 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
439444
Name: secondaryNetworkName,
440445
}},
441446
name: clientPodName,
442-
nodeSelector: map[string]string{nodeHostnameKey: workerTwoNodeName},
443447
isPrivileged: true,
444448
needsIPRequestFromHostSubnet: true,
445449
},
446450
podConfiguration{ // server on default network, pod is host-networked
447451
name: podName,
448452
containerCmd: httpServerContainerCmd(port),
449-
nodeSelector: map[string]string{nodeHostnameKey: workerTwoNodeName},
450453
hostNetwork: true,
451454
},
455+
true, // collocated on same node
452456
Label("STORY", "SDN-5345"),
453457
),
454458
)
455459
})
456460

457461
Context("multiple pods connected to the same OVN-K secondary network", func() {
458462
const (
459-
workerOneNodeName = "ovn-worker"
460-
workerTwoNodeName = "ovn-worker2"
461-
clientPodName = "client-pod"
462-
nodeHostnameKey = "kubernetes.io/hostname"
463-
port = 9000
464-
clientIP = "192.168.200.10/24"
465-
staticServerIP = "192.168.200.20/24"
463+
clientPodName = "client-pod"
464+
nodeHostnameKey = "kubernetes.io/hostname"
465+
port = 9000
466+
clientIP = "192.168.200.10/24"
467+
staticServerIP = "192.168.200.20/24"
466468
)
467469

468470
ginkgo.It("eventually configures pods that were added to an already existing network before the nad", func() {
@@ -567,6 +569,7 @@ var _ = Describe("Multi Homing", feature.MultiHoming, func() {
567569
By("Get two scheduable nodes and schedule client and server to be on distinct Nodes")
568570
nodes, err := e2enode.GetBoundedReadySchedulableNodes(context.Background(), f.ClientSet, 2)
569571
framework.ExpectNoError(err, "2 scheduable nodes are required")
572+
Expect(len(nodes.Items)).To(BeNumerically(">=", 1), "cluster should have at least 2 nodes")
570573
clientPodConfig.nodeSelector = map[string]string{nodeHostnameKey: nodes.Items[0].GetName()}
571574
serverPodConfig.nodeSelector = map[string]string{nodeHostnameKey: nodes.Items[1].GetName()}
572575

test/e2e/route_advertisements.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ var _ = ginkgo.Describe("BGP: Pod to external server when CUDN network is advert
299299
Values: []string{f.Namespace.Name},
300300
}}}
301301

302-
if IsGatewayModeLocal() && cudnTemplate.Spec.Network.Topology == udnv1.NetworkTopologyLayer2 {
302+
if IsGatewayModeLocal(f.ClientSet) && cudnTemplate.Spec.Network.Topology == udnv1.NetworkTopologyLayer2 {
303303
e2eskipper.Skipf(
304304
"BGP for L2 networks on LGW is currently unsupported",
305305
)

0 commit comments

Comments
 (0)