From c170b5a62173872158ed424e7bcf3504bede9474 Mon Sep 17 00:00:00 2001 From: Yusuke Kuoka Date: Tue, 13 Oct 2020 09:33:49 +0900 Subject: [PATCH] Minor tweaks for `helmfile write-values` (#1533) See 1 and 3 in https://github.com/roboll/helmfile/issues/1460#issuecomment-691863465 --- pkg/app/app.go | 39 +++++++++++++++------------------------ pkg/state/state.go | 2 +- 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/pkg/app/app.go b/pkg/app/app.go index 746179c7..d62571b0 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -1449,8 +1449,6 @@ func (a *App) writeValues(r *Run, c WriteValuesConfigProvider) (bool, []error) { st := r.state helm := r.helm - allReleases := st.GetReleasesWithOverrides() - toRender, err := a.getSelectedReleases(r) if err != nil { return false, []error{err} @@ -1474,32 +1472,25 @@ func (a *App) writeValues(r *Run, c WriteValuesConfigProvider) (bool, []error) { var errs []error - // Traverse DAG of all the releases so that we don't suffer from false-positive missing dependencies - st.Releases = allReleases - + // Note: We don't calculate the DAG of releases here unlike other helmfile operations, + // because there's no need to do so for just writing values. + // See the first bullet in https://github.com/roboll/helmfile/issues/1460#issuecomment-691863465 if len(releasesToWrite) > 0 { - _, writeErrs := withDAG(st, helm, a.Logger, false, a.Wrap(func(subst *state.HelmState, helm helmexec.Interface) []error { - var rs []state.ReleaseSpec + var rs []state.ReleaseSpec - for _, r := range subst.Releases { - if r2, ok := releasesToWrite[state.ReleaseToID(&r)]; ok { - rs = append(rs, r2) - } - } - - subst.Releases = rs - - opts := &state.WriteValuesOpts{ - Set: c.Set(), - OutputFileTemplate: c.OutputFileTemplate(), - } - return subst.WriteReleasesValues(helm, c.Values(), opts) - })) - - if writeErrs != nil && len(writeErrs) > 0 { - errs = append(errs, writeErrs...) + for _, r := range releasesToWrite { + rs = append(rs, r) } + + st.Releases = rs + + opts := &state.WriteValuesOpts{ + Set: c.Set(), + OutputFileTemplate: c.OutputFileTemplate(), + } + errs = st.WriteReleasesValues(helm, c.Values(), opts) } + return true, errs } diff --git a/pkg/state/state.go b/pkg/state/state.go index d7c9d619..0faa670f 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -2651,7 +2651,7 @@ func (st *HelmState) GenerateOutputFilePath(release *ReleaseSpec, outputFileTemp sb.WriteString(release.Name) if outputFileTemplate == "" { - outputFileTemplate = filepath.Join("{{ .State.BaseName }}-{{ .State.AbsPathSHA1 }}", "{{ .Release.Name}}.yaml") + outputFileTemplate = filepath.Join("{{ .State.BaseName }}-{{ .State.AbsPathSHA1 }}", "{{ .Release.Name }}.yaml") } t, err := template.New("output-file").Parse(outputFileTemplate)