diff --git a/pkg/reconciler/managed/api.go b/pkg/reconciler/managed/api.go index 7bf6a1514..b902d2b06 100644 --- a/pkg/reconciler/managed/api.go +++ b/pkg/reconciler/managed/api.go @@ -55,6 +55,15 @@ const ( errUpdateCriticalAnnotations = "cannot update critical annotations" ) +var ( + criticalAnnotations = []string{ + meta.AnnotationKeyExternalCreateFailed, + meta.AnnotationKeyExternalCreatePending, + meta.AnnotationKeyExternalCreateSucceeded, + meta.AnnotationKeyExternalName, + } +) + // NameAsExternalName writes the name of the managed resource to // the external name annotation field in order to be used as name of // the external resource in provider. @@ -277,15 +286,36 @@ func NewRetryingCriticalAnnotationUpdater(c client.Client) *RetryingCriticalAnno // UpdateCriticalAnnotations updates (i.e. persists) the annotations of the // supplied Object. It retries in the face of any API server error several times // in order to ensure annotations that contain critical state are persisted. -// Pending changes to the supplied Object's spec, status, or other metadata -// might get reset to their current state according to the API server, e.g. in -// case of a conflict error. +// Only annotations will be updated as part of this operation, other fields of the +// supplied Object will not be modified. func (u *RetryingCriticalAnnotationUpdater) UpdateCriticalAnnotations(ctx context.Context, o client.Object) error { - a := o.GetAnnotations() + a := make(map[string]string) + for _, k := range criticalAnnotations { + if v, ok := o.GetAnnotations()[k]; ok { + a[k] = v + } + } + + if len(a) == 0 { + // No critical annotations to update. + return nil + } + err := retry.OnError(retry.DefaultRetry, func(err error) bool { return !errors.Is(err, context.Canceled) }, func() error { - err := u.client.Update(ctx, o) + patchMap := map[string]interface{}{ + "metadata": map[string]any{ + "annotations": a, + }, + } + + patchData, err := json.Marshal(patchMap) + if err != nil { + return err + } + + err = u.client.Patch(ctx, o, client.RawPatch(types.MergePatchType, patchData), client.FieldOwner(fieldOwnerAPISimpleRefResolver), client.ForceOwnership) if kerrors.IsConflict(err) { if getErr := u.client.Get(ctx, client.ObjectKeyFromObject(o), o); getErr != nil { return getErr diff --git a/pkg/reconciler/managed/api_test.go b/pkg/reconciler/managed/api_test.go index 344047e1d..f3ae669c7 100644 --- a/pkg/reconciler/managed/api_test.go +++ b/pkg/reconciler/managed/api_test.go @@ -543,12 +543,12 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) { o client.Object } - setLabels := func(obj client.Object) error { - obj.SetLabels(map[string]string{"getcalled": "true"}) + setAnnotations := func(obj client.Object) error { + obj.SetAnnotations(map[string]string{"getcalled": "true"}) return nil } objectReturnedByGet := &fake.LegacyManaged{} - setLabels(objectReturnedByGet) + setAnnotations(objectReturnedByGet) cases := map[string]struct { reason string @@ -559,8 +559,8 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) { "UpdateConflictGetError": { reason: "We should return any error we encounter getting the supplied object", c: &test.MockClient{ - MockGet: test.NewMockGetFn(errBoom, setLabels), - MockUpdate: test.NewMockUpdateFn(kerrors.NewConflict(schema.GroupResource{ + MockGet: test.NewMockGetFn(errBoom, setAnnotations), + MockPatch: test.NewMockPatchFn(kerrors.NewConflict(schema.GroupResource{ Group: "foo.com", Resource: "bars", }, "abc", errBoom)), @@ -576,8 +576,8 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) { "UpdateError": { reason: "We should return any error we encounter updating the supplied object", c: &test.MockClient{ - MockGet: test.NewMockGetFn(nil, setLabels), - MockUpdate: test.NewMockUpdateFn(errBoom), + MockGet: test.NewMockGetFn(nil, setAnnotations), + MockPatch: test.NewMockPatchFn(errBoom), }, args: args{ o: &fake.LegacyManaged{}, @@ -590,8 +590,8 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) { "SuccessfulGetAfterAConflict": { reason: "A successful get after a conflict should not hide the conflict error and prevent retries", c: &test.MockClient{ - MockGet: test.NewMockGetFn(nil, setLabels), - MockUpdate: test.NewMockUpdateFn(kerrors.NewConflict(schema.GroupResource{ + MockGet: test.NewMockGetFn(nil, setAnnotations), + MockPatch: test.NewMockPatchFn(kerrors.NewConflict(schema.GroupResource{ Group: "foo.com", Resource: "bars", }, "abc", errBoom)), @@ -610,8 +610,8 @@ func TestRetryingCriticalAnnotationUpdater(t *testing.T) { "Success": { reason: "We should return without error if we successfully update our annotations", c: &test.MockClient{ - MockGet: test.NewMockGetFn(nil, setLabels), - MockUpdate: test.NewMockUpdateFn(errBoom), + MockGet: test.NewMockGetFn(nil, setAnnotations), + MockPatch: test.NewMockPatchFn(errBoom), }, args: args{ o: &fake.LegacyManaged{}, diff --git a/pkg/reconciler/managed/reconciler.go b/pkg/reconciler/managed/reconciler.go index 4a5d3f365..24bb5f246 100644 --- a/pkg/reconciler/managed/reconciler.go +++ b/pkg/reconciler/managed/reconciler.go @@ -1408,6 +1408,21 @@ func (r *Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (resu return reconcile.Result{Requeue: true}, errors.Wrap(r.client.Status().Update(ctx, managed), errUpdateManagedStatus) } + if observation.ResourceExists { + // When a resource exists or is just created, it might have received + // a non-deterministic external name after its creation, which we need to persist. + // We do this by updating the critical annotations. + // This is needed because some resources might not receive an external-name directly + // after the creation, but later as part of an asynchronous process. + // When Crossplane supports asynchronous creation of resources natively, this logic + // might not be needed anymore and can be revisited. + if err := r.managed.UpdateCriticalAnnotations(ctx, managed); err != nil { + log.Debug(errUpdateManagedAnnotations, "error", err) + record.Event(managed, event.Warning(reasonCannotUpdateManaged, errors.Wrap(err, errUpdateManagedAnnotations))) + return reconcile.Result{Requeue: true}, errors.Wrap(r.client.Status().Update(ctx, managed), errUpdateManagedAnnotations) + } + } + if observation.ResourceLateInitialized && policy.ShouldLateInitialize() { // Note that this update may reset any pending updates to the status of // the managed resource from when it was observed above. This is because diff --git a/pkg/reconciler/managed/reconciler_legacy_test.go b/pkg/reconciler/managed/reconciler_legacy_test.go index b6f272807..6a19bae7b 100644 --- a/pkg/reconciler/managed/reconciler_legacy_test.go +++ b/pkg/reconciler/managed/reconciler_legacy_test.go @@ -330,7 +330,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -712,6 +713,7 @@ func TestReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(errBoom), + MockPatch: test.NewMockPatchFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -757,6 +759,7 @@ func TestReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -805,6 +808,7 @@ func TestReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -851,6 +855,7 @@ func TestReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -909,6 +914,7 @@ func TestReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -946,6 +952,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -979,6 +986,7 @@ func TestReconciler(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) @@ -1017,7 +1025,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -1055,7 +1064,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -1097,7 +1107,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -1134,7 +1145,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -1175,7 +1187,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetConditions(xpv1.ReconcileError(errors.Wrap(errBoom, errReconcileUpdate)).WithObservedGeneration(42)) @@ -1216,7 +1229,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetConditions(xpv1.ReconcileError(errBoom).WithObservedGeneration(42)) @@ -1269,7 +1283,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -1310,7 +1325,8 @@ func TestReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: legacyManagedMockGetFn(nil, 42), + MockGet: legacyManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -1358,6 +1374,7 @@ func TestReconciler(t *testing.T) { mg.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "true"}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "true"}) @@ -1385,6 +1402,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{}) @@ -1418,6 +1436,7 @@ func TestReconciler(t *testing.T) { mg.SetConditions(xpv1.ReconcilePaused()) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "false"}) @@ -1461,6 +1480,7 @@ func TestReconciler(t *testing.T) { mg.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "true"}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return errBoom }), @@ -1481,6 +1501,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) @@ -1508,6 +1529,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) @@ -1538,6 +1560,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1569,6 +1592,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) @@ -1611,6 +1635,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) @@ -1658,6 +1683,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) @@ -1707,6 +1733,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1746,6 +1773,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1785,6 +1813,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(errBoom), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve, xpv1.ManagementActionLateInitialize, xpv1.ManagementActionCreate, xpv1.ManagementActionDelete}) @@ -1832,6 +1861,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1879,6 +1909,7 @@ func TestReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1927,6 +1958,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(errBoom), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newLegacyManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve, xpv1.ManagementActionUpdate, xpv1.ManagementActionCreate, xpv1.ManagementActionDelete}) @@ -1972,6 +2004,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -2001,6 +2034,7 @@ func TestReconciler(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -2499,6 +2533,7 @@ func TestLegacyReconcilerChangeLogs(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, Scheme: fake.SchemeWith(&fake.LegacyManaged{}), @@ -2536,6 +2571,7 @@ func TestLegacyReconcilerChangeLogs(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, Scheme: fake.SchemeWith(&fake.LegacyManaged{}), @@ -2574,6 +2610,7 @@ func TestLegacyReconcilerChangeLogs(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, Scheme: fake.SchemeWith(&fake.LegacyManaged{}), @@ -2611,6 +2648,7 @@ func TestLegacyReconcilerChangeLogs(t *testing.T) { Client: &test.MockClient{ MockGet: legacyManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, Scheme: fake.SchemeWith(&fake.LegacyManaged{}), @@ -2654,6 +2692,7 @@ func TestLegacyReconcilerChangeLogs(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, Scheme: fake.SchemeWith(&fake.LegacyManaged{}), @@ -2696,6 +2735,7 @@ func TestLegacyReconcilerChangeLogs(t *testing.T) { return nil }), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, Scheme: fake.SchemeWith(&fake.LegacyManaged{}), diff --git a/pkg/reconciler/managed/reconciler_modern_test.go b/pkg/reconciler/managed/reconciler_modern_test.go index 5b668b0a9..b401ab9ed 100644 --- a/pkg/reconciler/managed/reconciler_modern_test.go +++ b/pkg/reconciler/managed/reconciler_modern_test.go @@ -97,6 +97,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve, xpv1.ManagementActionCreate, xpv1.ManagementActionUpdate, xpv1.ManagementActionLateInitialize}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetDeletionTimestamp(&now) @@ -135,6 +136,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve, xpv1.ManagementActionCreate, xpv1.ManagementActionUpdate, xpv1.ManagementActionLateInitialize}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetDeletionTimestamp(&now) @@ -169,6 +171,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), }, Scheme: fake.SchemeWith(&fake.ModernManaged{}), }, @@ -185,7 +188,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errBoom).WithObservedGeneration(42)) @@ -218,6 +222,7 @@ func TestModernReconciler(t *testing.T) { mg.SetFinalizers([]string{FinalizerName, "finalizer2"}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), }, Scheme: fake.SchemeWith(&fake.ModernManaged{}), @@ -251,6 +256,7 @@ func TestModernReconciler(t *testing.T) { meta.SetExternalCreatePending(obj, now.Time) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) meta.SetExternalCreatePending(want, now.Time) @@ -278,7 +284,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errBoom).WithObservedGeneration(42)) @@ -306,7 +313,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, got client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errors.Wrap(errBoom, errReconcileConnect)).WithObservedGeneration(42)) @@ -334,7 +342,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -372,7 +381,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errors.Wrap(errBoom, errReconcileObserve)).WithObservedGeneration(42)) @@ -656,7 +666,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errBoom).WithObservedGeneration(42)) @@ -688,7 +699,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errBoom).WithObservedGeneration(42)) @@ -717,6 +729,7 @@ func TestModernReconciler(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -762,6 +775,7 @@ func TestModernReconciler(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -811,6 +825,7 @@ func TestModernReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -857,6 +872,7 @@ func TestModernReconciler(t *testing.T) { Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), MockUpdate: test.NewMockUpdateFn(nil), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) meta.SetExternalCreatePending(want, time.Now()) @@ -914,6 +930,7 @@ func TestModernReconciler(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -951,6 +968,7 @@ func TestModernReconciler(t *testing.T) { meta.SetExternalCreatePending(obj, now.Time) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -985,6 +1003,7 @@ func TestModernReconciler(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -1023,7 +1042,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -1061,7 +1081,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -1103,7 +1124,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -1140,7 +1162,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), @@ -1181,7 +1204,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errors.Wrap(errBoom, errReconcileUpdate)).WithObservedGeneration(42)) @@ -1222,7 +1246,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileError(errBoom).WithObservedGeneration(42)) @@ -1275,7 +1300,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -1316,7 +1342,8 @@ func TestModernReconciler(t *testing.T) { args: args{ m: &fake.Manager{ Client: &test.MockClient{ - MockGet: modernManagedMockGetFn(nil, 42), + MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetConditions(xpv1.ReconcileSuccess().WithObservedGeneration(42)) @@ -1364,6 +1391,7 @@ func TestModernReconciler(t *testing.T) { mg.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "true"}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "true"}) @@ -1391,6 +1419,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{}) @@ -1424,6 +1453,7 @@ func TestModernReconciler(t *testing.T) { mg.SetConditions(xpv1.ReconcilePaused()) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "false"}) @@ -1467,6 +1497,7 @@ func TestModernReconciler(t *testing.T) { mg.SetAnnotations(map[string]string{meta.AnnotationKeyReconciliationPaused: "true"}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return errBoom }), @@ -1487,6 +1518,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) @@ -1514,6 +1546,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionCreate}) @@ -1544,6 +1577,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1575,6 +1609,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) @@ -1617,6 +1652,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) @@ -1664,6 +1700,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve}) @@ -1712,6 +1749,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -1751,6 +1789,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -1790,6 +1829,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve, xpv1.ManagementActionLateInitialize, xpv1.ManagementActionCreate, xpv1.ManagementActionDelete}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -1838,6 +1878,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1885,6 +1926,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) want.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionAll}) @@ -1932,6 +1974,7 @@ func TestModernReconciler(t *testing.T) { mg.SetManagementPolicies(xpv1.ManagementPolicies{xpv1.ManagementActionObserve, xpv1.ManagementActionUpdate, xpv1.ManagementActionCreate, xpv1.ManagementActionDelete}) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(errBoom), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error { want := newModernManaged(42) @@ -2449,6 +2492,7 @@ func TestReconcilerChangeLogs(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, @@ -2486,6 +2530,7 @@ func TestReconcilerChangeLogs(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, @@ -2524,6 +2569,7 @@ func TestReconcilerChangeLogs(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, @@ -2561,6 +2607,7 @@ func TestReconcilerChangeLogs(t *testing.T) { m: &fake.Manager{ Client: &test.MockClient{ MockGet: modernManagedMockGetFn(nil, 42), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, @@ -2604,6 +2651,7 @@ func TestReconcilerChangeLogs(t *testing.T) { mg.SetDeletionTimestamp(&now) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), }, @@ -2646,6 +2694,7 @@ func TestReconcilerChangeLogs(t *testing.T) { mg.SetDeletionTimestamp(&now) return nil }), + MockPatch: test.NewMockPatchFn(nil), MockUpdate: test.NewMockUpdateFn(nil), MockStatusUpdate: test.MockSubResourceUpdateFn(func(_ context.Context, _ client.Object, _ ...client.SubResourceUpdateOption) error { return nil }), },