Skip to content

Commit a54a79e

Browse files
committed
wip
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 38d7d44 commit a54a79e

File tree

2 files changed

+49
-45
lines changed

2 files changed

+49
-45
lines changed

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/simple/ReconcilerExecutorIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void configMapGetsCreatedForTestCustomResource() {
5252

5353
awaitResourcesCreatedOrUpdated();
5454
awaitStatusUpdated();
55-
assertThat(TestUtils.getNumberOfExecutions(operator)).isEqualTo(2);
55+
assertThat(TestUtils.getNumberOfExecutions(operator)).isEqualTo(1);
5656
}
5757

5858
@Test

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/simple/TestReconciler.java

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package io.javaoperatorsdk.operator.baseapi.simple;
1717

1818
import java.util.HashMap;
19+
import java.util.List;
1920
import java.util.Map;
2021
import java.util.concurrent.atomic.AtomicInteger;
2122

@@ -26,7 +27,10 @@
2627
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
2728
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
2829
import io.javaoperatorsdk.operator.ReconcilerUtilsInternal;
30+
import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration;
2931
import io.javaoperatorsdk.operator.api.reconciler.*;
32+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
33+
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource;
3034
import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider;
3135

3236
@ControllerConfiguration(generationAwareEventProcessing = false)
@@ -52,55 +56,20 @@ public void setUpdateStatus(boolean updateStatus) {
5256
this.updateStatus = updateStatus;
5357
}
5458

55-
@Override
56-
public DeleteControl cleanup(TestCustomResource resource, Context<TestCustomResource> context) {
57-
numberOfCleanupExecutions.incrementAndGet();
58-
59-
var statusDetail =
60-
context
61-
.getClient()
62-
.configMaps()
63-
.inNamespace(resource.getMetadata().getNamespace())
64-
.withName(resource.getSpec().getConfigMapName())
65-
.delete();
66-
67-
if (statusDetail.size() == 1 && statusDetail.get(0).getCauses().isEmpty()) {
68-
log.info(
69-
"Deleted ConfigMap {} for resource: {}",
70-
resource.getSpec().getConfigMapName(),
71-
resource.getMetadata().getName());
72-
} else {
73-
log.error(
74-
"Failed to delete ConfigMap {} for resource: {}",
75-
resource.getSpec().getConfigMapName(),
76-
resource.getMetadata().getName());
77-
}
78-
return DeleteControl.defaultDelete();
79-
}
80-
8159
@Override
8260
public UpdateControl<TestCustomResource> reconcile(
8361
TestCustomResource resource, Context<TestCustomResource> context) {
8462
numberOfExecutions.addAndGet(1);
8563
if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) {
8664
throw new IllegalStateException("Finalizer is not present.");
8765
}
88-
final var kubernetesClient = context.getClient();
89-
ConfigMap existingConfigMap =
90-
kubernetesClient
91-
.configMaps()
92-
.inNamespace(resource.getMetadata().getNamespace())
93-
.withName(resource.getSpec().getConfigMapName())
94-
.get();
66+
67+
var existingConfigMap = context.getSecondaryResource(ConfigMap.class).orElse(null);
9568

9669
if (existingConfigMap != null) {
9770
existingConfigMap.setData(configMapData(resource));
98-
// existingConfigMap.getMetadata().setResourceVersion(null);
99-
kubernetesClient
100-
.configMaps()
101-
.inNamespace(resource.getMetadata().getNamespace())
102-
.resource(existingConfigMap)
103-
.createOrReplace();
71+
log.info("Updating config map");
72+
ReconcileUtils.serverSideApply(context, existingConfigMap);
10473
} else {
10574
Map<String, String> labels = new HashMap<>();
10675
labels.put("managedBy", TestReconciler.class.getSimpleName());
@@ -114,11 +83,8 @@ public UpdateControl<TestCustomResource> reconcile(
11483
.build())
11584
.withData(configMapData(resource))
11685
.build();
117-
kubernetesClient
118-
.configMaps()
119-
.inNamespace(resource.getMetadata().getNamespace())
120-
.resource(newConfigMap)
121-
.createOrReplace();
86+
log.info("Creating config map");
87+
ReconcileUtils.serverSideApply(context, newConfigMap);
12288
}
12389
if (updateStatus) {
12490
var statusUpdateResource = new TestCustomResource();
@@ -129,11 +95,49 @@ public UpdateControl<TestCustomResource> reconcile(
12995
.build());
13096
resource.setStatus(new TestCustomResourceStatus());
13197
resource.getStatus().setConfigMapStatus("ConfigMap Ready");
98+
log.info("Patching status");
13299
return UpdateControl.patchStatus(resource);
133100
}
134101
return UpdateControl.noUpdate();
135102
}
136103

104+
@Override
105+
public DeleteControl cleanup(TestCustomResource resource, Context<TestCustomResource> context) {
106+
numberOfCleanupExecutions.incrementAndGet();
107+
108+
var statusDetail =
109+
context
110+
.getClient()
111+
.configMaps()
112+
.inNamespace(resource.getMetadata().getNamespace())
113+
.withName(resource.getSpec().getConfigMapName())
114+
.delete();
115+
116+
if (statusDetail.size() == 1 && statusDetail.get(0).getCauses().isEmpty()) {
117+
log.info(
118+
"Deleted ConfigMap {} for resource: {}",
119+
resource.getSpec().getConfigMapName(),
120+
resource.getMetadata().getName());
121+
} else {
122+
log.error(
123+
"Failed to delete ConfigMap {} for resource: {}",
124+
resource.getSpec().getConfigMapName(),
125+
resource.getMetadata().getName());
126+
}
127+
return DeleteControl.defaultDelete();
128+
}
129+
130+
@Override
131+
public List<EventSource<?, TestCustomResource>> prepareEventSources(
132+
EventSourceContext<TestCustomResource> context) {
133+
InformerEventSource<ConfigMap, TestCustomResource> es =
134+
new InformerEventSource<>(
135+
InformerEventSourceConfiguration.from(ConfigMap.class, TestCustomResource.class)
136+
.build(),
137+
context);
138+
return List.of(es);
139+
}
140+
137141
private Map<String, String> configMapData(TestCustomResource resource) {
138142
Map<String, String> data = new HashMap<>();
139143
data.put(resource.getSpec().getKey(), resource.getSpec().getValue());

0 commit comments

Comments
 (0)