Skip to content

Commit

Permalink
feat: cross reference sample (#73)
Browse files Browse the repository at this point in the history
Signed-off-by: Attila Mészáros <csviri@gmail.com>
  • Loading branch information
csviri authored Apr 9, 2024
1 parent 22b41af commit a876f98
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
39 changes: 39 additions & 0 deletions src/test/java/io/csviri/operator/resourceglue/GlueTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,45 @@ void simpleTemplating() {
});
}


@Test
void crossReferenceResource() {
Glue glue =
TestUtils.loadResoureFlow("/resourceglue/CrossReferenceResource.yaml");
glue = create(glue);

await().untilAsserted(() -> {
var cm1 = get(ConfigMap.class, "cm-1");
var cm2 = get(ConfigMap.class, "cm-2");
assertThat(cm1).isNotNull();
assertThat(cm2).isNotNull();

assertThat(cm2.getData()).containsEntry("valueFromCM1", "value1");
});

var resourceTemplate =
glue.getSpec().getResources().stream().filter(r -> r.getName().equals("configMap1"))
.findAny().orElseThrow().getResource();
// set new value
((Map<String, String>) resourceTemplate.getAdditionalProperties().get("data")).put("key",
"value2");
glue = update(glue);

await().untilAsserted(() -> {
var cm2 = get(ConfigMap.class, "cm-2");
assertThat(cm2.getData()).containsEntry("valueFromCM1", "value2");
});

delete(glue);

await().untilAsserted(() -> {
var cm1 = get(ConfigMap.class, "cm-1");
var cm2 = get(ConfigMap.class, "cm-2");
assertThat(cm1).isNull();
assertThat(cm2).isNull();
});
}

@SuppressWarnings("unchecked")
@Test
void javaScriptCondition() {
Expand Down
27 changes: 27 additions & 0 deletions src/test/resources/resourceglue/CrossReferenceResource.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: io.csviri.operator.resourceglue/v1beta1
kind: Glue
metadata:
name: "crossreference"
spec:
resources:
- name: configMap1
resource:
apiVersion: v1
kind: ConfigMap
metadata:
name: "cm-1"
data:
key: "value1"
- name: configMap2
dependsOn:
- configMap1
resource:
apiVersion: v1
kind: ConfigMap
metadata:
name: "cm-2"
data:
valueFromCM1: "{configMap1.data.key}"



0 comments on commit a876f98

Please sign in to comment.