Skip to content

Commit 27dbbeb

Browse files
committed
IT
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 4f9e6a5 commit 27dbbeb

File tree

5 files changed

+59
-6
lines changed

5 files changed

+59
-6
lines changed

src/main/java/io/javaoperatorsdk/operator/glue/reconciler/glue/GlueReconciler.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,17 @@ public class GlueReconciler implements Reconciler<Glue>, Cleaner<Glue>, ErrorSta
4848

4949
private final ValidationAndErrorHandler validationAndErrorHandler;
5050
private final InformerRegister informerRegister;
51-
private final GenericTemplateHandler templateHandler;
5251

5352
private final KubernetesResourceDeletedCondition deletePostCondition =
5453
new KubernetesResourceDeletedCondition();
5554

5655
private final GenericTemplateHandler genericTemplateHandler;
5756

5857
public GlueReconciler(ValidationAndErrorHandler validationAndErrorHandler,
59-
InformerRegister informerRegister, GenericTemplateHandler templateHandler,
58+
InformerRegister informerRegister,
6059
GenericTemplateHandler genericTemplateHandler) {
6160
this.validationAndErrorHandler = validationAndErrorHandler;
6261
this.informerRegister = informerRegister;
63-
this.templateHandler = templateHandler;
6462
this.genericTemplateHandler = genericTemplateHandler;
6563
}
6664

@@ -234,7 +232,7 @@ private void patchRelatedResourcesStatus(Context<Glue> context,
234232
.filter(r -> r.getStatusPatch() != null || r.getStatusPatchTemplate() != null)
235233
.toList();
236234

237-
if (!targetRelatedResources.isEmpty()) {
235+
if (targetRelatedResources.isEmpty()) {
238236
return;
239237
}
240238
var actualData = genericTemplateHandler.createDataWithResources(primary, context);

src/main/java/io/javaoperatorsdk/operator/glue/templating/GenericTemplateHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Map;
55

66
import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
7+
import io.fabric8.kubernetes.client.utils.Serialization;
78
import io.javaoperatorsdk.operator.api.reconciler.Context;
89
import io.javaoperatorsdk.operator.glue.Utils;
910
import io.javaoperatorsdk.operator.glue.customresource.glue.Glue;
@@ -62,10 +63,9 @@ public String processTemplate(String template, Glue primary,
6263
return res;
6364
}
6465

65-
// todo unit test
6666
@SuppressWarnings("unchecked")
6767
public static Map<String, ?> parseTemplateToMapObject(String template) {
68-
return objectMapper.convertValue(template, Map.class);
68+
return Serialization.unmarshal(template, Map.class);
6969
}
7070

7171
}

src/test/java/io/javaoperatorsdk/operator/glue/GlueTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
1515
import io.fabric8.kubernetes.api.model.Secret;
1616
import io.fabric8.kubernetes.client.dsl.NonDeletingOperation;
17+
import io.javaoperatorsdk.operator.glue.customresource.TestCustomResource;
1718
import io.javaoperatorsdk.operator.glue.customresource.glue.DependentResourceSpec;
1819
import io.javaoperatorsdk.operator.glue.customresource.glue.Glue;
1920
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndErrorHandler;
@@ -324,6 +325,33 @@ void clusterScopedRelatedResource() {
324325
});
325326
}
326327

328+
@Test
329+
void pathRelatedResourceStatus() {
330+
TestUtils.applyTestCrd(client, TestCustomResource.class);
331+
332+
var customResource = create(TestData.testCustomResource());
333+
var glue = createGlue("/glue/PatchRelatedStatus.yaml");
334+
335+
await().untilAsserted(() -> {
336+
var cm = get(ConfigMap.class, "configmap1");
337+
assertThat(cm).isNotNull();
338+
var cr = get(TestCustomResource.class, "testcr1");
339+
assertThat(cr.getStatus()).isNotNull();
340+
assertThat(cr.getStatus().getValue()).isEqualTo(cm.getMetadata().getResourceVersion());
341+
});
342+
343+
delete(glue);
344+
345+
await().timeout(TestUtils.GC_WAIT_TIMEOUT).untilAsserted(() -> {
346+
var cm = get(ConfigMap.class, "configmap1");
347+
assertThat(cm).isNull();
348+
});
349+
350+
delete(customResource);
351+
}
352+
353+
354+
327355
private List<Glue> testWorkflowList(int num) {
328356
List<Glue> res = new ArrayList<>();
329357
IntStream.range(0, num).forEach(index -> {

src/test/java/io/javaoperatorsdk/operator/glue/TestBase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
import io.fabric8.kubernetes.client.KubernetesClient;
1414
import io.fabric8.kubernetes.client.dsl.NonDeletingOperation;
1515
import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil;
16+
import io.javaoperatorsdk.operator.glue.customresource.glue.Glue;
1617

1718
import jakarta.inject.Inject;
1819

20+
import static io.javaoperatorsdk.operator.glue.TestUtils.loadGlue;
1921
import static org.assertj.core.api.Assertions.assertThat;
2022
import static org.awaitility.Awaitility.await;
2123

@@ -51,6 +53,10 @@ protected Namespace testNamespace(String name) {
5153
.build()).build();
5254
}
5355

56+
protected Glue createGlue(String path) {
57+
return create(loadGlue(path));
58+
}
59+
5460
protected <T extends HasMetadata> T create(T resource) {
5561
return client.resource(resource).inNamespace(testNamespace).create();
5662
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: io.javaoperatorsdk.operator.glue/v1beta1
2+
kind: Glue
3+
metadata:
4+
name: related-resource-status-patch
5+
spec:
6+
childResources:
7+
- name: configMap1
8+
resource:
9+
apiVersion: v1
10+
kind: ConfigMap
11+
metadata:
12+
name: configmap1
13+
data:
14+
key: "value"
15+
relatedResources:
16+
- name: related
17+
apiVersion: "io.javaoperatorsdk.operator.glue/v1"
18+
kind: TestCustomResource
19+
resourceNames: ["testcr1"]
20+
statusPatch:
21+
value: "{configMap1.metadata.resourceVersion}"

0 commit comments

Comments
 (0)