Skip to content

Commit 3c6be64

Browse files
committed
feat: inject leader election / informer stopped handler into config
Requires operator-framework/java-operator-sdk#1493
1 parent 051a980 commit 3c6be64

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

core/runtime/src/main/java/io/quarkiverse/operatorsdk/runtime/ConfigurationServiceRecorder.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import io.fabric8.kubernetes.client.KubernetesClient;
1010
import io.fabric8.kubernetes.client.utils.Serialization;
1111
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
12+
import io.javaoperatorsdk.operator.api.config.InformerStoppedHandler;
13+
import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration;
1214
import io.javaoperatorsdk.operator.api.monitoring.Metrics;
1315
import io.quarkus.arc.Arc;
1416
import io.quarkus.jackson.ObjectMapperCustomizer;
@@ -46,21 +48,24 @@ public Supplier<QuarkusConfigurationService> configurationServiceSupplier(Versio
4648
// customize fabric8 mapper
4749
final var mapper = Serialization.jsonMapper();
4850
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
49-
Arc.container().select(ObjectMapperCustomizer.class, KubernetesClientSerializationCustomizer.Literal.INSTANCE)
51+
final var container = Arc.container();
52+
container.select(ObjectMapperCustomizer.class, KubernetesClientSerializationCustomizer.Literal.INSTANCE)
5053
.stream()
5154
.sorted()
5255
.forEach(c -> c.customize(mapper));
5356

5457
return new QuarkusConfigurationService(
5558
version,
5659
configurations.values(),
57-
Arc.container().instance(KubernetesClient.class).get(),
60+
container.instance(KubernetesClient.class).get(),
5861
crdInfo,
5962
maxThreads,
6063
timeout,
61-
Arc.container().instance(Metrics.class).get(),
64+
container.instance(Metrics.class).get(),
6265
shouldStartOperator(buildTimeConfiguration.startOperator, launchMode),
63-
mapper);
66+
mapper,
67+
container.instance(LeaderElectionConfiguration.class).orElse(null),
68+
container.instance(InformerStoppedHandler.class).orElse(null));
6469
};
6570
}
6671

core/runtime/src/main/java/io/quarkiverse/operatorsdk/runtime/QuarkusConfigurationService.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Collections;
55
import java.util.HashMap;
66
import java.util.Map;
7+
import java.util.Optional;
78
import java.util.stream.Stream;
89

910
import org.slf4j.Logger;
@@ -18,6 +19,8 @@
1819
import io.javaoperatorsdk.operator.api.config.AbstractConfigurationService;
1920
import io.javaoperatorsdk.operator.api.config.Cloner;
2021
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
22+
import io.javaoperatorsdk.operator.api.config.InformerStoppedHandler;
23+
import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration;
2124
import io.javaoperatorsdk.operator.api.config.Version;
2225
import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec;
2326
import io.javaoperatorsdk.operator.api.monitoring.Metrics;
@@ -38,14 +41,17 @@ public class QuarkusConfigurationService extends AbstractConfigurationService {
3841
private final Map<String, String> reconcilerClassToName;
3942
private final Metrics metrics;
4043
private final boolean startOperator;
44+
private final LeaderElectionConfiguration leaderElectionConfiguration;
45+
private final InformerStoppedHandler informerStoppedHandler;
4146

4247
@SuppressWarnings({ "rawtypes", "unchecked" })
4348
public QuarkusConfigurationService(
4449
Version version,
4550
Collection<QuarkusControllerConfiguration> configurations,
4651
KubernetesClient client,
4752
CRDGenerationInfo crdInfo, int maxThreads,
48-
int timeout, Metrics metrics, boolean startOperator, ObjectMapper mapper) {
53+
int timeout, Metrics metrics, boolean startOperator, ObjectMapper mapper,
54+
LeaderElectionConfiguration leaderElectionConfiguration, InformerStoppedHandler informerStoppedHandler) {
4955
super(version);
5056
final var cloner = new Cloner() {
5157
@Override
@@ -73,6 +79,8 @@ public <R extends HasMetadata> R clone(R r) {
7379
this.crdInfo = crdInfo;
7480
this.concurrentReconciliationThreads = maxThreads;
7581
this.terminationTimeout = timeout;
82+
this.informerStoppedHandler = informerStoppedHandler;
83+
this.leaderElectionConfiguration = leaderElectionConfiguration;
7684
}
7785

7886
@Override
@@ -171,4 +179,14 @@ public DependentResourceFactory dependentResourceFactory() {
171179
public Stream<ControllerConfiguration> controllerConfigurations() {
172180
return super.controllerConfigurations();
173181
}
182+
183+
@Override
184+
public Optional<LeaderElectionConfiguration> getLeaderElectionConfiguration() {
185+
return Optional.ofNullable(leaderElectionConfiguration);
186+
}
187+
188+
@Override
189+
public Optional<InformerStoppedHandler> getInformerStoppedHandler() {
190+
return Optional.ofNullable(informerStoppedHandler);
191+
}
174192
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<name>Quarkus - Operator SDK - Parent</name>
1414
<properties>
1515
<quarkus.version>2.13.1.Final</quarkus.version>
16-
<java-operator-sdk.version>3.2.1</java-operator-sdk.version>
16+
<java-operator-sdk.version>3.2.3-SNAPSHOT</java-operator-sdk.version>
1717
</properties>
1818

1919
<profiles>

0 commit comments

Comments
 (0)