2
2
3
3
import java .util .LinkedList ;
4
4
import java .util .List ;
5
+ import java .util .Optional ;
5
6
import java .util .stream .Collectors ;
6
7
7
8
import org .slf4j .Logger ;
@@ -54,13 +55,17 @@ public class Controller<P extends HasMetadata> implements Reconciler<P>, Cleaner
54
55
private final boolean contextInitializer ;
55
56
private final boolean hasDeleterDependents ;
56
57
private final boolean isCleaner ;
58
+ private final Metrics metrics ;
59
+
57
60
58
61
public Controller (Reconciler <P > reconciler ,
59
62
ControllerConfiguration <P > configuration ,
60
63
KubernetesClient kubernetesClient ) {
61
64
this .reconciler = reconciler ;
62
65
this .configuration = configuration ;
63
66
this .kubernetesClient = kubernetesClient ;
67
+ this .metrics = Optional .ofNullable (ConfigurationServiceProvider .instance ().getMetrics ())
68
+ .orElse (Metrics .NOOP );
64
69
contextInitializer = reconciler instanceof ContextInitializer ;
65
70
66
71
eventSourceManager = new EventSourceManager <>(this );
@@ -105,9 +110,8 @@ private void initContextIfNeeded(P resource, Context<P> context) {
105
110
106
111
@ Override
107
112
public DeleteControl cleanup (P resource , Context <P > context ) {
108
- initContextIfNeeded (resource , context );
109
113
try {
110
- return metrics ()
114
+ return metrics
111
115
.timeControllerExecution (
112
116
new ControllerExecution <>() {
113
117
@ Override
@@ -127,6 +131,7 @@ public String successTypeName(DeleteControl deleteControl) {
127
131
128
132
@ Override
129
133
public DeleteControl execute () {
134
+ initContextIfNeeded (resource , context );
130
135
if (hasDeleterDependents ) {
131
136
dependents .stream ()
132
137
.filter (d -> d instanceof Deleter )
@@ -147,8 +152,7 @@ public DeleteControl execute() {
147
152
148
153
@ Override
149
154
public UpdateControl <P > reconcile (P resource , Context <P > context ) throws Exception {
150
- initContextIfNeeded (resource , context );
151
- return metrics ().timeControllerExecution (
155
+ return metrics .timeControllerExecution (
152
156
new ControllerExecution <>() {
153
157
@ Override
154
158
public String name () {
@@ -174,18 +178,13 @@ public String successTypeName(UpdateControl<P> result) {
174
178
175
179
@ Override
176
180
public UpdateControl <P > execute () throws Exception {
181
+ initContextIfNeeded (resource , context );
177
182
dependents .forEach (dependent -> dependent .reconcile (resource , context ));
178
183
return reconciler .reconcile (resource , context );
179
184
}
180
185
});
181
186
}
182
187
183
-
184
- private Metrics metrics () {
185
- final var metrics = ConfigurationServiceProvider .instance ().getMetrics ();
186
- return metrics != null ? metrics : Metrics .NOOP ;
187
- }
188
-
189
188
@ Override
190
189
public List <EventSource > prepareEventSources (EventSourceContext <P > context ) {
191
190
List <EventSource > sources = new LinkedList <>();
0 commit comments