44 "context"
55 "fmt"
66 "net"
7+ "strings"
8+ "time"
79
810 configv1 "github.com/openshift/api/config/v1"
911 "github.com/openshift/origin/test/extended/kubevirt"
@@ -12,6 +14,7 @@ import (
1214
1315 kapiv1 "k8s.io/api/core/v1"
1416 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
17+ "k8s.io/apimachinery/pkg/util/wait"
1518 e2e "k8s.io/kubernetes/test/e2e/framework"
1619 frameworkpod "k8s.io/kubernetes/test/e2e/framework/pod"
1720 admissionapi "k8s.io/pod-security-admission/api"
@@ -114,6 +117,17 @@ func doEgressFwTest(f *e2e.Framework, mgmtFw *e2e.Framework, oc *exutil.CLI, man
114117 err := oc .AsAdmin ().Run ("create" ).Args ("-f" , egFwYaml ).Execute ()
115118 o .Expect (err ).NotTo (o .HaveOccurred (), "created egress-firewall object" )
116119
120+ g .By ("waiting for egressfirewall rules to be applied successfully" )
121+ egfwName , err := oc .AsAdmin ().Run ("get" ).Args ("egressfirewall" , "-o" , "jsonpath={.items[0].metadata.name}" ).Output ()
122+ o .Expect (err ).NotTo (o .HaveOccurred (), "failed to get egressfirewall object" )
123+
124+ err = wait .PollUntilContextTimeout (context .TODO (), 100 * time .Millisecond , 1 * time .Second , true , func (ctx context.Context ) (bool , error ) {
125+ out , err := oc .AsAdmin ().Run ("get" ).Args ("egressfirewall" , egfwName , "-o" , "jsonpath={.status.status}" ).Output ()
126+ o .Expect (err ).NotTo (o .HaveOccurred (), "failed to get egressfirewall object" )
127+ return strings .Contains (out , "EgressFirewall Rules applied" ), nil
128+ })
129+ o .Expect (err ).NotTo (o .HaveOccurred (), "failed to wait for egressfirewall rules to be applied successfully" )
130+
117131 o .Expect (sendEgressFwTraffic (f , mgmtFw , oc , egressFWTestPod , nodeSelectorSupport , checkWildcard )).To (o .Succeed ())
118132
119133 g .By ("deleting test pod" )
0 commit comments