Skip to content

Commit 99db222

Browse files
committed
Drop SDN-specific Egress IP tests
1 parent 7eac1c3 commit 99db222

File tree

4 files changed

+67
-417
lines changed

4 files changed

+67
-417
lines changed

test/extended/networking/egressip.go

Lines changed: 47 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
4848
portAllocator := NewPortAllocator(egressIPTargetHostPortMin, egressIPTargetHostPortMax)
4949

5050
var (
51-
networkPlugin string
52-
5351
clientset kubernetes.Interface
5452
cloudNetworkClientset cloudnetwork.Interface
5553
tmpDirEgressIP string
@@ -77,10 +75,8 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
7775

7876
g.BeforeEach(func() {
7977
g.By("Verifying that this cluster uses a network plugin that is supported for this test")
80-
networkPlugin = networkPluginName()
81-
if networkPlugin != OVNKubernetesPluginName &&
82-
networkPlugin != OpenshiftSDNPluginName {
83-
skipper.Skipf("This cluster neither uses OVNKubernetes nor OpenShiftSDN")
78+
if networkPluginName() != OVNKubernetesPluginName {
79+
skipper.Skipf("This cluster does not use OVN Kubernetes")
8480
}
8581

8682
g.By("Creating a temp directory")
@@ -145,11 +141,10 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
145141
o.Expect(err).NotTo(o.HaveOccurred())
146142

147143
g.By("Determining the target protocol, host and port")
148-
targetProtocol, targetHost, targetPort, err = getTargetProtocolHostPort(oc, hasIPv4, hasIPv6, cloudType, networkPlugin)
144+
targetProtocol, targetHost, targetPort, err = getTargetProtocolHostPort(oc, hasIPv4, hasIPv6, cloudType)
149145
o.Expect(err).NotTo(o.HaveOccurred())
150-
framework.Logf("Testing against: CloudType: %s, NetworkPlugin: %s, Protocol %s, TargetHost: %s, TargetPort: %d",
146+
framework.Logf("Testing against: CloudType: %s, Protocol %s, TargetHost: %s, TargetPort: %d",
151147
cloudType,
152-
networkPlugin,
153148
targetProtocol,
154149
targetHost,
155150
targetPort)
@@ -168,34 +163,24 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
168163
ingressDomain, err = getIngressDomain(oc)
169164
o.Expect(err).NotTo(o.HaveOccurred())
170165

171-
if networkPluginName() == OVNKubernetesPluginName {
172-
g.By("Setting the EgressIP nodes as EgressIP assignable")
173-
for _, node := range egressIPNodesOrderedNames {
174-
_, err = runOcWithRetry(oc.AsAdmin(), "label", "node", node, "k8s.ovn.org/egress-assignable=")
175-
o.Expect(err).NotTo(o.HaveOccurred())
176-
}
166+
g.By("Setting the EgressIP nodes as EgressIP assignable")
167+
for _, node := range egressIPNodesOrderedNames {
168+
_, err = runOcWithRetry(oc.AsAdmin(), "label", "node", node, "k8s.ovn.org/egress-assignable=")
169+
o.Expect(err).NotTo(o.HaveOccurred())
177170
}
178171
})
179172

180173
// Do not check for errors in g.AfterEach as the other cleanup steps will fail, otherwise.
181174
g.AfterEach(func() {
182-
if networkPluginName() == OVNKubernetesPluginName {
183-
g.By("Deleting the EgressIP object if it exists for OVN Kubernetes")
184-
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
185-
if _, err := os.Stat(egressIPYamlPath); err == nil {
186-
_, _ = runOcWithRetry(oc.AsAdmin(), "delete", "-f", tmpDirEgressIP+"/"+egressIPYaml)
187-
}
175+
g.By("Deleting the EgressIP object if it exists")
176+
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
177+
if _, err := os.Stat(egressIPYamlPath); err == nil {
178+
_, _ = runOcWithRetry(oc.AsAdmin(), "delete", "-f", tmpDirEgressIP+"/"+egressIPYaml)
179+
}
188180

189-
g.By("Removing the EgressIP assignable annotation for OVN Kubernetes")
190-
for _, nodeName := range egressIPNodesOrderedNames {
191-
_, _ = runOcWithRetry(oc.AsAdmin(), "label", "node", nodeName, "k8s.ovn.org/egress-assignable-")
192-
}
193-
} else {
194-
g.By("Removing any hostsubnet EgressIPs for OpenShiftSDN")
195-
for _, nodeName := range egressIPNodesOrderedNames {
196-
_ = sdnHostsubnetFlushEgressIPs(oc, nodeName)
197-
_ = sdnHostsubnetFlushEgressCIDRs(oc, nodeName)
198-
}
181+
g.By("Removing the EgressIP assignable annotation")
182+
for _, nodeName := range egressIPNodesOrderedNames {
183+
_, _ = runOcWithRetry(oc.AsAdmin(), "label", "node", nodeName, "k8s.ovn.org/egress-assignable-")
199184
}
200185

201186
g.By("Removing the temp directory")
@@ -293,12 +278,12 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
293278
}
294279
}
295280

296-
g.By("Creating the EgressIP object for OVN Kubernetes")
281+
g.By("Creating the EgressIP object")
297282
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
298283
egressIPObjectName := egressIPNamespace
299-
ovnKubernetesCreateEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
284+
createEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
300285

301-
g.By("Applying the EgressIP object for OVN Kubernetes")
286+
g.By("Applying the EgressIP object")
302287
_, err = runOcWithRetry(oc.AsAdmin(), "create", "-f", tmpDirEgressIP+"/"+egressIPYaml)
303288
o.Expect(err).NotTo(o.HaveOccurred())
304289

@@ -351,7 +336,7 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
351336
o.Expect(err).NotTo(o.HaveOccurred())
352337

353338
g.By("Determining the interface that will be used for packet sniffing")
354-
packetSnifferInterface, err = findPacketSnifferInterface(oc, networkPlugin, egressIPNodesOrderedNames)
339+
packetSnifferInterface, err = findPacketSnifferInterface(oc, egressIPNodesOrderedNames)
355340
o.Expect(err).NotTo(o.HaveOccurred())
356341
framework.Logf("Using interface %s for packet captures", packetSnifferInterface)
357342

@@ -360,8 +345,6 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
360345
o.Expect(err).NotTo(o.HaveOccurred())
361346
})
362347

363-
// OVNKubernetes
364-
// OpenShiftSDN
365348
// Skipped on Azure due to https://bugzilla.redhat.com/show_bug.cgi?id=2073045
366349
g.It("pods should have the assigned EgressIPs and EgressIPs can be deleted and recreated [Skipped:azure][apigroup:route.openshift.io]", func() {
367350
g.By("Creating the EgressIP test source deployment with number of pods equals number of EgressIP nodes")
@@ -395,34 +378,19 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
395378
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
396379
egressIPObjectName := egressIPNamespace
397380
for i := 0; i < 2; i++ {
398-
if networkPlugin == OVNKubernetesPluginName {
399-
g.By("Creating the EgressIP object for OVN Kubernetes")
400-
ovnKubernetesCreateEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
401-
402-
g.By("Applying the EgressIP object for OVN Kubernetes")
403-
applyEgressIPObject(oc, cloudNetworkClientset, egressIPYamlPath, egressIPNamespace, egressIPSet, egressUpdateTimeout)
404-
} else {
405-
g.By("Adding EgressIPs to netnamespace and hostsubnet for OpenShiftSDN")
406-
openshiftSDNAssignEgressIPsManually(oc, cloudNetworkClientset, egressIPNamespace, egressIPSet, egressUpdateTimeout)
407-
}
381+
g.By("Creating the EgressIP object")
382+
createEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
383+
384+
g.By("Applying the EgressIP object")
385+
applyEgressIPObject(oc, cloudNetworkClientset, egressIPYamlPath, egressIPNamespace, egressIPSet, egressUpdateTimeout)
408386

409387
g.By(fmt.Sprintf("Sending requests from prober and making sure that %d requests with search string and EgressIPs %v were seen", numberOfRequestsToSend, egressIPSet))
410388
spawnProberSendEgressIPTrafficCheckLogs(oc, externalNamespace, probePodName, routeName, targetProtocol, targetHost, targetPort, numberOfRequestsToSend, numberOfRequestsToSend, packetSnifferDaemonSet, egressIPSet)
411389

412-
if networkPlugin == OVNKubernetesPluginName {
413-
g.By("Deleting the EgressIP object for OVN Kubernetes")
414-
// Use cascading foreground deletion to make sure that the EgressIP object and its dependencies are gone.
415-
_, err = runOcWithRetry(oc.AsAdmin(), "delete", "egressip", egressIPObjectName, "--cascade=foreground")
416-
o.Expect(err).NotTo(o.HaveOccurred())
417-
} else {
418-
g.By("Removing EgressIPs from netnamespace and hostsubnet for OpenShiftSDN")
419-
for eip, nodeName := range egressIPSet {
420-
err = sdnNamespaceRemoveEgressIP(oc, egressIPNamespace, eip)
421-
o.Expect(err).NotTo(o.HaveOccurred())
422-
err = sdnHostsubnetRemoveEgressIP(oc, nodeName, eip)
423-
o.Expect(err).NotTo(o.HaveOccurred())
424-
}
425-
}
390+
g.By("Deleting the EgressIP object")
391+
// Use cascading foreground deletion to make sure that the EgressIP object and its dependencies are gone.
392+
_, err = runOcWithRetry(oc.AsAdmin(), "delete", "egressip", egressIPObjectName, "--cascade=foreground")
393+
o.Expect(err).NotTo(o.HaveOccurred())
426394

427395
// Azure often fails on this step here - BZ https://bugzilla.redhat.com/show_bug.cgi?id=2073045
428396
g.By(fmt.Sprintf("Waiting for maximum %d seconds for the CloudPrivateIPConfig objects to vanish", egressUpdateTimeout))
@@ -432,14 +400,10 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
432400
spawnProberSendEgressIPTrafficCheckLogs(oc, externalNamespace, probePodName, routeName, targetProtocol, targetHost, targetPort, numberOfRequestsToSend, 0, packetSnifferDaemonSet, egressIPSet)
433401
}
434402

435-
if networkPlugin == OVNKubernetesPluginName {
436-
g.By("Removing the egressIPYaml file to signal that no further cleanup is needed for OVN Kubernetes")
437-
os.Remove(egressIPYamlPath)
438-
}
403+
g.By("Removing the egressIPYaml file to signal that no further cleanup is needed")
404+
os.Remove(egressIPYamlPath)
439405
})
440406

441-
// OVNKubernetes
442-
// OpenShiftSDN
443407
g.It("pods should keep the assigned EgressIPs when being rescheduled to another node", func() {
444408
g.By("Selecting a single EgressIP node, and a single start node for the pod")
445409
// requires a total of 3 worker nodes
@@ -475,18 +439,13 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
475439
}
476440

477441
// This step is different depending on the network plugin.
478-
if networkPlugin == OVNKubernetesPluginName {
479-
g.By("Creating the EgressIP object for OVN Kubernetes")
480-
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
481-
egressIPObjectName := egressIPNamespace
482-
ovnKubernetesCreateEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
442+
g.By("Creating the EgressIP object")
443+
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
444+
egressIPObjectName := egressIPNamespace
445+
createEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
483446

484-
g.By("Applying the EgressIP object for OVN Kubernetes")
485-
applyEgressIPObject(oc, cloudNetworkClientset, egressIPYamlPath, egressIPNamespace, egressIPSet, egressUpdateTimeout)
486-
} else {
487-
g.By("Patching the netnamespace and hostsubnet for OpenShiftSDN")
488-
openshiftSDNAssignEgressIPsManually(oc, cloudNetworkClientset, egressIPNamespace, egressIPSet, egressUpdateTimeout)
489-
}
447+
g.By("Applying the EgressIP object")
448+
applyEgressIPObject(oc, cloudNetworkClientset, egressIPYamlPath, egressIPNamespace, egressIPSet, egressUpdateTimeout)
490449

491450
numberOfRequestsToSend := 10
492451
if targetHost == "self" {
@@ -503,9 +462,7 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
503462
spawnProberSendEgressIPTrafficCheckLogs(oc, externalNamespace, probePodName, routeName, targetProtocol, targetHost, targetPort, numberOfRequestsToSend, numberOfRequestsToSend, packetSnifferDaemonSet, egressIPSet)
504463
})
505464

506-
// OVNKubernetes
507-
// Skipped on OpenShiftSDN as the plugin does not support pod selectors.
508-
g.It("only pods matched by the pod selector should have the EgressIPs [Skipped:Network/OpenShiftSDN]", func() {
465+
g.It("only pods matched by the pod selector should have the EgressIPs", func() {
509466
g.By("Creating the EgressIP test source deployment with number of pods equals number of EgressIP nodes")
510467
deployment0Name, route0Name, err := createAgnhostDeploymentAndIngressRoute(oc, egressIPNamespace, "0", ingressDomain, len(egressIPNodesOrderedNames), egressIPNodesOrderedNames)
511468
o.Expect(err).NotTo(o.HaveOccurred())
@@ -533,12 +490,12 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
533490
}
534491
}
535492

536-
g.By("Creating the EgressIP object for OVN Kubernetes")
493+
g.By("Creating the EgressIP object")
537494
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
538495
egressIPObjectName := egressIPNamespace
539-
ovnKubernetesCreateEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, fmt.Sprintf("app: %s", deployment0Name), egressIPSet)
496+
createEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, fmt.Sprintf("app: %s", deployment0Name), egressIPSet)
540497

541-
g.By("Applying the EgressIP object for OVN Kubernetes")
498+
g.By("Applying the EgressIP object")
542499
applyEgressIPObject(oc, cloudNetworkClientset, egressIPYamlPath, egressIPNamespace, egressIPSet, egressUpdateTimeout)
543500

544501
numberOfRequestsToSend := 10
@@ -555,9 +512,7 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
555512
spawnProberSendEgressIPTrafficCheckLogs(oc, externalNamespace, probePodName, route1Name, targetProtocol, targetHost, targetPort, numberOfRequestsToSend, 0, packetSnifferDaemonSet, egressIPSet)
556513
})
557514

558-
// OVNKubernetes
559-
// Skipped on OpenShiftSDN as this plugin has no EgressIPs object
560-
g.It("pods should have the assigned EgressIPs and EgressIPs can be updated [Skipped:Network/OpenShiftSDN]", func() {
515+
g.It("pods should have the assigned EgressIPs and EgressIPs can be updated", func() {
561516
g.By("Creating the EgressIP test source deployment with number of pods equals number of EgressIP nodes")
562517
_, routeName, err := createAgnhostDeploymentAndIngressRoute(oc, egressIPNamespace, "", ingressDomain, len(egressIPNodesOrderedNames), egressIPNodesOrderedNames)
563518
o.Expect(err).NotTo(o.HaveOccurred())
@@ -597,74 +552,18 @@ var _ = g.Describe("[sig-network][Feature:EgressIP][apigroup:operator.openshift.
597552
for eip, nodeName := range egressIPSetTemp {
598553
egressIPSet := map[string]string{eip: nodeName}
599554

600-
g.By("Creating the EgressIP object for OVN Kubernetes")
555+
g.By("Creating the EgressIP object")
601556
egressIPYamlPath := tmpDirEgressIP + "/" + egressIPYaml
602557
egressIPObjectName := egressIPNamespace
603-
ovnKubernetesCreateEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
558+
createEgressIPObject(oc, egressIPYamlPath, egressIPObjectName, egressIPNamespace, "", egressIPSet)
604559

605-
g.By("Applying the EgressIP object for OVN Kubernetes")
560+
g.By("Applying the EgressIP object")
606561
applyEgressIPObject(oc, cloudNetworkClientset, egressIPYamlPath, egressIPNamespace, egressIPSet, egressUpdateTimeout)
607562

608563
g.By(fmt.Sprintf("Sending requests from prober and making sure that %d requests with search string and EgressIPs %v were seen", numberOfRequestsToSend, egressIPSet))
609564
spawnProberSendEgressIPTrafficCheckLogs(oc, externalNamespace, probePodName, routeName, targetProtocol, targetHost, targetPort, numberOfRequestsToSend, numberOfRequestsToSend, packetSnifferDaemonSet, egressIPSet)
610565
}
611566
})
612-
613-
// OpenShiftSDN
614-
// Skipped on OVNKubernetes
615-
g.It("EgressIPs can be assigned automatically [Skipped:Network/OVNKubernetes]", func() {
616-
g.By("Adding EgressCIDR configuration to hostSubnets for OpenShiftSDN")
617-
for _, eipNodeName := range egressIPNodesOrderedNames {
618-
for _, node := range workerNodesOrdered {
619-
if node.Name == eipNodeName {
620-
nodeEgressIPConfigs, err := getNodeEgressIPConfiguration(&node)
621-
if err != nil {
622-
o.Expect(err).NotTo(o.HaveOccurred())
623-
}
624-
o.Expect(len(nodeEgressIPConfigs)).Should(o.BeNumerically("==", 1))
625-
// TODO - not ready for dualstack (?)
626-
egressCIDR := nodeEgressIPConfigs[0].IFAddr.IPv4
627-
if egressCIDR == "" {
628-
egressCIDR = nodeEgressIPConfigs[0].IFAddr.IPv6
629-
}
630-
err = sdnHostsubnetSetEgressCIDR(oc, node.Name, egressCIDR)
631-
o.Expect(err).NotTo(o.HaveOccurred())
632-
}
633-
}
634-
}
635-
g.By("Creating the EgressIP test source deployment with number of pods equals number of EgressIP nodes")
636-
_, routeName, err := createAgnhostDeploymentAndIngressRoute(oc, egressIPNamespace, "", ingressDomain, len(egressIPNodesOrderedNames), egressIPNodesOrderedNames)
637-
o.Expect(err).NotTo(o.HaveOccurred())
638-
639-
// For this test, get a single EgressIP per node.
640-
g.By("Getting a map of source nodes and potential Egress IPs for these nodes")
641-
egressIPsPerNode := 1
642-
nodeEgressIPMap, err := findNodeEgressIPs(oc, clientset, cloudNetworkClientset, egressIPNodesOrderedNames, cloudType, egressIPsPerNode)
643-
framework.Logf("%v", nodeEgressIPMap)
644-
o.Expect(err).NotTo(o.HaveOccurred())
645-
646-
g.By("Choosing the EgressIPs to be assigned, one per node")
647-
egressIPSet := make(map[string]string)
648-
for nodeName, eip := range nodeEgressIPMap {
649-
_, ok := egressIPSet[eip[0]]
650-
if !ok {
651-
egressIPSet[eip[0]] = nodeName
652-
}
653-
}
654-
655-
g.By("Patching the netnamespace for OpenShiftSDN")
656-
for eip := range egressIPSet {
657-
err := sdnNamespaceAddEgressIP(oc, egressIPNamespace, eip)
658-
o.Expect(err).NotTo(o.HaveOccurred())
659-
}
660-
661-
numberOfRequestsToSend := 10
662-
if targetHost == "self" {
663-
targetHost = routeName
664-
}
665-
g.By(fmt.Sprintf("Sending requests from prober and making sure that %d requests with search string and EgressIPs %v were seen", numberOfRequestsToSend, egressIPSet))
666-
spawnProberSendEgressIPTrafficCheckLogs(oc, externalNamespace, probePodName, routeName, targetProtocol, targetHost, targetPort, numberOfRequestsToSend, numberOfRequestsToSend, packetSnifferDaemonSet, egressIPSet)
667-
})
668567
}) // end testing to external targets
669568
})
670569

@@ -700,9 +599,9 @@ func spawnProberSendEgressIPTrafficCheckLogs(
700599
}, 120*time.Second, 30*time.Second).Should(o.BeTrue())
701600
}
702601

703-
// ovnKubernetesCreateEgressIPObject creates the file containing the EgressIP YAML definition which can
602+
// createEgressIPObject creates the file containing the EgressIP YAML definition which can
704603
// then be applied.
705-
func ovnKubernetesCreateEgressIPObject(oc *exutil.CLI, egressIPYamlPath, egressIPObjectName, egressIPNamespace, podSelector string, egressIPSet map[string]string) string {
604+
func createEgressIPObject(oc *exutil.CLI, egressIPYamlPath, egressIPObjectName, egressIPNamespace, podSelector string, egressIPSet map[string]string) string {
706605
framework.Logf("Marshalling the desired EgressIPs into a string")
707606
var egressIPs []string
708607
for eip := range egressIPSet {
@@ -803,36 +702,3 @@ func waitForCloudPrivateIPConfigsDeletion(oc *exutil.CLI, cloudNetworkClientset
803702
return true
804703
}, time.Duration(timeout)*time.Second, 5*time.Second).Should(o.BeTrue())
805704
}
806-
807-
// openshiftSDNAssignEgressIPsManually adds EgressIPs to hostsubnet and netnamespace.
808-
func openshiftSDNAssignEgressIPsManually(oc *exutil.CLI, cloudNetworkClientset cloudnetwork.Interface, egressIPNamespace string, egressIPSet map[string]string, timeout int) {
809-
var err error
810-
for eip, nodeName := range egressIPSet {
811-
framework.Logf("Adding EgressIP %s to hostnamespace %s", eip, egressIPNamespace)
812-
err = sdnNamespaceAddEgressIP(oc, egressIPNamespace, eip)
813-
o.Expect(err).NotTo(o.HaveOccurred())
814-
framework.Logf("Adding EgressIP %s to hostsubnet %s", eip, nodeName)
815-
err = sdnHostsubnetAddEgressIP(oc, nodeName, eip)
816-
o.Expect(err).NotTo(o.HaveOccurred())
817-
}
818-
819-
framework.Logf("Waiting for CloudPrivateIPConfig creation for a maximum of %d seconds", timeout)
820-
var exists bool
821-
var isAssigned bool
822-
o.Eventually(func() bool {
823-
for eip := range egressIPSet {
824-
exists, isAssigned, err = cloudPrivateIpConfigExists(oc, cloudNetworkClientset, eip)
825-
o.Expect(err).NotTo(o.HaveOccurred())
826-
if !exists {
827-
framework.Logf("CloudPrivateIPConfig for %s not found.", eip)
828-
return false
829-
}
830-
if !isAssigned {
831-
framework.Logf("CloudPrivateIPConfig for %s not assigned.", eip)
832-
return false
833-
}
834-
}
835-
framework.Logf("CloudPrivateIPConfigs for %v found.", egressIPSet)
836-
return true
837-
}, time.Duration(timeout)*time.Second, 5*time.Second).Should(o.BeTrue())
838-
}

0 commit comments

Comments
 (0)