 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Example (ControllerUsage) ¶
This example shows how to use the SmartRequeue package in a Kubernetes controller.
package main
import (
	"fmt"
	"time"
	ctrl "sigs.k8s.io/controller-runtime"
	"sigs.k8s.io/controller-runtime/pkg/client"
	"github.com/openmcp-project/cluster-provider-kind/pkg/smartrequeue"
)
func main() {
	// Create a store with min and max requeue intervals
	store := smartrequeue.NewStore(5*time.Second, 10*time.Minute, 2.0)
	// In your controller's Reconcile function:
	reconcileFunction := func(_ ctrl.Request) (ctrl.Result, error) {
		// Create a dummy object representing what you'd get from the client
		var obj client.Object // In real code: Get this from the client
		// Get the Entry for this specific object
		entry := store.For(obj)
		// Determine the state of the external resource...
		inProgress := false  // This would be determined by your logic
		errOccurred := false // This would be determined by your logic
		// nolint:gocritic
		if errOccurred {
			// Handle error case
			err := fmt.Errorf("something went wrong")
			return entry.Error(err)
		} else if inProgress {
			// Resource is changing - check back soon
			return entry.Progressing()
		} else {
			// Resource is stable - gradually back off
			return entry.Stable()
		}
	}
	// Call the reconcile function
	_, _ = reconcileFunction(ctrl.Request{})
}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Entry ¶
type Entry struct {
	// contains filtered or unexported fields
}
    Entry is used to manage the requeue logic for a specific object. It holds the next duration to requeue and the store it belongs to.
func FromContext ¶
FromContext retrieves the Entry from the context, if it exists. Returns nil if no Entry is found in the context.
func (*Entry) Error ¶
Error resets the duration to the minInterval and returns an empty Result and the error so that the controller-runtime can handle the exponential backoff for errors.
func (*Entry) Progressing ¶
Progressing resets the duration to the minInterval and returns a Result with that interval. Used when the external resource is still doing something (creating, deleting, updating, etc.)
type Store ¶
type Store struct {
	// contains filtered or unexported fields
}
    Store is used to manage requeue entries for different objects. It holds a map of entries indexed by a key that uniquely identifies the object.
func NewStore ¶
NewStore creates a new Store with the specified minimum and maximum intervals and a multiplier for the exponential backoff logic.