14
14
import io .fabric8 .kubernetes .client .KubernetesClient ;
15
15
import io .fabric8 .kubernetes .client .KubernetesClientBuilder ;
16
16
import io .fabric8 .kubernetes .client .Version ;
17
+ import io .javaoperatorsdk .operator .api .config .BaseConfigurationService ;
17
18
import io .javaoperatorsdk .operator .api .config .ConfigurationService ;
18
19
import io .javaoperatorsdk .operator .api .config .ConfigurationServiceOverrider ;
19
- import io .javaoperatorsdk .operator .api .config .ConfigurationServiceProvider ;
20
20
import io .javaoperatorsdk .operator .api .config .ControllerConfiguration ;
21
21
import io .javaoperatorsdk .operator .api .config .ControllerConfigurationOverrider ;
22
- import io .javaoperatorsdk .operator .api .config .ExecutorServiceManager ;
23
22
import io .javaoperatorsdk .operator .api .reconciler .Reconciler ;
24
23
import io .javaoperatorsdk .operator .processing .Controller ;
25
24
import io .javaoperatorsdk .operator .processing .LifecycleAware ;
@@ -29,17 +28,18 @@ public class Operator implements LifecycleAware {
29
28
private static final Logger log = LoggerFactory .getLogger (Operator .class );
30
29
private static final int DEFAULT_MAX_CONCURRENT_REQUEST = 512 ;
31
30
private final KubernetesClient kubernetesClient ;
32
- private final ControllerManager controllerManager = new ControllerManager () ;
33
- private final LeaderElectionManager leaderElectionManager =
34
- new LeaderElectionManager ( controllerManager ) ;
31
+ private final ControllerManager controllerManager ;
32
+ private final LeaderElectionManager leaderElectionManager ;
33
+ private final ConfigurationService configurationService ;
35
34
private volatile boolean started = false ;
36
35
36
+
37
37
public Operator () {
38
38
this ((KubernetesClient ) null );
39
39
}
40
40
41
41
public Operator (KubernetesClient kubernetesClient ) {
42
- this (kubernetesClient , ConfigurationServiceProvider . instance ());
42
+ this (kubernetesClient , new BaseConfigurationService ());
43
43
}
44
44
45
45
/**
@@ -56,7 +56,8 @@ public Operator(Consumer<ConfigurationServiceOverrider> overrider) {
56
56
}
57
57
58
58
public Operator (KubernetesClient client , Consumer <ConfigurationServiceOverrider > overrider ) {
59
- this (client , ConfigurationServiceProvider .overrideCurrent (overrider ));
59
+ this (client , ConfigurationService
60
+ .newOverriddenConfigurationService (new BaseConfigurationService (), overrider ));
60
61
}
61
62
62
63
/**
@@ -67,15 +68,19 @@ public Operator(KubernetesClient client, Consumer<ConfigurationServiceOverrider>
67
68
* @param configurationService provides configuration
68
69
*/
69
70
public Operator (KubernetesClient kubernetesClient , ConfigurationService configurationService ) {
71
+ this .configurationService = configurationService ;
72
+ final var executorServiceManager = configurationService .getExecutorServiceManager ();
73
+ controllerManager = new ControllerManager (executorServiceManager );
70
74
this .kubernetesClient =
71
75
kubernetesClient != null ? kubernetesClient
72
76
: new KubernetesClientBuilder ()
73
77
.withConfig (new ConfigBuilder ()
74
78
.withMaxConcurrentRequests (DEFAULT_MAX_CONCURRENT_REQUEST ).build ())
75
79
.build ();
76
- ConfigurationServiceProvider .set (configurationService );
77
- configurationService .getLeaderElectionConfiguration ()
78
- .ifPresent (c -> leaderElectionManager .init (c , this .kubernetesClient ));
80
+
81
+
82
+ leaderElectionManager =
83
+ new LeaderElectionManager (kubernetesClient , controllerManager , configurationService );
79
84
}
80
85
81
86
/**
@@ -86,8 +91,7 @@ public Operator(KubernetesClient kubernetesClient, ConfigurationService configur
86
91
*/
87
92
@ Deprecated (forRemoval = true )
88
93
public void installShutdownHook () {
89
- installShutdownHook (
90
- Duration .ofSeconds (ConfigurationServiceProvider .instance ().getTerminationTimeoutSeconds ()));
94
+ installShutdownHook (Duration .ofSeconds (configurationService .getTerminationTimeoutSeconds ()));
91
95
}
92
96
93
97
/**
@@ -123,9 +127,8 @@ public synchronized void start() {
123
127
if (started ) {
124
128
return ;
125
129
}
126
- ExecutorServiceManager .init ();
127
130
controllerManager .shouldStart ();
128
- final var version = ConfigurationServiceProvider . instance () .getVersion ();
131
+ final var version = configurationService .getVersion ();
129
132
log .info (
130
133
"Operator SDK {} (commit: {}) built on {} starting..." ,
131
134
version .getSdkVersion (),
@@ -149,12 +152,11 @@ public void stop(Duration gracefulShutdownTimeout) throws OperatorException {
149
152
if (!started ) {
150
153
return ;
151
154
}
152
- final var configurationService = ConfigurationServiceProvider .instance ();
153
155
log .info (
154
156
"Operator SDK {} is shutting down..." , configurationService .getVersion ().getSdkVersion ());
155
157
controllerManager .stop ();
156
158
157
- ExecutorServiceManager .stop (gracefulShutdownTimeout );
159
+ configurationService . getExecutorServiceManager () .stop (gracefulShutdownTimeout );
158
160
leaderElectionManager .stop ();
159
161
if (configurationService .closeClientOnStop ()) {
160
162
kubernetesClient .close ();
@@ -179,8 +181,7 @@ public void stop() throws OperatorException {
179
181
*/
180
182
public <P extends HasMetadata > RegisteredController <P > register (Reconciler <P > reconciler )
181
183
throws OperatorException {
182
- final var controllerConfiguration =
183
- ConfigurationServiceProvider .instance ().getConfigurationFor (reconciler );
184
+ final var controllerConfiguration = configurationService .getConfigurationFor (reconciler );
184
185
return register (reconciler , controllerConfiguration );
185
186
}
186
187
@@ -210,7 +211,7 @@ public <P extends HasMetadata> RegisteredController<P> register(Reconciler<P> re
210
211
" reconciler named " + ReconcilerUtils .getNameFor (reconciler )
211
212
+ " because its configuration cannot be found.\n " +
212
213
" Known reconcilers are: "
213
- + ConfigurationServiceProvider . instance () .getKnownReconcilerNames ());
214
+ + configurationService .getKnownReconcilerNames ());
214
215
}
215
216
216
217
final var controller = new Controller <>(reconciler , configuration , kubernetesClient );
@@ -239,7 +240,7 @@ public <P extends HasMetadata> RegisteredController<P> register(Reconciler<P> re
239
240
public <P extends HasMetadata > RegisteredController <P > register (Reconciler <P > reconciler ,
240
241
Consumer <ControllerConfigurationOverrider <P >> configOverrider ) {
241
242
final var controllerConfiguration =
242
- ConfigurationServiceProvider . instance () .getConfigurationFor (reconciler );
243
+ configurationService .getConfigurationFor (reconciler );
243
244
var configToOverride = ControllerConfigurationOverrider .override (controllerConfiguration );
244
245
configOverrider .accept (configToOverride );
245
246
return register (reconciler , configToOverride .build ());
@@ -264,4 +265,8 @@ public RuntimeInfo getRuntimeInfo() {
264
265
boolean isStarted () {
265
266
return started ;
266
267
}
268
+
269
+ public ConfigurationService getConfigurationService () {
270
+ return configurationService ;
271
+ }
267
272
}
0 commit comments