-
Notifications
You must be signed in to change notification settings - Fork 341
Expand file tree
/
Copy pathoptions.go
More file actions
74 lines (57 loc) · 3.05 KB
/
options.go
File metadata and controls
74 lines (57 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
Copyright 2020 The Knative Authors
Licensed under the Apache License, Version 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
https://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.
*/
package controller
import "knative.dev/pkg/reconciler"
// Options is additional resources a Controller might want to use depending
// on implementation.
type Options struct {
// ConfigStore is used to attach the frozen configuration to the context.
ConfigStore reconciler.ConfigStore
// FinalizerName is the name of the finalizer this reconciler uses. This
// overrides a default finalizer name assigned by the generator if needed.
FinalizerName string
// UseServerSideApplyForFinalizers enables server-side apply for finalizer management.
// When enabled, this reconciler will use server-side apply instead of merge patch
// to manage its finalizer, reducing conflicts when multiple controllers manage
// different finalizers on the same resource.
UseServerSideApplyForFinalizers bool
// FinalizerFieldManager specifies the field manager name for server-side apply
// finalizer operations. This is required when UseServerSideApplyForFinalizers
// is true and should be unique to avoid conflicts with other controllers.
FinalizerFieldManager string
// ForceApplyFinalizers configures whether to use the Force option when applying
// finalizers via server-side apply. This can resolve conflicts but should be
// used carefully as it can override other field managers.
ForceApplyFinalizers bool
// AgentName is the name of the agent this reconciler uses. This overrides
// the default controller's agent name.
AgentName string
// SkipStatusUpdates configures this reconciler to either do automated status
// updates (default) or skip them if this is set to true.
SkipStatusUpdates bool
// DemoteFunc configures the demote function this reconciler uses
DemoteFunc func(b reconciler.Bucket)
// Concurrency - The number of workers to use when processing the controller's workqueue.
Concurrency int
// PromoteFilterFunc filters the objects that are enqueued when the reconciler is promoted to leader.
// Objects that pass the filter (return true) will be reconciled when a new leader is promoted.
// If no filter is specified, all objects will be reconciled.
PromoteFilterFunc func(obj interface{}) bool
// PromoteFunc is called when a reconciler is promoted for the given bucket
// The provided function must not block execution.
PromoteFunc func(bkt reconciler.Bucket)
}
// OptionsFn is a callback method signature that accepts an Impl and returns
// Options. Used for controllers that need access to the members of Options but
// to build Options, integrators need an Impl.
type OptionsFn func(impl *Impl) Options