Skip to content

Commit 845f46f

Browse files
committed
Templating scope for generated results
This adds the generated data to a .element scope in the templates to make it easier to add additional data without overwriting the changes.
1 parent 183aabc commit 845f46f

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

controllers/templates/renderer.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"context"
66
"fmt"
77
"io"
8+
"log"
89
"reflect"
910
"text/template"
1011

@@ -94,8 +95,14 @@ func render(b []byte, params map[string]any) ([]byte, error) {
9495
return nil, fmt.Errorf("failed to parse template: %w", err)
9596
}
9697

98+
data := map[string]any{
99+
"element": params,
100+
}
101+
102+
log.Printf("KEVIN!!!!! %#v", data)
103+
97104
var out bytes.Buffer
98-
if err := t.Execute(&out, params); err != nil {
105+
if err := t.Execute(&out, data); err != nil {
99106
return nil, fmt.Errorf("failed to render template: %w", err)
100107
}
101108

controllers/templates/renderer_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func TestRender(t *testing.T) {
6363
s.Spec.Templates = []templatesv1.GitOpsSetTemplate{
6464
{
6565
Content: runtime.RawExtension{
66-
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{sanitize .env}}-demo"})),
66+
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ sanitize .element.env }}-demo"})),
6767
},
6868
},
6969
}
@@ -86,12 +86,12 @@ func TestRender(t *testing.T) {
8686
s.Spec.Templates = []templatesv1.GitOpsSetTemplate{
8787
{
8888
Content: runtime.RawExtension{
89-
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .env}}-demo1"})),
89+
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .element.env }}-demo1"})),
9090
},
9191
},
9292
{
9393
Content: runtime.RawExtension{
94-
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .env}}-demo2"})),
94+
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .element.env }}-demo2"})),
9595
},
9696
},
9797
}
@@ -185,7 +185,7 @@ func makeTestGitOpsSet(t *testing.T, opts ...func(*templatesv1.GitOpsSet)) *temp
185185
Templates: []templatesv1.GitOpsSetTemplate{
186186
{
187187
Content: runtime.RawExtension{
188-
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{.env}}-demo"})),
188+
Raw: mustMarshalJSON(t, makeTestService(types.NamespacedName{Name: "{{ .element.env }}-demo"})),
189189
},
190190
},
191191
},
@@ -208,11 +208,11 @@ func makeTestService(name types.NamespacedName, opts ...func(*corev1.Service)) *
208208
Name: name.Name,
209209
Namespace: name.Namespace,
210210
Annotations: map[string]string{
211-
"app.kubernetes.io/instance": "{{ .env }}",
211+
"app.kubernetes.io/instance": "{{ .element.env }}",
212212
},
213213
},
214214
Spec: corev1.ServiceSpec{
215-
ClusterIP: "{{ .externalIP }}",
215+
ClusterIP: "{{ .element.externalIP }}",
216216
Ports: []corev1.ServicePort{
217217
{
218218
Name: "http",

examples/list-generator/list-generator.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ spec:
2323
kind: Kustomization
2424
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
2525
metadata:
26-
name: "{{ .env }}-demo"
26+
name: "{{ .element.env }}-demo"
2727
labels:
2828
app.kubernetes.io/name: go-demo
29-
app.kubernetes.io/instance: "{{ .env }}"
29+
app.kubernetes.io/instance: "{{ .element.env }}"
3030
com.example/team: "{{ .team }}"
3131
spec:
3232
interval: 5m
33-
path: "./examples/kustomize/environments/{{ .env }}"
33+
path: "./examples/kustomize/environments/{{ .element.env }}"
3434
prune: true
3535
sourceRef:
3636
kind: GitRepository

0 commit comments

Comments
 (0)