Allow combining valuesTemplate and values, same for setTemplate (#938)
* Allow combining valuesTemplate and values, same for setTemplate * Add testcase for valuesTemplate and setTemplate
This commit is contained in:
parent
990d31c667
commit
b99daa3605
|
|
@ -3596,6 +3596,64 @@ myrelease4 true id:myrelease1
|
|||
assert.Equal(t, expected, out)
|
||||
}
|
||||
|
||||
func TestSetValuesTemplate(t *testing.T) {
|
||||
files := map[string]string{
|
||||
"/path/to/helmfile.yaml": `
|
||||
releases:
|
||||
- name: zipkin
|
||||
chart: stable/zipkin
|
||||
values:
|
||||
- val2: "val2"
|
||||
valuesTemplate:
|
||||
- val1: '{{"{{ .Release.Name }}"}}'
|
||||
set:
|
||||
- name: "name"
|
||||
value: "val"
|
||||
setTemplate:
|
||||
- name: name-{{"{{ .Release.Name }}"}}
|
||||
value: val-{{"{{ .Release.Name }}"}}
|
||||
`,
|
||||
}
|
||||
expectedValues := []interface{}{
|
||||
map[interface{}]interface{}{"val1": "zipkin"},
|
||||
map[interface{}]interface{}{"val2": "val2"}}
|
||||
expectedSetValues := []state.SetValue{
|
||||
state.SetValue{Name: "name-zipkin", Value: "val-zipkin"},
|
||||
state.SetValue{Name: "name", Value: "val"}}
|
||||
|
||||
app := appWithFs(&App{
|
||||
KubeContext: "default",
|
||||
Logger: helmexec.NewLogger(os.Stderr, "debug"),
|
||||
Env: "default",
|
||||
}, files)
|
||||
|
||||
var specs []state.ReleaseSpec
|
||||
collectReleases := func(st *state.HelmState, helm helmexec.Interface) []error {
|
||||
specs = append(specs, st.Releases...)
|
||||
return nil
|
||||
}
|
||||
|
||||
err := app.VisitDesiredStatesWithReleasesFiltered(
|
||||
"helmfile.yaml", collectReleases,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
if len(specs) != 1 {
|
||||
t.Fatalf("expected 1 release; got %d releases", len(specs))
|
||||
}
|
||||
actualValues := specs[0].Values
|
||||
actualSetValues := specs[0].SetValues
|
||||
|
||||
if !reflect.DeepEqual(expectedValues, actualValues) {
|
||||
t.Errorf("expected values: %v; got values: %v", expectedValues, actualValues)
|
||||
}
|
||||
if !reflect.DeepEqual(expectedSetValues, actualSetValues) {
|
||||
t.Errorf("expected set: %v; got set: %v", expectedValues, actualValues)
|
||||
}
|
||||
}
|
||||
|
||||
func location() string {
|
||||
_, fn, line, _ := runtime.Caller(1)
|
||||
return fmt.Sprintf("%s:%d", filepath.Base(fn), line)
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R
|
|||
result.Labels[key] = s.String()
|
||||
}
|
||||
|
||||
if result.ValuesTemplate != nil && len(result.ValuesTemplate) > 0 {
|
||||
if len(result.ValuesTemplate) > 0 {
|
||||
for i, t := range result.ValuesTemplate {
|
||||
switch ts := t.(type) {
|
||||
case map[interface{}]interface{}:
|
||||
|
|
@ -117,7 +117,9 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R
|
|||
}
|
||||
}
|
||||
|
||||
result.Values = result.ValuesTemplate
|
||||
var newvals []interface{}
|
||||
newvals = append(newvals, result.ValuesTemplate...)
|
||||
result.Values = append(newvals, result.Values...)
|
||||
}
|
||||
|
||||
for i, t := range result.Values {
|
||||
|
|
@ -139,7 +141,7 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R
|
|||
result.Secrets[i] = s.String()
|
||||
}
|
||||
|
||||
if result.SetValuesTemplate != nil && len(result.SetValuesTemplate) > 0 {
|
||||
if len(result.SetValuesTemplate) > 0 {
|
||||
for i, val := range result.SetValuesTemplate {
|
||||
{
|
||||
// name
|
||||
|
|
@ -178,7 +180,9 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R
|
|||
}
|
||||
}
|
||||
|
||||
result.SetValues = result.SetValuesTemplate
|
||||
var newvals []SetValue
|
||||
newvals = append(newvals, result.SetValuesTemplate...)
|
||||
result.SetValues = append(newvals, result.SetValues...)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
|
|
|
|||
Loading…
Reference in New Issue