Skip to content

Commit 7dc9c0f

Browse files
committed
🐛 Deflake should update CRDs if already present in the cluster
1 parent df2c43d commit 7dc9c0f

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

pkg/envtest/crd.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"k8s.io/apimachinery/pkg/util/wait"
3535
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
3636
"k8s.io/client-go/rest"
37+
"k8s.io/client-go/util/retry"
3738
"sigs.k8s.io/controller-runtime/pkg/client"
3839
"sigs.k8s.io/yaml"
3940
)
@@ -266,8 +267,13 @@ func CreateCRDs(config *rest.Config, crds []client.Object) error {
266267
return err
267268
default:
268269
log.V(1).Info("CRD already exists, updating", "crd", crd.GetName())
269-
crd.SetResourceVersion(existingCrd.GetResourceVersion())
270-
if err := cs.Update(context.TODO(), crd); err != nil {
270+
if err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
271+
if err := cs.Get(context.TODO(), client.ObjectKey{Name: crd.GetName()}, existingCrd); err != nil {
272+
return err
273+
}
274+
crd.SetResourceVersion(existingCrd.GetResourceVersion())
275+
return cs.Update(context.TODO(), crd)
276+
}); err != nil {
271277
return err
272278
}
273279
}

pkg/envtest/envtest_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ var _ = Describe("Test", func() {
7575
Eventually(func() bool {
7676
err := c.Get(context.TODO(), crdObjectKey, &placeholder)
7777
return apierrors.IsNotFound(err)
78-
}, 1*time.Second).Should(BeTrue())
78+
}, 5*time.Second).Should(BeTrue())
7979
}
8080
close(done)
8181
}, teardownTimeoutSeconds)

0 commit comments

Comments
 (0)