feat: execute templates against postRendererHooks (#1839)
This commit is supposed to add template support to post renderer args. Also, to make it possible to template arguments that are added to helm defaults, during the load, I'm removing default post renderer args from the state and putting them to each release, unless custom args are defined for the release. Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
parent
9dc0aaa1e7
commit
b5eb879357
|
|
@ -249,6 +249,14 @@ func (ld *desiredStateLoader) load(env, overrodeEnv *environment.Environment, ba
|
|||
finalState.RenderedValues = currentState.RenderedValues
|
||||
}
|
||||
|
||||
if len(finalState.HelmDefaults.PostRendererArgs) > 0 {
|
||||
for i := range finalState.Releases {
|
||||
if len(finalState.Releases[i].PostRendererArgs) == 0 {
|
||||
finalState.Releases[i].PostRendererArgs = finalState.HelmDefaults.PostRendererArgs
|
||||
}
|
||||
}
|
||||
finalState.HelmDefaults.PostRendererArgs = nil
|
||||
}
|
||||
env = &finalState.Env
|
||||
|
||||
ld.logger.Debugf("merged environment: %v", env)
|
||||
|
|
|
|||
|
|
@ -90,6 +90,18 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R
|
|||
result.Labels[key] = s.String()
|
||||
}
|
||||
|
||||
{
|
||||
postRendererArgs := []string{}
|
||||
for _, ts := range result.PostRendererArgs {
|
||||
postRendererArg, err := renderer.RenderTemplateContentToString([]byte(ts))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed executing template expressions in release \"%s\".postRendererArgs = \"%s\": %v", r.Name, ts, err)
|
||||
}
|
||||
postRendererArgs = append(postRendererArgs, postRendererArg)
|
||||
}
|
||||
result.PostRendererArgs = postRendererArgs
|
||||
}
|
||||
|
||||
if len(result.ValuesTemplate) > 0 {
|
||||
for i, t := range result.ValuesTemplate {
|
||||
switch ts := t.(type) {
|
||||
|
|
|
|||
|
|
@ -123,6 +123,29 @@ func TestHelmState_executeTemplates(t *testing.T) {
|
|||
Values: []any{map[string]any{"key": "app-val0"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Has template expressions in post renderer args",
|
||||
input: ReleaseSpec{
|
||||
Chart: "test-chart",
|
||||
PostRendererArgs: []string{
|
||||
"--release",
|
||||
"{{ .Release.Name }}",
|
||||
"--chart",
|
||||
"{{ .Release.Chart }}",
|
||||
},
|
||||
Name: "test-release",
|
||||
},
|
||||
want: ReleaseSpec{
|
||||
Chart: "test-chart",
|
||||
Name: "test-release",
|
||||
PostRendererArgs: []string{
|
||||
"--release",
|
||||
"test-chart-dev",
|
||||
"--chart",
|
||||
"test-chart",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for i := range tests {
|
||||
|
|
|
|||
Loading…
Reference in New Issue