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
- Variables
- func AnnotationFilterFunc(key, value string, allowUnset bool) func(interface{}) bool
- func ChainFilterFuncs(funcs ...func(interface{}) bool) func(interface{}) bool
- func LabelExistsFilterFunc(label string) func(obj interface{}) bool
- func LabelFilterFunc(label, value string, allowUnset bool) func(interface{}) bool
- func NameFilterFunc(name string) func(interface{}) bool
- func NamespaceFilterFunc(namespace string) func(interface{}) bool
- func Not(f func(interface{}) bool) func(interface{}) bool
- func Or(funcs ...func(interface{}) bool) func(interface{}) bool
- func PostProcessReconcile(ctx context.Context, resource, oldResource duckv1.KRShaped)
- func PreProcessReconcile(ctx context.Context, resource duckv1.KRShaped)
- func RetryErrors(updater func(int) error, fns ...func(error) bool) error
- func RetryTestErrors(updater func(int) error) error
- func RetryUpdateConflicts(updater func(int) error) error
- type Bucket
- type ConfigStore
- type Event
- type LeaderAware
- type LeaderAwareFuncs
- type OnDeletionInterface
- type ReconcilerEvent
Constants ¶
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 ¶
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
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)
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 ¶
AnnotationFilterFunc creates a FilterFunc only accepting objects with given annotation key and value
func ChainFilterFuncs ¶
ChainFilterFuncs creates a FilterFunc which performs an AND of the passed FilterFuncs.
func LabelExistsFilterFunc ¶
LabelExistsFilterFunc creates a FilterFunc only accepting objects which have a given label.
func LabelFilterFunc ¶
LabelFilterFunc creates a FilterFunc only accepting objects where a label is set to a specific value.
func NameFilterFunc ¶
NameFilterFunc creates a FilterFunc only accepting objects with the given name.
func NamespaceFilterFunc ¶
NamespaceFilterFunc creates a FilterFunc only accepting objects in the given namespace.
func PostProcessReconcile ¶
PostProcessReconcile contains logic to apply after reconciliation of a resource.
func PreProcessReconcile ¶
PreProcessReconcile contains logic to apply before reconciliation of a resource.
func RetryErrors ¶
RetryErrors retries the inner function if it returns matching errors.
func RetryTestErrors ¶
RetryTestErrors retries the inner function if it hits an error type that is common in our test environments.
func RetryUpdateConflicts ¶
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 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 ¶
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.