diff --git a/pkg/app/app.go b/pkg/app/app.go index 1e7c5887..3d95ab97 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -2299,7 +2299,12 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) { func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state.HelmState) []error) (bool, []error) { st := r.state - selectedReleases, deduplicated, err := a.getSelectedReleases(r, false, false) + includeNeeds := c.IncludeNeeds() + if c.IncludeTransitiveNeeds() { + includeNeeds = true + } + + selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, includeNeeds, c.IncludeTransitiveNeeds()) if err != nil { return false, []error{err} } @@ -2311,18 +2316,13 @@ func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state // Without this, `PlanReleases` conflates duplicates and return both in `batches`, // even if we provided `SelectedReleases: selectedReleases`. // See https://github.com/roboll/helmfile/issues/1818 for more context. - st.Releases = deduplicated - - includeNeeds := c.IncludeNeeds() - if c.IncludeTransitiveNeeds() { - includeNeeds = true - } + st.Releases = selectedAndNeededReleases batches, err := st.PlanReleases(state.PlanOptions{ Reverse: false, SelectedReleases: selectedReleases, - IncludeNeeds: includeNeeds, - IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(), + IncludeNeeds: false, + IncludeTransitiveNeeds: false, SkipNeeds: c.SkipNeeds(), }) diff --git a/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_direct_need b/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_direct_need index 538e191f..b6c63520 100644 --- a/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_direct_need +++ b/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_direct_need @@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]} WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs 1 release(s) matching name=test2 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 +1 default//test2 -processing releases in group 1/2: default/kube-system/disabled -processing releases in group 2/2: default//test2 +processing releases in group 1/1: default//test2 WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs Affected releases are: disabled (incubator/raw) DELETED