@@ -11,6 +11,7 @@ import (
1111
1212 v1 "github.com/openshift/api/config/v1"
1313 exutil "github.com/openshift/origin/test/extended/util"
14+ "github.com/openshift/origin/test/extended/util/image"
1415 appv1 "k8s.io/api/apps/v1"
1516 corev1 "k8s.io/api/core/v1"
1617 kapierror "k8s.io/apimachinery/pkg/api/errors"
@@ -121,30 +122,33 @@ var _ = g.Describe("[sig-apps][apigroup:apps.openshift.io][OCPFeatureGate:Highly
121122 g .It ("should be created on arbiter nodes when arbiter node is selected" , func () {
122123 g .By ("Waiting for Arbiter node to become Ready" )
123124 var arbiterNodeName string
124- timeout := time . Now (). Add ( 2 * time .Minute ) // Maximum wait time of 2 minutes
125-
126- for time .Now (). Before ( timeout ) {
125+ ctx , cancel := context . WithTimeout ( context . Background (), 2 * time .Minute )
126+ defer cancel ()
127+ err := wait . PollUntilContextTimeout ( ctx , 5 * time .Second , 300 * time . Second , true , func ( ctx context. Context ) ( done bool , err error ) {
127128 arbiterNodes , err := oc .AdminKubeClient ().CoreV1 ().Nodes ().List (context .Background (), metav1.ListOptions {
128129 LabelSelector : labelNodeRoleArbiter ,
129130 })
130- o .Expect (err ).To (o .BeNil (), "Expected to retrieve Arbiter nodes without error" )
131-
132- if len (arbiterNodes .Items ) != 1 {
133- time .Sleep (5 * time .Second )
134- continue
131+ if kapierror .IsTimeout (err ) {
132+ return false , nil
133+ } else if err != nil {
134+ return false , err
135+ }
136+ if len (arbiterNodes .Items ) == 0 {
137+ return false , nil
135138 }
136- if isNodeReady (arbiterNodes .Items [0 ]) {
137- arbiterNodeName = arbiterNodes .Items [0 ].Name
139+ // We only need the name of one arbiter node
140+ for _ , node := range arbiterNodes .Items {
141+ arbiterNodeName = node .Name
138142 break
139143 }
144+ return true , err
145+ })
140146
141- time .Sleep (5 * time .Second )
142- }
143-
144- o .Expect (arbiterNodeName ).NotTo (o .BeEmpty (), "Timed out waiting for the Arbiter node to become Ready" )
147+ o .Expect (err ).To (o .BeNil (), "Error getting arbiter node list" )
148+ o .Expect (arbiterNodeName ).NotTo (o .BeEmpty (), "Arbiter node name should not be empty" )
145149
146150 g .By ("Creating an Arbiter deployment (on Arbiter node)" )
147- _ , err : = createArbiterDeployment (oc , arbiterNodeName )
151+ _ , err = createArbiterDeployment (oc , arbiterNodeName )
148152 o .Expect (err ).To (o .BeNil (), "Expected Arbiter busybox deployment creation to succeed" )
149153
150154 g .By ("Validating Arbiter deployment" )
@@ -294,18 +298,7 @@ var _ = g.Describe("[sig-etcd][apigroup:config.openshift.io][OCPFeatureGate:High
294298func createNormalDeployment (oc * exutil.CLI ) (* appv1.Deployment , error ) {
295299 var replicas int32 = 1
296300
297- container := corev1.Container {
298- Name : "busybox" ,
299- Image : "busybox" ,
300- Command : []string {"sleep" , "3600" },
301- Resources : corev1.ResourceRequirements {
302- Requests : corev1.ResourceList {
303- corev1 .ResourceCPU : resource .MustParse ("20m" ),
304- corev1 .ResourceMemory : resource .MustParse ("50Mi" ),
305- },
306- },
307- }
308-
301+ container := containerSpec ()
309302 deployment := & appv1.Deployment {
310303 TypeMeta : metav1.TypeMeta {
311304 APIVersion : "apps/v1" ,
@@ -339,17 +332,7 @@ func createNormalDeployment(oc *exutil.CLI) (*appv1.Deployment, error) {
339332func createArbiterDeployment (oc * exutil.CLI , arbiterNodeName string ) (* appv1.Deployment , error ) {
340333 var replicas int32 = 1
341334
342- container := corev1.Container {
343- Name : "busybox" ,
344- Image : "busybox" ,
345- Command : []string {"sleep" , "3600" },
346- Resources : corev1.ResourceRequirements {
347- Requests : corev1.ResourceList {
348- corev1 .ResourceCPU : resource .MustParse ("20m" ),
349- corev1 .ResourceMemory : resource .MustParse ("50Mi" ),
350- },
351- },
352- }
335+ container := containerSpec ()
353336
354337 deployment := & appv1.Deployment {
355338 TypeMeta : metav1.TypeMeta {
@@ -382,10 +365,10 @@ func createArbiterDeployment(oc *exutil.CLI, arbiterNodeName string) (*appv1.Dep
382365 Create (context .Background (), deployment , metav1.CreateOptions {})
383366}
384367
385- func createDaemonSetDeployment ( oc * exutil. CLI ) ( * appv1. DaemonSet , error ) {
386- container := corev1.Container {
368+ func containerSpec () corev1. Container {
369+ return corev1.Container {
387370 Name : "busybox" ,
388- Image : "busybox" ,
371+ Image : image . ShellImage () ,
389372 Command : []string {"sleep" , "3600" },
390373 Resources : corev1.ResourceRequirements {
391374 Requests : corev1.ResourceList {
@@ -394,6 +377,10 @@ func createDaemonSetDeployment(oc *exutil.CLI) (*appv1.DaemonSet, error) {
394377 },
395378 },
396379 }
380+ }
381+
382+ func createDaemonSetDeployment (oc * exutil.CLI ) (* appv1.DaemonSet , error ) {
383+ container := containerSpec ()
397384
398385 daemonSet := & appv1.DaemonSet {
399386 TypeMeta : metav1.TypeMeta {
@@ -424,15 +411,6 @@ func createDaemonSetDeployment(oc *exutil.CLI) (*appv1.DaemonSet, error) {
424411 Create (context .Background (), daemonSet , metav1.CreateOptions {})
425412}
426413
427- func isNodeReady (node corev1.Node ) bool {
428- for _ , condition := range node .Status .Conditions {
429- if condition .Type == corev1 .NodeReady && condition .Status == corev1 .ConditionTrue {
430- return true
431- }
432- }
433- return false
434- }
435-
436414func isPodRunning (pod corev1.Pod ) bool {
437415 return pod .Status .Phase == corev1 .PodRunning
438416}
0 commit comments