Skip to content

Commit 7c0accc

Browse files
committed
improve: double bracket in object template
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 0a8d185 commit 7c0accc

File tree

6 files changed

+41
-16
lines changed

6 files changed

+41
-16
lines changed

src/main/java/io/javaoperatorsdk/operator/glue/dependent/GenericBulkDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public GenericBulkDependentResource(GenericTemplateHandler genericTemplateHandle
2929
public Map<String, GenericKubernetesResource> desiredResources(Glue primary,
3030
Context<Glue> context) {
3131

32-
var res = genericTemplateHandler.processTemplate(desiredTemplate, primary, context);
32+
var res = genericTemplateHandler.processTemplate(desiredTemplate, primary, false, context);
3333
var desiredList = Serialization.unmarshal(res, GenericKubernetesResourceList.class).getItems();
3434
desiredList.forEach(r -> {
3535
r.getMetadata().getAnnotations()

src/main/java/io/javaoperatorsdk/operator/glue/dependent/GenericDependentResource.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ public GenericDependentResource(GenericTemplateHandler genericTemplateHandler,
5555
@Override
5656
protected GenericKubernetesResource desired(Glue primary,
5757
Context<Glue> context) {
58+
boolean objectTemplate = desired != null;
59+
var template = objectTemplate ? Serialization.asYaml(desired) : desiredTemplate;
5860

59-
var template = desired == null ? desiredTemplate : Serialization.asYaml(desired);
60-
61-
var res = genericTemplateHandler.processTemplate(template, primary, context);
61+
var res = genericTemplateHandler.processTemplate(template, primary, objectTemplate, context);
6262
var resultDesired = Serialization.unmarshal(res, GenericKubernetesResource.class);
6363

6464
resultDesired.getMetadata().getAnnotations()

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ private void createAndAddDependentToWorkflow(Glue primary, Context<Glue> context
195195
// todo test processing ns as template
196196
// name can reference related resources todo doc
197197
var targetNamespace = Utils.getNamespace(spec).map(ns -> genericTemplateHandler
198-
.processTemplate(ns, primary, context));
198+
.processTemplate(ns, primary, false, context));
199199
var resourceInSameNamespaceAsPrimary =
200200
targetNamespace.map(n -> n.trim().equals(primary.getMetadata().getNamespace().trim()))
201201
.orElse(true);
@@ -205,7 +205,7 @@ private void createAndAddDependentToWorkflow(Glue primary, Context<Glue> context
205205

206206
if (!(dr instanceof BulkDependentResource<?, ?>)) {
207207
dr.setResourceDiscriminator(new GenericResourceDiscriminator(dr.getGroupVersionKind(),
208-
genericTemplateHandler.processTemplate(Utils.getName(spec), primary, context),
208+
genericTemplateHandler.processTemplate(Utils.getName(spec), primary, false, context),
209209
targetNamespace.orElse(null)));
210210
}
211211

@@ -267,10 +267,11 @@ private void patchRelatedResourcesStatus(Context<Glue> context,
267267
targetRelatedResources.forEach(r -> {
268268
var relatedResources = Utils.getRelatedResources(primary, r, context);
269269

270-
var template = r.getStatusPatchTemplate() != null ? r.getStatusPatchTemplate()
271-
: Serialization.asYaml(r.getStatusPatch());
270+
var objectTemplate = r.getStatusPatch() != null;
271+
var template =
272+
objectTemplate ? Serialization.asYaml(r.getStatusPatch()) : r.getStatusPatchTemplate();
272273
var resultTemplate =
273-
genericTemplateHandler.processTemplate(actualData, template);
274+
genericTemplateHandler.processTemplate(actualData, template, objectTemplate);
274275
var statusObjectMap = GenericTemplateHandler.parseTemplateToMapObject(resultTemplate);
275276
relatedResources.forEach((n, kr) -> {
276277
kr.setAdditionalProperty("status", statusObjectMap);

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,10 @@ private ObjectMeta glueMetadata(GlueOperator glueOperator,
144144
if (glueMeta != null) {
145145
// optimize
146146
var data = Map.of(PARENT_RELATED_RESOURCE_NAME, parent);
147-
var glueName = genericTemplateHandler.processInputAndTemplate(data, glueMeta.getName());
147+
var glueName =
148+
genericTemplateHandler.processInputAndTemplate(data, glueMeta.getName(), false);
148149
var glueNamespace =
149-
genericTemplateHandler.processInputAndTemplate(data, glueMeta.getNamespace());
150+
genericTemplateHandler.processInputAndTemplate(data, glueMeta.getNamespace(), false);
150151
objectMetaBuilder.withName(glueName);
151152
objectMetaBuilder.withNamespace(glueNamespace);
152153
} else {

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,31 @@ public class GenericTemplateHandler {
2323
private static final ObjectMapper objectMapper = new ObjectMapper();
2424
private static final Engine engine = Engine.builder().addDefaults().build();
2525

26-
public String processTemplate(Map<String, Map<?, ?>> data, String template) {
26+
public String processTemplate(Map<String, Map<?, ?>> data, String template,
27+
boolean objectTemplate) {
28+
if (objectTemplate) {
29+
template = handleDoubleCurlyBrackets(template);
30+
}
2731
Template parsedTemplate = engine.parse(template);
2832
return parsedTemplate.data(data).render();
2933
}
3034

35+
private String handleDoubleCurlyBrackets(String template) {
36+
template = template.replace("\"{{", "{");
37+
return template.replace("}}\n", "}");
38+
}
39+
3140
public String processInputAndTemplate(Map<String, GenericKubernetesResource> data,
32-
String template) {
41+
String template, boolean objectTemplate) {
3342
Map<String, Map<?, ?>> res =
3443
genericKubernetesResourceDataToGenericData(data);
35-
return processTemplate(res, template);
44+
return processTemplate(res, template, objectTemplate);
3645
}
3746

38-
public String processTemplate(String template, Glue primary,
47+
public String processTemplate(String template, Glue primary, boolean objectTemplate,
3948
Context<Glue> context) {
4049
var data = createDataWithResources(primary, context);
41-
return processTemplate(data, template);
50+
return processTemplate(data, template, objectTemplate);
4251
}
4352

4453
private static Map<String, Map<?, ?>> genericKubernetesResourceDataToGenericData(
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.javaoperatorsdk.operator.glue.templating;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
class GenericTemplateHandlerTest {
8+
9+
@Test
10+
void testDoubleCurlyBrackets() {
11+
fail();
12+
}
13+
14+
}

0 commit comments

Comments
 (0)