reconciler

package
v0.0.0-...-74c4be5 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2023 License: Apache-2.0 Imports: 14 Imported by: 1,051

Documentation

Overview

Copyright 2020 The Knative Authors

Licensed under the Apache License, Veroute.on 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	// DoReconcileKind is the function name for reconciling the resource (as a leader).
	DoReconcileKind = "ReconcileKind"
	// DoFinalizeKind is the function name for finalizing the resource (as a leader).
	DoFinalizeKind = "FinalizeKind"
	// DoObserveKind is the function name for observing the resource (as a non leader).
	DoObserveKind = "ObserveKind"
	// DoObserveFinalizeKind is the function name for observing finalization of the resource (as a non leader).
	//
	// Deprecated: This will be deleted soon.
	DoObserveFinalizeKind = "ObserveFinalizeKind"
)

Variables

View Source
var DefaultTimeout = 30 * time.Second

DefaultTimeout is used in some downstream reconcilers to put a context deadline on reconciliation. It is a variable so that it can be exposed by entrypoints as a flag, e.g. via flag.DurationVar

View Source
var EventAs = errors.As

EventAs finds the first error in err's chain that matches target, and if so, sets target to that error value and returns true.

The chain consists of err itself followed by the sequence of errors obtained by repeatedly calling Unwrap.

An error matches target if the error's concrete value is assignable to the value pointed to by target, or if the error has a method As(interface{}) bool such that As(target) returns true. In the latter case, the As method is responsible for setting target.

As will panic if target is not a non-nil pointer to either a type that implements error, or to any interface type. As returns false if err is nil. (text from errors/wrap.go)

View Source
var EventIs = errors.Is

EventIs reports whether any error in err's chain matches target.

The chain consists of err itself followed by the sequence of errors obtained by repeatedly calling Unwrap.

An error is considered to match a target if it is equal to that target or if it implements a method Is(error) bool such that Is(target) returns true. (text from errors/wrap.go)

Functions

func AnnotationFilterFunc

func AnnotationFilterFunc(key, value string, allowUnset bool) func(interface{}) bool

AnnotationFilterFunc creates a FilterFunc only accepting objects with given annotation key and value

func ChainFilterFuncs

func ChainFilterFuncs(funcs ...func(interface{}) bool) func(interface{}) bool

ChainFilterFuncs creates a FilterFunc which performs an AND of the passed FilterFuncs.

func LabelExistsFilterFunc

func LabelExistsFilterFunc(label string) func(obj interface{}) bool

LabelExistsFilterFunc creates a FilterFunc only accepting objects which have a given label.

func LabelFilterFunc

func LabelFilterFunc(label, value string, allowUnset bool) func(interface{}) bool

LabelFilterFunc creates a FilterFunc only accepting objects where a label is set to a specific value.

func NameFilterFunc

func NameFilterFunc(name string) func(interface{}) bool

NameFilterFunc creates a FilterFunc only accepting objects with the given name.

func NamespaceFilterFunc

func NamespaceFilterFunc(namespace string) func(interface{}) bool

NamespaceFilterFunc creates a FilterFunc only accepting objects in the given namespace.

func Not

func Not(f func(interface{}) bool) func(interface{}) bool

Not inverts the result of the predicate.

func Or

func Or(funcs ...func(interface{}) bool) func(interface{}) bool

Or creates a FilterFunc which performs an OR of the passed in FilterFuncs

func PostProcessReconcile

func PostProcessReconcile(ctx context.Context, resource, oldResource duckv1.KRShaped)

PostProcessReconcile contains logic to apply after reconciliation of a resource.

func PreProcessReconcile

func PreProcessReconcile(ctx context.Context, resource duckv1.KRShaped)

PreProcessReconcile contains logic to apply before reconciliation of a resource.

func RetryErrors

func RetryErrors(updater func(int) error, fns ...func(error) bool) error

RetryErrors retries the inner function if it returns matching errors.

func RetryTestErrors

func RetryTestErrors(updater func(int) error) error

RetryTestErrors retries the inner function if it hits an error type that is common in our test environments.

func RetryUpdateConflicts

func RetryUpdateConflicts(updater func(int) error) error

RetryUpdateConflicts retries the inner function if it returns conflict errors. This can be used to retry status updates without constantly reenqueuing keys.

Types

type Bucket

type Bucket interface {
	// Name returns a string representing this bucket, which uniquely
	// identifies the bucket and is suitable for use as a resource lock name.
	Name() string

	// Has determines whether this Bucket contains a particular key.
	Has(key types.NamespacedName) bool
}

Bucket is an opaque type used to scope leadership.

func UniversalBucket

func UniversalBucket() Bucket

UniversalBucket returns a Bucket that "Has()" all keys.

type ConfigStore

type ConfigStore interface {
	// ConfigStore is used to attach the frozen configuration to the context.
	ToContext(ctx context.Context) context.Context
}

ConfigStore is used to attach the frozen configuration to the context.

type Event

type Event error

Event leverages go's 1.13 error wrapping.

func NewEvent

func NewEvent(eventtype, reason, messageFmt string, args ...interface{}) Event

NewEvent returns an Event fully populated.

type LeaderAware

type LeaderAware interface {
	// Promote is called when we become the leader of a given Bucket.  It must be
	// supplied with an enqueue function through which a Bucket resync may be triggered.
	Promote(b Bucket, enq func(Bucket, types.NamespacedName)) error

	// Demote is called when we stop being the leader for the specified Bucket.
	Demote(Bucket)
}

LeaderAware is implemented by Reconcilers that are aware of their leader status.

type LeaderAwareFuncs

type LeaderAwareFuncs struct {
	sync.RWMutex

	PromoteFunc func(b Bucket, enq func(Bucket, types.NamespacedName)) error
	DemoteFunc  func(b Bucket)
	// contains filtered or unexported fields
}

LeaderAwareFuncs implements LeaderAware using the given functions for handling promotion and demotion.

func (*LeaderAwareFuncs) Demote

func (laf *LeaderAwareFuncs) Demote(b Bucket)

Demote implements LeaderAware

func (*LeaderAwareFuncs) IsLeaderFor

func (laf *LeaderAwareFuncs) IsLeaderFor(key types.NamespacedName) bool

IsLeaderFor implements LeaderAware

func (*LeaderAwareFuncs) Promote

func (laf *LeaderAwareFuncs) Promote(b Bucket, enq func(Bucket, types.NamespacedName)) error

Promote implements LeaderAware

type OnDeletionInterface

type OnDeletionInterface interface {
	// ObserveDeletion implements custom logic to observe deletion of the respective resource
	// with the given key.
	ObserveDeletion(ctx context.Context, key types.NamespacedName) error
}

OnDeletionInterface defines the strongly typed interface to be implemented by a controller observing a deletion of an object. Every controller that was active during the deletion of the respective resource is guaranteed to observe this event, leader or not. It's usually used to clear up in-memory state regarding the respective resource. Finalizers should be used to ensure external resources are properly cleaned up.

type ReconcilerEvent

type ReconcilerEvent struct {
	EventType string
	Reason    string
	Format    string
	Args      []interface{}
}

ReconcilerEvent wraps the fields required for recorders to create a kubernetes recorder Event.

func (*ReconcilerEvent) As

func (e *ReconcilerEvent) As(target interface{}) bool

As allows ReconcilerEvents to be treated as regular error types.

func (*ReconcilerEvent) Error

func (e *ReconcilerEvent) Error() string

Error returns the string that is formed by using the format string with the provided args.

func (*ReconcilerEvent) Is

func (e *ReconcilerEvent) Is(target error) bool

Is returns if the target error is a ReconcilerEvent type checking that EventType and Reason match.

Directories

Path Synopsis
Package testing includes utilities for testing controllers.
Package testing includes utilities for testing controllers.

Jump to

Keyboard shortcuts

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