diff --git a/pkg/condition/condition.go b/pkg/condition/condition.go index e903dee..244b79f 100644 --- a/pkg/condition/condition.go +++ b/pkg/condition/condition.go @@ -395,6 +395,21 @@ func WithTerminalCondition( return ko } +// WithRecoverableCondition returns a new AWSResource with the +// ConditionTypeRecoverable set based on the err parameter +func WithRecoverableCondition( + resource acktypes.AWSResource, + err error, +) acktypes.AWSResource { + ko := resource.DeepCopy() + + if err != nil { + errString := err.Error() + SetRecoverable(ko, corev1.ConditionTrue, &errString, nil) + } + return ko +} + // LateInitializationInProgress return true if ConditionTypeLateInitialized has "False" status // False status means that resource has LateInitializationConfig but has not been completely // late initialized yet. diff --git a/pkg/runtime/reconciler.go b/pkg/runtime/reconciler.go index 1e2d284..1d0d1b1 100644 --- a/pkg/runtime/reconciler.go +++ b/pkg/runtime/reconciler.go @@ -662,10 +662,10 @@ func (r *resourceReconciler) Sync( return latest, err } if adoptionPolicy == AdoptionPolicy_Adopt || isAdopted { - return nil, ackerr.AdoptedResourceNotFound + return ackcondition.WithRecoverableCondition(desired, ackerr.AdoptedResourceNotFound), ackerr.AdoptedResourceNotFound } if isReadOnly { - return nil, ackerr.ReadOnlyResourceNotFound + return ackcondition.WithRecoverableCondition(desired, ackerr.ReadOnlyResourceNotFound), ackerr.ReadOnlyResourceNotFound } if latest, err = r.createResource(ctx, rm, resolved); err != nil { return latest, err