predicates

package
Version: v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2021 License: Apache-2.0 Imports: 8 Imported by: 37

Documentation

Overview

Package predicates implements predicate utilities.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func All

func All(logger logr.Logger, predicates ...predicate.Funcs) predicate.Funcs

All returns a predicate that returns true only if all given predicates return true.

func Any

func Any(logger logr.Logger, predicates ...predicate.Funcs) predicate.Funcs

Any returns a predicate that returns true only if any given predicate returns true.

func ClusterCreateInfraReady

func ClusterCreateInfraReady(logger logr.Logger) predicate.Funcs

ClusterCreateInfraReady returns a predicate that returns true for a create event when a cluster has Status.InfrastructureReady set as true it also returns true if the resource provided is not a Cluster to allow for use with controller-runtime NewControllerManagedBy.

func ClusterCreateNotPaused

func ClusterCreateNotPaused(logger logr.Logger) predicate.Funcs

ClusterCreateNotPaused returns a predicate that returns true for a create event when a cluster has Spec.Paused set as false it also returns true if the resource provided is not a Cluster to allow for use with controller-runtime NewControllerManagedBy.

func ClusterUnpaused

func ClusterUnpaused(logger logr.Logger) predicate.Funcs

ClusterUnpaused returns a Predicate that returns true on Cluster creation events where Cluster.Spec.Paused is false and Update events when Cluster.Spec.Paused transitions to false. This implements a common requirement for many cluster-api and provider controllers (such as Cluster Infrastructure controllers) to resume reconciliation when the Cluster is unpaused. Example use:

err := controller.Watch(
    &source.Kind{Type: &clusterv1.Cluster{}},
    &handler.EnqueueRequestsFromMapFunc{
        ToRequests: clusterToMachines,
    },
    predicates.ClusterUnpaused(r.Log),
)

func ClusterUnpausedAndInfrastructureReady

func ClusterUnpausedAndInfrastructureReady(logger logr.Logger) predicate.Funcs

ClusterUnpausedAndInfrastructureReady returns a Predicate that returns true on Cluster creation events where both Cluster.Spec.Paused is false and Cluster.Status.InfrastructureReady is true and Update events when either Cluster.Spec.Paused transitions to false or Cluster.Status.InfrastructureReady transitions to true. This implements a common requirement for some cluster-api and provider controllers (such as Machine Infrastructure controllers) to resume reconciliation when the Cluster is unpaused and when the infrastructure becomes ready. Example use:

err := controller.Watch(
    &source.Kind{Type: &clusterv1.Cluster{}},
    &handler.EnqueueRequestsFromMapFunc{
        ToRequests: clusterToMachines,
    },
    predicates.ClusterUnpausedAndInfrastructureReady(r.Log),
)

func ClusterUpdateInfraReady

func ClusterUpdateInfraReady(logger logr.Logger) predicate.Funcs

ClusterUpdateInfraReady returns a predicate that returns true for an update event when a cluster has Status.InfrastructureReady changed from false to true it also returns true if the resource provided is not a Cluster to allow for use with controller-runtime NewControllerManagedBy.

func ClusterUpdateUnpaused

func ClusterUpdateUnpaused(logger logr.Logger) predicate.Funcs

ClusterUpdateUnpaused returns a predicate that returns true for an update event when a cluster has Spec.Paused changed from true to false it also returns true if the resource provided is not a Cluster to allow for use with controller-runtime NewControllerManagedBy.

func ResourceHasFilterLabel added in v0.4.0

func ResourceHasFilterLabel(logger logr.Logger, labelValue string) predicate.Funcs

ResourceHasFilterLabel returns a predicate that returns true only if the provided resource contains a label with the WatchLabel key and the configured label value exactly.

func ResourceIsNotExternallyManaged added in v0.4.0

func ResourceIsNotExternallyManaged(logger logr.Logger) predicate.Funcs

ResourceIsNotExternallyManaged returns a predicate that returns true only if the resource does not contain the externally managed annotation. This implements a requirement for InfraCluster providers to be able to ignore externally managed cluster infrastructure.

func ResourceIsTopologyOwned added in v0.4.3

func ResourceIsTopologyOwned(logger logr.Logger) predicate.Funcs

ResourceIsTopologyOwned returns a predicate that returns true only if the resource has the `topology.cluster.x-k8s.io/owned` label.

func ResourceNotPaused

func ResourceNotPaused(logger logr.Logger) predicate.Funcs

ResourceNotPaused returns a Predicate that returns true only if the provided resource does not contain the paused annotation. This implements a common requirement for all cluster-api and provider controllers skip reconciliation when the paused annotation is present for a resource. Example use:

func (r *MyReconciler) SetupWithManager(mgr ctrl.Manager, options controller.Options) error {
	controller, err := ctrl.NewControllerManagedBy(mgr).
		For(&v1.MyType{}).
		WithOptions(options).
		WithEventFilter(util.ResourceNotPaused(r.Log)).
		Build(r)
	return err
}

func ResourceNotPausedAndHasFilterLabel added in v0.4.0

func ResourceNotPausedAndHasFilterLabel(logger logr.Logger, labelValue string) predicate.Funcs

ResourceNotPausedAndHasFilterLabel returns a predicate that returns true only if the ResourceNotPaused and ResourceHasFilterLabel predicates return true.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL