Skip to content

Commit d80596c

Browse files
committed
feat: make it easier to override ConfigurationService
Fixes #542
1 parent ff28baa commit d80596c

File tree

2 files changed

+121
-1
lines changed

2 files changed

+121
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package io.javaoperatorsdk.operator.api.config;
2+
3+
import io.javaoperatorsdk.operator.api.ResourceController;
4+
import java.util.Set;
5+
6+
import com.fasterxml.jackson.databind.ObjectMapper;
7+
8+
import io.fabric8.kubernetes.client.Config;
9+
import io.fabric8.kubernetes.client.CustomResource;
10+
import io.javaoperatorsdk.operator.Metrics;
11+
12+
public class ConfigurationServiceOverrider {
13+
private final ConfigurationService original;
14+
private Metrics metrics;
15+
private Config clientConfig;
16+
private boolean checkCR;
17+
private int threadNumber;
18+
private ObjectMapper mapper;
19+
private int timeoutSeconds;
20+
21+
public ConfigurationServiceOverrider(
22+
ConfigurationService original) {
23+
this.original = original;
24+
this.clientConfig = original.getClientConfiguration();
25+
this.checkCR = original.checkCRDAndValidateLocalModel();
26+
this.threadNumber = original.concurrentReconciliationThreads();
27+
this.mapper = original.getObjectMapper();
28+
this.timeoutSeconds = original.getTerminationTimeoutSeconds();
29+
this.metrics = original.getMetrics();
30+
}
31+
32+
33+
public ConfigurationServiceOverrider withClientConfiguration(Config configuration) {
34+
this.clientConfig = configuration;
35+
return this;
36+
}
37+
38+
public ConfigurationServiceOverrider checkingCRDAndValidateLocalModel(boolean check) {
39+
this.checkCR = check;
40+
return this;
41+
}
42+
43+
public ConfigurationServiceOverrider withConcurrentReconciliationThreads(int threadNumber) {
44+
this.threadNumber = threadNumber;
45+
return this;
46+
}
47+
48+
public ConfigurationServiceOverrider withObjectMapper(ObjectMapper mapper) {
49+
this.mapper = mapper;
50+
return this;
51+
}
52+
53+
public ConfigurationServiceOverrider withTerminationTimeoutSeconds(int timeoutSeconds) {
54+
this.timeoutSeconds = timeoutSeconds;
55+
return this;
56+
}
57+
58+
public ConfigurationServiceOverrider withMetrics(Metrics metrics) {
59+
this.metrics = metrics;
60+
return this;
61+
}
62+
63+
public ConfigurationService build() {
64+
return new ConfigurationService() {
65+
@Override
66+
public <R extends CustomResource> ControllerConfiguration<R> getConfigurationFor(
67+
ResourceController<R> controller) {
68+
return original.getConfigurationFor(controller);
69+
}
70+
71+
@Override
72+
public Set<String> getKnownControllerNames() {
73+
return original.getKnownControllerNames();
74+
}
75+
76+
@Override
77+
public Version getVersion() {
78+
return original.getVersion();
79+
}
80+
81+
@Override
82+
public Config getClientConfiguration() {
83+
return clientConfig;
84+
}
85+
86+
@Override
87+
public boolean checkCRDAndValidateLocalModel() {
88+
return checkCR;
89+
}
90+
91+
@Override
92+
public int concurrentReconciliationThreads() {
93+
return threadNumber;
94+
}
95+
96+
@Override
97+
public ObjectMapper getObjectMapper() {
98+
return mapper;
99+
}
100+
101+
@Override
102+
public int getTerminationTimeoutSeconds() {
103+
return timeoutSeconds;
104+
}
105+
106+
@Override
107+
public Metrics getMetrics() {
108+
return metrics;
109+
}
110+
};
111+
}
112+
113+
public static ConfigurationServiceOverrider override(ConfigurationService original) {
114+
return new ConfigurationServiceOverrider(original);
115+
}
116+
}

samples/pure-java/src/main/java/io/javaoperatorsdk/operator/sample/PureJavaApplicationRunner.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
44
import io.fabric8.kubernetes.client.KubernetesClient;
55
import io.javaoperatorsdk.operator.Operator;
6+
import io.javaoperatorsdk.operator.api.config.ConfigurationServiceOverrider;
67
import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService;
78

89
public class PureJavaApplicationRunner {
910

1011
public static void main(String[] args) {
1112
KubernetesClient client = new DefaultKubernetesClient();
12-
Operator operator = new Operator(client, DefaultConfigurationService.instance());
13+
Operator operator = new Operator(client,
14+
ConfigurationServiceOverrider.override(DefaultConfigurationService.instance())
15+
.withConcurrentReconciliationThreads(2)
16+
.build());
1317
operator.register(new CustomServiceController(client));
1418
operator.start();
1519
}

0 commit comments

Comments
 (0)