@@ -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