feat: execute templates against postRendererHooks
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
						c5d44414b1
					
				| 
						 | 
				
			
			@ -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