Skip to content

Commit cc32576

Browse files
csvirimetacosm
authored andcommitted
fix: secondary resource is optional
1 parent db359ad commit cc32576

File tree

5 files changed

+19
-12
lines changed

5 files changed

+19
-12
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ public interface Context {
66

77
Optional<RetryInfo> getRetryInfo();
88

9-
default <T> T getSecondaryResource(Class<T> expectedType) {
9+
default <T> Optional<T> getSecondaryResource(Class<T> expectedType) {
1010
return getSecondaryResource(expectedType, null);
1111
}
1212

13-
<T> T getSecondaryResource(Class<T> expectedType, String eventSourceName);
13+
<T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventSourceName);
1414
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ public Optional<RetryInfo> getRetryInfo() {
2323
}
2424

2525
@Override
26-
public <T> T getSecondaryResource(Class<T> expectedType, String eventSourceName) {
26+
public <T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventSourceName) {
2727
final var eventSource =
2828
controller.getEventSourceManager().getResourceEventSourceFor(expectedType, eventSourceName);
29-
return eventSource.map(es -> es.getAssociated(primaryResource)).orElse(null);
29+
return eventSource.map(es -> Optional.ofNullable(es.getAssociated(primaryResource)))
30+
.orElse(Optional.empty());
3031
}
3132
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.javaoperatorsdk.operator.sample.informereventsource;
22

33
import java.util.List;
4+
import java.util.Optional;
45

56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
@@ -51,9 +52,12 @@ public UpdateControl<InformerEventSourceTestCustomResource> reconcile(
5152

5253
// Reading the config map from the informer not from the API
5354
// name of the config map same as custom resource for sake of simplicity
54-
ConfigMap configMap = context.getSecondaryResource(ConfigMap.class);
55+
Optional<ConfigMap> configMap = context.getSecondaryResource(ConfigMap.class);
56+
if (configMap.isEmpty()) {
57+
throw new IllegalStateException("Config map should be present at this place.");
58+
}
5559

56-
String targetStatus = configMap.getData().get(TARGET_CONFIG_MAP_KEY);
60+
String targetStatus = configMap.get().getData().get(TARGET_CONFIG_MAP_KEY);
5761
LOGGER.debug("Setting target status for CR: {}", targetStatus);
5862
resource.setStatus(new InformerEventSourceTestCustomResourceStatus());
5963
resource.getStatus().setConfigMapValue(targetStatus);

sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/TomcatReconciler.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.io.InputStream;
55
import java.util.List;
66
import java.util.Objects;
7+
import java.util.Optional;
78
import java.util.Set;
89

910
import org.slf4j.Logger;
@@ -63,11 +64,11 @@ public UpdateControl<Tomcat> reconcile(Tomcat tomcat, Context context) {
6364
createOrUpdateDeployment(tomcat);
6465
createOrUpdateService(tomcat);
6566

66-
Deployment deployment = context.getSecondaryResource(Deployment.class);
67+
Optional<Deployment> deployment = context.getSecondaryResource(Deployment.class);
6768

68-
if (deployment != null) {
69+
if (deployment.isPresent()) {
6970
Tomcat updatedTomcat =
70-
updateTomcatStatus(tomcat, deployment);
71+
updateTomcatStatus(tomcat, deployment.get());
7172
log.info(
7273
"Updating status of Tomcat {} in namespace {} to {} ready replicas",
7374
tomcat.getMetadata().getName(),

sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.ByteArrayOutputStream;
44
import java.util.List;
55
import java.util.Objects;
6+
import java.util.Optional;
67
import java.util.concurrent.CompletableFuture;
78
import java.util.concurrent.ExecutionException;
89
import java.util.concurrent.TimeUnit;
@@ -70,13 +71,13 @@ public UpdateControl<Webapp> reconcile(Webapp webapp, Context context) {
7071
return UpdateControl.noUpdate();
7172
}
7273

73-
Tomcat tomcat = context.getSecondaryResource(Tomcat.class);
74-
if (tomcat == null) {
74+
Optional<Tomcat> tomcatValue = context.getSecondaryResource(Tomcat.class);
75+
if (tomcatValue.isEmpty()) {
7576
throw new IllegalStateException("Cannot find Tomcat " + webapp.getSpec().getTomcat()
7677
+ " for Webapp " + webapp.getMetadata().getName() + " in namespace "
7778
+ webapp.getMetadata().getNamespace());
7879
}
79-
80+
Tomcat tomcat = tomcatValue.get();
8081
if (tomcat.getStatus() != null
8182
&& Objects.equals(tomcat.getSpec().getReplicas(), tomcat.getStatus().getReadyReplicas())) {
8283
log.info(

0 commit comments

Comments
 (0)