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 | 			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 | 		env = &finalState.Env | ||||||
| 
 | 
 | ||||||
| 		ld.logger.Debugf("merged environment: %v", 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() | 		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 { | 	if len(result.ValuesTemplate) > 0 { | ||||||
| 		for i, t := range result.ValuesTemplate { | 		for i, t := range result.ValuesTemplate { | ||||||
| 			switch ts := t.(type) { | 			switch ts := t.(type) { | ||||||
|  |  | ||||||
|  | @ -123,6 +123,29 @@ func TestHelmState_executeTemplates(t *testing.T) { | ||||||
| 				Values:    []any{map[string]any{"key": "app-val0"}}, | 				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 { | 	for i := range tests { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue