diff --git a/pkg/app/two_pass_renderer.go b/pkg/app/two_pass_renderer.go index 0907b496..2b927ec4 100644 --- a/pkg/app/two_pass_renderer.go +++ b/pkg/app/two_pass_renderer.go @@ -116,15 +116,13 @@ func (r *desiredStateLoader) twoPassRenderTemplateToYaml(inherited, overrode *en r.logger.Debugf("first-pass rendering result of \"%s\": %v", filename, *finalEnv) } - vals := map[string]interface{}{} + vals, err := finalEnv.GetMergedValues() + if err != nil { + return nil, err + } + if prestate != nil { prestate.Env = *finalEnv - vals, err = prestate.Values() - if err != nil { - return nil, err - } - } - if prestate != nil { r.logger.Debugf("vals:\n%v\ndefaultVals:%v", vals, prestate.DefaultValues) } diff --git a/pkg/environment/environment.go b/pkg/environment/environment.go index ba95213f..29579ed0 100644 --- a/pkg/environment/environment.go +++ b/pkg/environment/environment.go @@ -64,3 +64,22 @@ func (e *Environment) Merge(other *Environment) (*Environment, error) { } return ©, nil } + +func (e *Environment) GetMergedValues() (map[string]interface{}, error) { + vals := map[string]interface{}{} + + if err := mergo.Merge(&vals, e.Defaults, mergo.WithOverride, mergo.WithOverwriteWithEmptyValue); err != nil { + return nil, err + } + + if err := mergo.Merge(&vals, e.Values, mergo.WithOverride, mergo.WithOverwriteWithEmptyValue); err != nil { + return nil, err + } + + vals, err := maputil.CastKeysToStrings(vals) + if err != nil { + return nil, err + } + + return vals, nil +} diff --git a/pkg/state/state_exec_tmpl.go b/pkg/state/state_exec_tmpl.go index aa590ec5..68f0af7f 100644 --- a/pkg/state/state_exec_tmpl.go +++ b/pkg/state/state_exec_tmpl.go @@ -4,28 +4,12 @@ import ( "fmt" "reflect" - "github.com/imdario/mergo" - "github.com/roboll/helmfile/pkg/maputil" "github.com/roboll/helmfile/pkg/tmpl" "gopkg.in/yaml.v2" ) func (st *HelmState) Values() (map[string]interface{}, error) { - vals := map[string]interface{}{} - - if err := mergo.Merge(&vals, st.Env.Defaults, mergo.WithOverride, mergo.WithOverwriteWithEmptyValue); err != nil { - return nil, err - } - if err := mergo.Merge(&vals, st.Env.Values, mergo.WithOverride, mergo.WithOverwriteWithEmptyValue); err != nil { - return nil, err - } - - vals, err := maputil.CastKeysToStrings(vals) - if err != nil { - return nil, err - } - - return vals, nil + return st.Env.GetMergedValues() } func (st *HelmState) mustLoadVals() map[string]interface{} {