func()

in internal/handler/requirement.go [71:94]


func (r *RequirementHandler) EnsureNotExpired(ctx context.Context) (reconciler.OperationResult, error) {
	r.logger.V(1).Info("operation: EnsureNotExpired")
	if len(r.requirement.Spec.ExpireAt) == 0 {
		return reconciler.ContinueProcessing()
	}

	expireTime, err := time.Parse(time.RFC3339, r.requirement.Spec.ExpireAt)
	if err != nil {
		r.logger.Error(err, fmt.Sprintf("Failed to parse expire time: %s", r.requirement.Spec.ExpireAt))
		r.recorder.Event(r.requirement, "Warning", "InvalidExpireTime", "Failed to parse expire time")
		return reconciler.ContinueProcessing()
	}
	if time.Now().Before(expireTime) {
		return reconciler.ContinueProcessing()
	}
	// Expired
	r.logger.Info("deleting expired requirement", "expireAt", r.requirement.Spec.ExpireAt)
	if err := r.client.Delete(ctx, r.requirement, client.PropagationPolicy(metav1.DeletePropagationBackground)); client.IgnoreNotFound(err) != nil {
		r.logger.Error(err, "Failed to delete expired requirement")
		r.recorder.Event(r.requirement, "Warning", "DeleteFailed", "Failed to delete expired requirement")
		return reconciler.RequeueWithError(err)
	}
	return reconciler.ContinueProcessing()
}