@@ -20,7 +20,7 @@ import (
20
20
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
21
21
extScheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme"
22
22
"k8s.io/apimachinery/pkg/api/equality"
23
- "k8s.io/apimachinery/pkg/api/errors"
23
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
24
24
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25
25
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
26
26
"k8s.io/apimachinery/pkg/labels"
@@ -31,6 +31,7 @@ import (
31
31
"k8s.io/apimachinery/pkg/watch"
32
32
"k8s.io/apiserver/pkg/storage/names"
33
33
k8sscheme "k8s.io/client-go/kubernetes/scheme"
34
+ "k8s.io/client-go/util/retry"
34
35
"k8s.io/component-base/featuregate"
35
36
36
37
"github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
@@ -222,7 +223,7 @@ func awaitAnnotations(t *testing.T, query func() (metav1.ObjectMeta, error), exp
222
223
err = wait .Poll (pollInterval , pollDuration , func () (bool , error ) {
223
224
t .Logf ("Waiting for annotations to match %v" , expected )
224
225
obj , err := query ()
225
- if err != nil && ! errors .IsNotFound (err ) {
226
+ if err != nil && ! apierrors .IsNotFound (err ) {
226
227
return false , err
227
228
}
228
229
t .Logf ("current annotations: %v" , obj .GetAnnotations ())
@@ -258,7 +259,7 @@ func waitForDelete(checkResource checkResourceFunc) error {
258
259
var err error
259
260
err = wait .Poll (pollInterval , pollDuration , func () (bool , error ) {
260
261
err := checkResource ()
261
- if errors .IsNotFound (err ) {
262
+ if apierrors .IsNotFound (err ) {
262
263
return true , nil
263
264
}
264
265
if err != nil {
@@ -447,7 +448,7 @@ func createInternalCatalogSource(t *testing.T, c operatorclient.ClientInterface,
447
448
448
449
t .Logf ("Creating catalog source %s in namespace %s..." , name , namespace )
449
450
catalogSource , err := crc .OperatorsV1alpha1 ().CatalogSources (namespace ).Create (catalogSource )
450
- if err != nil && ! errors .IsAlreadyExists (err ) {
451
+ if err != nil && ! apierrors .IsAlreadyExists (err ) {
451
452
require .NoError (t , err )
452
453
}
453
454
t .Logf ("Catalog source %s created" , name )
@@ -499,7 +500,7 @@ func createConfigMapForCatalogData(t *testing.T, c operatorclient.ClientInterfac
499
500
}
500
501
501
502
createdConfigMap , err := c .KubernetesInterface ().CoreV1 ().ConfigMaps (namespace ).Create (catalogConfigMap )
502
- if err != nil && ! errors .IsAlreadyExists (err ) {
503
+ if err != nil && ! apierrors .IsAlreadyExists (err ) {
503
504
require .NoError (t , err )
504
505
}
505
506
return createdConfigMap , buildConfigMapCleanupFunc (t , c , namespace , createdConfigMap )
@@ -710,8 +711,10 @@ func toggleFeatureGates(t *testing.T, c operatorclient.ClientInterface, deployme
710
711
return err
711
712
}
712
713
713
- _ , err = c .KubernetesInterface ().AppsV1 ().Deployments (deployment .GetNamespace ()).Update (deployment )
714
- if err != nil {
714
+ if err := retry .RetryOnConflict (retry .DefaultBackoff , func () error {
715
+ _ , err := c .KubernetesInterface ().AppsV1 ().Deployments (deployment .GetNamespace ()).Update (deployment )
716
+ return err
717
+ }); err != nil {
715
718
return err
716
719
}
717
720
@@ -723,8 +726,34 @@ func toggleFeatureGates(t *testing.T, c operatorclient.ClientInterface, deployme
723
726
return err
724
727
}
725
728
726
- func toggleCVO () (func () error , error ) {
727
- return func () error {
728
- return nil
729
- }, nil
729
+ const (
730
+ cvoNamespace = "openshift-cluster-version"
731
+ cvoDeploymentName = "cluster-version-operator"
732
+ )
733
+
734
+ func toggleCVO (t * testing.T , c operatorclient.ClientInterface ) error {
735
+ scale , err := c .KubernetesInterface ().AppsV1 ().Deployments (cvoNamespace ).GetScale (cvoDeploymentName , metav1.GetOptions {})
736
+ if err != nil {
737
+ if apierrors .IsNotFound (err ) {
738
+ // CVO is not enabled
739
+ err = nil
740
+ }
741
+
742
+ return err
743
+ }
744
+
745
+ if scale .Spec .Replicas > 0 {
746
+ scale .Spec .Replicas = 0
747
+ } else {
748
+ scale .Spec .Replicas = 1
749
+ }
750
+
751
+ if err := retry .RetryOnConflict (retry .DefaultBackoff , func () error {
752
+ _ , err := c .KubernetesInterface ().AppsV1 ().Deployments (cvoNamespace ).UpdateScale (cvoDeploymentName , scale )
753
+ return err
754
+ }); err != nil {
755
+ return err
756
+ }
757
+
758
+ return nil
730
759
}
0 commit comments