func()

in internal/handler/operation.go [69:95]


func (o *OperationHandler) EnsureNotExpired(ctx context.Context) (reconciler.OperationResult, error) {
	o.logger.V(1).Info("Operation EnsureNotExpired")
	if len(o.operation.Spec.ExpireAt) == 0 {
		return reconciler.ContinueProcessing()
	}
	if o.phaseIn(v1alpha1.OperationPhaseDeleted, v1alpha1.OperationPhaseDeleting) {
		return reconciler.ContinueProcessing()
	}
	expireTime, err := time.Parse(time.RFC3339, o.operation.Spec.ExpireAt)
	if err != nil {
		o.logger.Error(err, fmt.Sprintf("Failed to parse expire time: %s", o.operation.Spec.ExpireAt))
		o.recorder.Event(o.operation, "Warning", "InvalidExpireTime", "Failed to parse expire time")
		return reconciler.ContinueProcessing()
	}
	if time.Now().Before(expireTime) {
		return reconciler.ContinueProcessing()
	}
	// Expired
	o.logger.Info("deleting expired operation", "expireAt", o.operation.Spec.ExpireAt)
	if err := o.client.Delete(ctx, o.operation, client.PropagationPolicy(metav1.DeletePropagationBackground)); client.IgnoreNotFound(err) != nil {
		o.logger.Error(err, "Failed to delete expired operation")
		o.recorder.Event(o.operation, "Warning", "DeleteFailed", "Failed to delete expired operation")
		return reconciler.RequeueWithError(err)
	}
	// Stop processing if the operation is deleted
	return reconciler.ContinueProcessing()
}