From ed823115f144d862a36e05de510e138b003cf72e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 00:12:22 +0000 Subject: [PATCH] fix: restore SelectedReleases handling in GroupReleasesByDependency and revert snapshots The root cause of the CI failure was that GroupReleasesByDependency was changed to use !r.Filtered instead of opts.SelectedReleases for the DAG plan's Only field. When no selectors are active (like helmfile destroy), all releases are unfiltered, causing all releases to be planned for deletion - including uninstalled ones. Fix: Use opts.SelectedReleases when provided, fall back to Filtered flag otherwise. Also remove unnecessary SelectedReleases block from PlanReleases since GroupReleasesByDependency now handles it directly. Restore test snapshots from main as the behavior should now match. Co-authored-by: yxxhero <11087727+yxxhero@users.noreply.github.com> Agent-Logs-Url: https://github.com/helmfile/helmfile/sessions/170cecc0-7a3e-4326-98d3-4f2bffee1848 --- pkg/app/testdata/app_diff_test/include-needs | 16 +++++----- ...ds_should_not_fail_on_disabled_direct_need | 11 +++++-- ...hould_not_fail_on_disabled_transitive_need | 15 ++++++---- ...ds_should_not_fail_on_disabled_direct_need | 8 +++-- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- .../testdata/app_diff_test_1/bar_is_disabled | 4 +-- .../delete_bar_when_bar_needs_foo | 6 ++-- .../delete_bar_when_foo_needs_bar | 14 ++------- ...ete_bar_when_foo_needs_bar_with_skip-needs | 8 ++--- .../delete_foo_when_bar_needs_foo | 14 ++------- ...ete_foo_when_bar_needs_foo_with_skip-needs | 8 ++--- .../delete_foo_when_foo_needs_bar | 6 ++-- pkg/app/testdata/app_diff_test_1/noop | 6 ++-- pkg/app/testdata/app_diff_test_1/smoke | 8 ++--- .../delete_bar_when_bar_needs_foo | 6 ++-- .../delete_bar_when_foo_needs_bar | 14 ++------- ...ete_bar_when_foo_needs_bar_with_skip-needs | 8 ++--- .../delete_foo_when_bar_needs_foo | 14 ++------- .../delete_foo_when_foo_needs_bar | 6 ++-- pkg/app/testdata/app_diff_test_2/noop | 6 ++-- pkg/app/testdata/app_diff_test_2/smoke | 8 ++--- pkg/app/testdata/app_lint_test/include-needs | 16 +++++----- ...ds_should_not_fail_on_disabled_direct_need | 8 +++-- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- ...ds_should_not_fail_on_disabled_direct_need | 8 +++-- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- .../testdata/app_template_test/include-needs | 16 +++++----- ...ds_should_not_fail_on_disabled_direct_need | 8 +++-- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- ...ds_should_not_fail_on_disabled_direct_need | 8 +++-- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- ...hould_not_fail_on_disabled_transitive_need | 12 ++++---- .../testdata/app_unittest_test/include-needs | 16 +++++----- .../delete_bar_when_bar_needs_foo/log | 12 +++----- .../delete_bar_when_foo_needs_bar/log | 18 +++++------ .../delete_foo_when_bar_needs_foo/log | 18 +++++------ .../delete_foo_when_foo_needs_bar/log | 12 +++----- pkg/app/testdata/testapply/smoke/log | 24 ++++++--------- .../bar_and_ns2/bar_is_disabled/log | 12 ++++---- .../include-transitive-needs=true/log | 2 +- .../log | 19 ++++++++++-- .../log | 8 +++-- .../log | 6 ++-- .../log | 19 ++++++++++-- .../log | 8 +++-- .../log | 6 ++-- pkg/state/state_run.go | 30 +++++++++---------- 49 files changed, 271 insertions(+), 285 deletions(-) diff --git a/pkg/app/testdata/app_diff_test/include-needs b/pkg/app/testdata/app_diff_test/include-needs index ed985d09..2e043346 100644 --- a/pkg/app/testdata/app_diff_test/include-needs +++ b/pkg/app/testdata/app_diff_test/include-needs @@ -2,12 +2,14 @@ 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 2 release(s) matching app=test found in helmfile.yaml -processing 3 groups of releases in this order: +processing 4 groups of releases in this order: GROUP RELEASES -1 default/kube-system/kubernetes-external-secrets -2 default/default/external-secrets -3 default/default/my-release +1 default/kube-system/logging +2 default/kube-system/kubernetes-external-secrets +3 default/default/external-secrets +4 default/default/my-release -processing releases in group 1/3: default/kube-system/kubernetes-external-secrets -processing releases in group 2/3: default/default/external-secrets -processing releases in group 3/3: default/default/my-release +processing releases in group 1/4: default/kube-system/logging +processing releases in group 2/4: default/kube-system/kubernetes-external-secrets +processing releases in group 3/4: default/default/external-secrets +processing releases in group 4/4: default/default/my-release 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 11b5a896..538e191f 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,9 +2,14 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//test2 +1 default/kube-system/disabled +2 default//test2 -processing releases in group 1/1: default//test2 +processing releases in group 1/2: default/kube-system/disabled +processing releases in group 2/2: 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 + diff --git a/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_transitive_need index b8b28277..374768b4 100644 --- a/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_diff_test/include-needs_should_not_fail_on_disabled_transitive_need @@ -2,11 +2,16 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 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 + diff --git a/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need b/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need index b6c63520..538e191f 100644 --- a/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need +++ b/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need @@ -2,11 +2,13 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//test2 +1 default/kube-system/disabled +2 default//test2 -processing releases in group 1/1: default//test2 +processing releases in group 1/2: default/kube-system/disabled +processing releases in group 2/2: 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 diff --git a/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need index 94cc476c..374768b4 100644 --- a/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_diff_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need @@ -2,13 +2,15 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 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 diff --git a/pkg/app/testdata/app_diff_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_diff_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need index 94cc476c..374768b4 100644 --- a/pkg/app/testdata/app_diff_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_diff_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need @@ -2,13 +2,15 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 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 diff --git a/pkg/app/testdata/app_diff_test_1/bar_is_disabled b/pkg/app/testdata/app_diff_test_1/bar_is_disabled index bf059104..c28d87bc 100644 --- a/pkg/app/testdata/app_diff_test_1/bar_is_disabled +++ b/pkg/app/testdata/app_diff_test_1/bar_is_disabled @@ -3,10 +3,10 @@ merged environment: &{default map[] map[] map[]} processing 2 groups of releases in this order: GROUP RELEASES -1 default/ns1/bar, default/ns2/bar +1 default/ns1/bar 2 default/ns1/foo -processing releases in group 1/2: default/ns1/bar, default/ns2/bar +processing releases in group 1/2: default/ns1/bar processing releases in group 2/2: default/ns1/foo Affected releases are: bar (mychart2) DELETED diff --git a/pkg/app/testdata/app_diff_test_1/delete_bar_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_1/delete_bar_when_bar_needs_foo index cf7dd6b4..2e1dadd2 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_bar_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_1/delete_bar_when_bar_needs_foo @@ -1,13 +1,11 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//foo -2 default//bar -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar +processing releases in group 1/1: default//foo Affected releases are: bar (mychart2) DELETED foo (mychart1) UPDATED diff --git a/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar index d0e53b18..f135653d 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar @@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]} WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: -GROUP RELEASES -1 default//bar -2 default//foo - -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo -WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs -Affected releases are: - bar (mychart2) DELETED - foo (mychart1) UPDATED - +err: release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +Failed to clean up temporary files generated while processing "helmfile.yaml": release "default//foo" depends on "default//bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies diff --git a/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs index d0e53b18..423dcd31 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs +++ b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs @@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]} WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES -1 default//bar -2 default//foo +1 default//foo -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo +processing releases in group 1/1: default//foo WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs Affected releases are: bar (mychart2) DELETED diff --git a/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo index 3ba64bfa..80e1e748 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo @@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]} WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: -GROUP RELEASES -1 default//foo -2 default//bar - -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar -WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs -Affected releases are: - bar (mychart2) UPDATED - foo (mychart1) DELETED - +err: release "default//bar" depends on "default//foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +Failed to clean up temporary files generated while processing "helmfile.yaml": release "default//bar" depends on "default//foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies diff --git a/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_skip-needs b/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_skip-needs index 3ba64bfa..66b8126d 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_skip-needs +++ b/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_skip-needs @@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]} WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES -1 default//foo -2 default//bar +1 default//bar -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar +processing releases in group 1/1: default//bar WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs Affected releases are: bar (mychart2) UPDATED diff --git a/pkg/app/testdata/app_diff_test_1/delete_foo_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_1/delete_foo_when_foo_needs_bar index 0489bb59..41b61c6b 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_foo_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_1/delete_foo_when_foo_needs_bar @@ -1,13 +1,11 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//bar -2 default//foo -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo +processing releases in group 1/1: default//bar Affected releases are: bar (mychart2) UPDATED foo (mychart1) DELETED diff --git a/pkg/app/testdata/app_diff_test_1/noop b/pkg/app/testdata/app_diff_test_1/noop index 108de434..fadc03f0 100644 --- a/pkg/app/testdata/app_diff_test_1/noop +++ b/pkg/app/testdata/app_diff_test_1/noop @@ -1,11 +1,9 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//bar -2 default//foo -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo +processing releases in group 1/1: default//bar No affected releases diff --git a/pkg/app/testdata/app_diff_test_1/smoke b/pkg/app/testdata/app_diff_test_1/smoke index 43f15041..796556ee 100644 --- a/pkg/app/testdata/app_diff_test_1/smoke +++ b/pkg/app/testdata/app_diff_test_1/smoke @@ -6,14 +6,14 @@ GROUP RELEASES 1 default//logging, default//front-proxy 2 default//database, default//servicemesh 3 default//anotherbackend -4 default//backend-v1, default//backend-v2 -5 default//frontend-v1, default//frontend-v2, default//frontend-v3 +4 default//backend-v2 +5 default//frontend-v2, default//frontend-v3 processing releases in group 1/5: default//logging, default//front-proxy processing releases in group 2/5: default//database, default//servicemesh processing releases in group 3/5: default//anotherbackend -processing releases in group 4/5: default//backend-v1, default//backend-v2 -processing releases in group 5/5: default//frontend-v1, default//frontend-v2, default//frontend-v3 +processing releases in group 4/5: default//backend-v2 +processing releases in group 5/5: default//frontend-v2, default//frontend-v3 Affected releases are: anotherbackend (charts/anotherbackend) UPDATED backend-v1 (charts/backend) DELETED diff --git a/pkg/app/testdata/app_diff_test_2/delete_bar_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_2/delete_bar_when_bar_needs_foo index 332e08fd..1f7d1f93 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_bar_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_2/delete_bar_when_bar_needs_foo @@ -1,13 +1,11 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 foo -2 bar -processing releases in group 1/2: foo -processing releases in group 2/2: bar +processing releases in group 1/1: foo Affected releases are: bar (mychart2) DELETED foo (mychart1) UPDATED diff --git a/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar index 0df4dc20..15990558 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar @@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]} WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: -GROUP RELEASES -1 bar -2 foo - -processing releases in group 1/2: bar -processing releases in group 2/2: foo -WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs -Affected releases are: - bar (mychart2) DELETED - foo (mychart1) UPDATED - +err: release "foo" depends on "bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +Failed to clean up temporary files generated while processing "helmfile.yaml": release "foo" depends on "bar" which does not match the selectors. Please add a selector like "--selector name=bar", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies diff --git a/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs index 0df4dc20..a6718797 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs +++ b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs @@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]} WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES -1 bar -2 foo +1 foo -processing releases in group 1/2: bar -processing releases in group 2/2: foo +processing releases in group 1/1: foo WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs Affected releases are: bar (mychart2) DELETED diff --git a/pkg/app/testdata/app_diff_test_2/delete_foo_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_2/delete_foo_when_bar_needs_foo index 1b7ba4bb..313fa284 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_foo_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_2/delete_foo_when_bar_needs_foo @@ -2,15 +2,5 @@ merged environment: &{default map[] map[] map[]} WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: -GROUP RELEASES -1 foo -2 bar - -processing releases in group 1/2: foo -processing releases in group 2/2: bar -WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs -Affected releases are: - bar (mychart2) UPDATED - foo (mychart1) DELETED - +err: release "bar" depends on "foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +Failed to clean up temporary files generated while processing "helmfile.yaml": release "bar" depends on "foo" which does not match the selectors. Please add a selector like "--selector name=foo", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies diff --git a/pkg/app/testdata/app_diff_test_2/delete_foo_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_2/delete_foo_when_foo_needs_bar index 930bcaca..dddea730 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_foo_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_2/delete_foo_when_foo_needs_bar @@ -1,13 +1,11 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 bar -2 foo -processing releases in group 1/2: bar -processing releases in group 2/2: foo +processing releases in group 1/1: bar Affected releases are: bar (mychart2) UPDATED foo (mychart1) DELETED diff --git a/pkg/app/testdata/app_diff_test_2/noop b/pkg/app/testdata/app_diff_test_2/noop index 5c602c2e..937ee995 100644 --- a/pkg/app/testdata/app_diff_test_2/noop +++ b/pkg/app/testdata/app_diff_test_2/noop @@ -1,11 +1,9 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 bar -2 foo -processing releases in group 1/2: bar -processing releases in group 2/2: foo +processing releases in group 1/1: bar No affected releases diff --git a/pkg/app/testdata/app_diff_test_2/smoke b/pkg/app/testdata/app_diff_test_2/smoke index b2b45fde..c2fc529f 100644 --- a/pkg/app/testdata/app_diff_test_2/smoke +++ b/pkg/app/testdata/app_diff_test_2/smoke @@ -6,14 +6,14 @@ GROUP RELEASES 1 logging, front-proxy 2 database, servicemesh 3 anotherbackend -4 backend-v1, backend-v2 -5 frontend-v1, frontend-v2, frontend-v3 +4 backend-v2 +5 frontend-v2, frontend-v3 processing releases in group 1/5: logging, front-proxy processing releases in group 2/5: database, servicemesh processing releases in group 3/5: anotherbackend -processing releases in group 4/5: backend-v1, backend-v2 -processing releases in group 5/5: frontend-v1, frontend-v2, frontend-v3 +processing releases in group 4/5: backend-v2 +processing releases in group 5/5: frontend-v2, frontend-v3 Affected releases are: anotherbackend (charts/anotherbackend) UPDATED backend-v1 (charts/backend) DELETED diff --git a/pkg/app/testdata/app_lint_test/include-needs b/pkg/app/testdata/app_lint_test/include-needs index ed985d09..2e043346 100644 --- a/pkg/app/testdata/app_lint_test/include-needs +++ b/pkg/app/testdata/app_lint_test/include-needs @@ -2,12 +2,14 @@ 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 2 release(s) matching app=test found in helmfile.yaml -processing 3 groups of releases in this order: +processing 4 groups of releases in this order: GROUP RELEASES -1 default/kube-system/kubernetes-external-secrets -2 default/default/external-secrets -3 default/default/my-release +1 default/kube-system/logging +2 default/kube-system/kubernetes-external-secrets +3 default/default/external-secrets +4 default/default/my-release -processing releases in group 1/3: default/kube-system/kubernetes-external-secrets -processing releases in group 2/3: default/default/external-secrets -processing releases in group 3/3: default/default/my-release +processing releases in group 1/4: default/kube-system/logging +processing releases in group 2/4: default/kube-system/kubernetes-external-secrets +processing releases in group 3/4: default/default/external-secrets +processing releases in group 4/4: default/default/my-release diff --git a/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_direct_need b/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_direct_need index 3c22226f..3c08554b 100644 --- a/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_direct_need +++ b/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_direct_need @@ -2,8 +2,10 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//test2 +1 default/kube-system/disabled +2 default//test2 -processing releases in group 1/1: default//test2 +processing releases in group 1/2: default/kube-system/disabled +processing releases in group 2/2: default//test2 diff --git a/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_transitive_need index 3a218076..8f55648a 100644 --- a/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_lint_test/include-needs_should_not_fail_on_disabled_transitive_need @@ -2,10 +2,12 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 diff --git a/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need b/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need index 3c22226f..3c08554b 100644 --- a/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need +++ b/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need @@ -2,8 +2,10 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//test2 +1 default/kube-system/disabled +2 default//test2 -processing releases in group 1/1: default//test2 +processing releases in group 1/2: default/kube-system/disabled +processing releases in group 2/2: default//test2 diff --git a/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need index 3a218076..8f55648a 100644 --- a/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_lint_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need @@ -2,10 +2,12 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 diff --git a/pkg/app/testdata/app_lint_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_lint_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need index 3a218076..8f55648a 100644 --- a/pkg/app/testdata/app_lint_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_lint_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need @@ -2,10 +2,12 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 diff --git a/pkg/app/testdata/app_template_test/include-needs b/pkg/app/testdata/app_template_test/include-needs index ed985d09..2e043346 100644 --- a/pkg/app/testdata/app_template_test/include-needs +++ b/pkg/app/testdata/app_template_test/include-needs @@ -2,12 +2,14 @@ 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 2 release(s) matching app=test found in helmfile.yaml -processing 3 groups of releases in this order: +processing 4 groups of releases in this order: GROUP RELEASES -1 default/kube-system/kubernetes-external-secrets -2 default/default/external-secrets -3 default/default/my-release +1 default/kube-system/logging +2 default/kube-system/kubernetes-external-secrets +3 default/default/external-secrets +4 default/default/my-release -processing releases in group 1/3: default/kube-system/kubernetes-external-secrets -processing releases in group 2/3: default/default/external-secrets -processing releases in group 3/3: default/default/my-release +processing releases in group 1/4: default/kube-system/logging +processing releases in group 2/4: default/kube-system/kubernetes-external-secrets +processing releases in group 3/4: default/default/external-secrets +processing releases in group 4/4: default/default/my-release diff --git a/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_direct_need b/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_direct_need index 11b5a896..0b468ae0 100644 --- a/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_direct_need +++ b/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_direct_need @@ -2,9 +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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//test2 +1 default/kube-system/disabled +2 default//test2 -processing releases in group 1/1: default//test2 +processing releases in group 1/2: default/kube-system/disabled +processing releases in group 2/2: 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 diff --git a/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_transitive_need index b8b28277..3bb8007e 100644 --- a/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_template_test/include-needs_should_not_fail_on_disabled_transitive_need @@ -2,11 +2,13 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 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 diff --git a/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need b/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need index 11b5a896..0b468ae0 100644 --- a/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need +++ b/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_direct_need @@ -2,9 +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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//test2 +1 default/kube-system/disabled +2 default//test2 -processing releases in group 1/1: default//test2 +processing releases in group 1/2: default/kube-system/disabled +processing releases in group 2/2: 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 diff --git a/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need index b8b28277..3bb8007e 100644 --- a/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_template_test/include-needs_with_include-transitive-needs_should_not_fail_on_disabled_transitive_need @@ -2,11 +2,13 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 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 diff --git a/pkg/app/testdata/app_template_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need b/pkg/app/testdata/app_template_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need index b8b28277..3bb8007e 100644 --- a/pkg/app/testdata/app_template_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need +++ b/pkg/app/testdata/app_template_test/include-transitive-needs_should_not_fail_on_disabled_transitive_need @@ -2,11 +2,13 @@ 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=test3 found in helmfile.yaml -processing 2 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default//test2 -2 default//test3 +1 default/kube-system/disabled +2 default//test2 +3 default//test3 -processing releases in group 1/2: default//test2 -processing releases in group 2/2: default//test3 +processing releases in group 1/3: default/kube-system/disabled +processing releases in group 2/3: default//test2 +processing releases in group 3/3: default//test3 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 diff --git a/pkg/app/testdata/app_unittest_test/include-needs b/pkg/app/testdata/app_unittest_test/include-needs index f328fb5b..f7f03251 100644 --- a/pkg/app/testdata/app_unittest_test/include-needs +++ b/pkg/app/testdata/app_unittest_test/include-needs @@ -1,12 +1,14 @@ merged environment: &{default map[] map[] map[]} 2 release(s) matching app=test found in helmfile.yaml -processing 3 groups of releases in this order: +processing 4 groups of releases in this order: GROUP RELEASES -1 default/kube-system/kubernetes-external-secrets -2 default/default/external-secrets -3 default/default/my-release +1 default/kube-system/logging +2 default/kube-system/kubernetes-external-secrets +3 default/default/external-secrets +4 default/default/my-release -processing releases in group 1/3: default/kube-system/kubernetes-external-secrets -processing releases in group 2/3: default/default/external-secrets -processing releases in group 3/3: default/default/my-release +processing releases in group 1/4: default/kube-system/logging +processing releases in group 2/4: default/kube-system/kubernetes-external-secrets +processing releases in group 3/4: default/default/external-secrets +processing releases in group 4/4: default/default/my-release diff --git a/pkg/app/testdata/testapply/delete_bar_when_bar_needs_foo/log b/pkg/app/testdata/testapply/delete_bar_when_bar_needs_foo/log index 602459d2..3adeaeab 100644 --- a/pkg/app/testdata/testapply/delete_bar_when_bar_needs_foo/log +++ b/pkg/app/testdata/testapply/delete_bar_when_bar_needs_foo/log @@ -12,20 +12,16 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default//bar invoking preapply hooks for releases in group 2/2: default//foo -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//bar -2 default//foo -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo -processing 2 groups of releases in this order: +processing releases in group 1/1: default//bar +processing 1 groups of releases in this order: GROUP RELEASES 1 default//foo -2 default//bar -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar +processing releases in group 1/1: default//foo UPDATED RELEASES: NAME NAMESPACE CHART VERSION DURATION diff --git a/pkg/app/testdata/testapply/delete_bar_when_foo_needs_bar/log b/pkg/app/testdata/testapply/delete_bar_when_foo_needs_bar/log index cd450481..c4da6734 100644 --- a/pkg/app/testdata/testapply/delete_bar_when_foo_needs_bar/log +++ b/pkg/app/testdata/testapply/delete_bar_when_foo_needs_bar/log @@ -14,20 +14,16 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default//foo invoking preapply hooks for releases in group 2/2: default//bar -processing 2 groups of releases in this order: -GROUP RELEASES -1 default//foo -2 default//bar - -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//bar -2 default//foo -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo +processing releases in group 1/1: default//bar +processing 1 groups of releases in this order: +GROUP RELEASES +1 default//foo + +processing releases in group 1/1: default//foo WARNING: release foo needs bar, but bar is not installed due to installed: false. Either mark bar as installed or remove bar from foo's needs UPDATED RELEASES: diff --git a/pkg/app/testdata/testapply/delete_foo_when_bar_needs_foo/log b/pkg/app/testdata/testapply/delete_foo_when_bar_needs_foo/log index 97c1bc1c..5b557587 100644 --- a/pkg/app/testdata/testapply/delete_foo_when_bar_needs_foo/log +++ b/pkg/app/testdata/testapply/delete_foo_when_bar_needs_foo/log @@ -14,20 +14,16 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default//bar invoking preapply hooks for releases in group 2/2: default//foo -processing 2 groups of releases in this order: -GROUP RELEASES -1 default//bar -2 default//foo - -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//foo -2 default//bar -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar +processing releases in group 1/1: default//foo +processing 1 groups of releases in this order: +GROUP RELEASES +1 default//bar + +processing releases in group 1/1: default//bar WARNING: release bar needs foo, but foo is not installed due to installed: false. Either mark foo as installed or remove foo from bar's needs UPDATED RELEASES: diff --git a/pkg/app/testdata/testapply/delete_foo_when_foo_needs_bar/log b/pkg/app/testdata/testapply/delete_foo_when_foo_needs_bar/log index 0c2af781..659b1fd2 100644 --- a/pkg/app/testdata/testapply/delete_foo_when_foo_needs_bar/log +++ b/pkg/app/testdata/testapply/delete_foo_when_foo_needs_bar/log @@ -12,20 +12,16 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default//foo invoking preapply hooks for releases in group 2/2: default//bar -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default//foo -2 default//bar -processing releases in group 1/2: default//foo -processing releases in group 2/2: default//bar -processing 2 groups of releases in this order: +processing releases in group 1/1: default//foo +processing 1 groups of releases in this order: GROUP RELEASES 1 default//bar -2 default//foo -processing releases in group 1/2: default//bar -processing releases in group 2/2: default//foo +processing releases in group 1/1: default//bar UPDATED RELEASES: NAME NAMESPACE CHART VERSION DURATION diff --git a/pkg/app/testdata/testapply/smoke/log b/pkg/app/testdata/testapply/smoke/log index 86afb0e8..2daeed71 100644 --- a/pkg/app/testdata/testapply/smoke/log +++ b/pkg/app/testdata/testapply/smoke/log @@ -25,32 +25,26 @@ invoking preapply hooks for releases in group 2/5: default//backend-v1, default/ invoking preapply hooks for releases in group 3/5: default//anotherbackend invoking preapply hooks for releases in group 4/5: default//database, default//servicemesh invoking preapply hooks for releases in group 5/5: default//logging, default//front-proxy -processing 5 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//frontend-v1, default//frontend-v2, default//frontend-v3 -2 default//backend-v1, default//backend-v2 -3 default//anotherbackend -4 default//database, default//servicemesh -5 default//logging, default//front-proxy +1 default//frontend-v1 +2 default//backend-v1 -processing releases in group 1/5: default//frontend-v1, default//frontend-v2, default//frontend-v3 -processing releases in group 2/5: default//backend-v1, default//backend-v2 -processing releases in group 3/5: default//anotherbackend -processing releases in group 4/5: default//database, default//servicemesh -processing releases in group 5/5: default//logging, default//front-proxy +processing releases in group 1/2: default//frontend-v1 +processing releases in group 2/2: default//backend-v1 processing 5 groups of releases in this order: GROUP RELEASES 1 default//logging, default//front-proxy 2 default//database, default//servicemesh 3 default//anotherbackend -4 default//backend-v1, default//backend-v2 -5 default//frontend-v1, default//frontend-v2, default//frontend-v3 +4 default//backend-v2 +5 default//frontend-v3 processing releases in group 1/5: default//logging, default//front-proxy processing releases in group 2/5: default//database, default//servicemesh processing releases in group 3/5: default//anotherbackend -processing releases in group 4/5: default//backend-v1, default//backend-v2 -processing releases in group 5/5: default//frontend-v1, default//frontend-v2, default//frontend-v3 +processing releases in group 4/5: default//backend-v2 +processing releases in group 5/5: default//frontend-v3 UPDATED RELEASES: NAME NAMESPACE CHART VERSION DURATION diff --git a/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log b/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log index 0976d844..a8776915 100644 --- a/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log +++ b/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns1/bar_and_ns2/bar_is_disabled/log @@ -13,19 +13,17 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default/ns1/foo invoking preapply hooks for releases in group 2/2: default/ns1/bar, default/ns2/bar -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES -1 default/ns1/foo -2 default/ns1/bar, default/ns2/bar +1 default/ns2/bar -processing releases in group 1/2: default/ns1/foo -processing releases in group 2/2: default/ns1/bar, default/ns2/bar +processing releases in group 1/1: default/ns2/bar processing 2 groups of releases in this order: GROUP RELEASES -1 default/ns1/bar, default/ns2/bar +1 default/ns1/bar 2 default/ns1/foo -processing releases in group 1/2: default/ns1/bar, default/ns2/bar +processing releases in group 1/2: default/ns1/bar getting deployed release version failed: Failed to get the version for: mychart2 processing releases in group 2/2: default/ns1/foo getting deployed release version failed: Failed to get the version for: mychart1 diff --git a/pkg/app/testdata/testapply_2/include-transitive-needs=true/log b/pkg/app/testdata/testapply_2/include-transitive-needs=true/log index d00bbb0d..a4405c6a 100644 --- a/pkg/app/testdata/testapply_2/include-transitive-needs=true/log +++ b/pkg/app/testdata/testapply_2/include-transitive-needs=true/log @@ -22,7 +22,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 19: merged environment: &{default map[] map[] map[]} -1 release(s) matching name=serviceA found in helmfile.yaml.gotmpl +3 release(s) matching name=serviceA found in helmfile.yaml.gotmpl Affected releases are: serviceA (my/chart) UPDATED diff --git a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log index d0d92835..1a00d70c 100644 --- a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log +++ b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log @@ -33,15 +33,23 @@ WARNING: release external-secrets needs kubernetes-external-secrets, but kuberne WARNING: release external-secrets needs kubernetes-external-secrets, but kubernetes-external-secrets is not installed due to installed: false. Either mark kubernetes-external-secrets as installed or remove kubernetes-external-secrets from external-secrets's needs Affected releases are: external-secrets (incubator/raw) UPDATED + kubernetes-external-secrets (incubator/raw) DELETED my-release (incubator/raw) UPDATED -invoking preapply hooks for 2 groups of releases in this order: +invoking preapply hooks for 3 groups of releases in this order: GROUP RELEASES 1 default/default/my-release 2 default/default/external-secrets +3 default/kube-system/kubernetes-external-secrets -invoking preapply hooks for releases in group 1/2: default/default/my-release -invoking preapply hooks for releases in group 2/2: default/default/external-secrets +invoking preapply hooks for releases in group 1/3: default/default/my-release +invoking preapply hooks for releases in group 2/3: default/default/external-secrets +invoking preapply hooks for releases in group 3/3: default/kube-system/kubernetes-external-secrets +processing 1 groups of releases in this order: +GROUP RELEASES +1 default/kube-system/kubernetes-external-secrets + +processing releases in group 1/1: default/kube-system/kubernetes-external-secrets processing 2 groups of releases in this order: GROUP RELEASES 1 default/default/external-secrets @@ -56,3 +64,8 @@ NAME NAMESPACE CHART VERSION DURATION external-secrets default incubator/raw 3.1.0 0s my-release default incubator/raw 3.1.0 0s + +DELETED RELEASES: +NAME NAMESPACE DURATION +kubernetes-external-secrets kube-system 0s + diff --git a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log index d0d92835..58c602da 100644 --- a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log +++ b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log @@ -35,13 +35,15 @@ Affected releases are: external-secrets (incubator/raw) UPDATED my-release (incubator/raw) UPDATED -invoking preapply hooks for 2 groups of releases in this order: +invoking preapply hooks for 3 groups of releases in this order: GROUP RELEASES 1 default/default/my-release 2 default/default/external-secrets +3 default/kube-system/kubernetes-external-secrets -invoking preapply hooks for releases in group 1/2: default/default/my-release -invoking preapply hooks for releases in group 2/2: default/default/external-secrets +invoking preapply hooks for releases in group 1/3: default/default/my-release +invoking preapply hooks for releases in group 2/3: default/default/external-secrets +invoking preapply hooks for releases in group 3/3: default/kube-system/kubernetes-external-secrets processing 2 groups of releases in this order: GROUP RELEASES 1 default/default/external-secrets diff --git a/pkg/app/testdata/testapply_2/skip-needs=true_with_no_diff_on_a_release/log b/pkg/app/testdata/testapply_2/skip-needs=true_with_no_diff_on_a_release/log index 0fb7610c..17ac4bf2 100644 --- a/pkg/app/testdata/testapply_2/skip-needs=true_with_no_diff_on_a_release/log +++ b/pkg/app/testdata/testapply_2/skip-needs=true_with_no_diff_on_a_release/log @@ -38,13 +38,11 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default/default/my-release invoking preapply hooks for releases in group 2/2: default/default/external-secrets -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default/default/external-secrets -2 default/default/my-release -processing releases in group 1/2: default/default/external-secrets -processing releases in group 2/2: default/default/my-release +processing releases in group 1/1: default/default/external-secrets UPDATED RELEASES: NAME NAMESPACE CHART VERSION DURATION diff --git a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log index a603737b..0144f44a 100644 --- a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log +++ b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_installed_but_disabled_release/log @@ -33,15 +33,23 @@ WARNING: release external-secrets needs kubernetes-external-secrets, but kuberne WARNING: release external-secrets needs kubernetes-external-secrets, but kubernetes-external-secrets is not installed due to installed: false. Either mark kubernetes-external-secrets as installed or remove kubernetes-external-secrets from external-secrets's needs Affected releases are: external-secrets (incubator/raw) UPDATED + kubernetes-external-secrets (incubator/raw) DELETED my-release (incubator/raw) UPDATED -invoking preapply hooks for 2 groups of releases in this order: +invoking preapply hooks for 3 groups of releases in this order: GROUP RELEASES 1 default/my-release 2 default/external-secrets +3 kube-system/kubernetes-external-secrets -invoking preapply hooks for releases in group 1/2: default/my-release -invoking preapply hooks for releases in group 2/2: default/external-secrets +invoking preapply hooks for releases in group 1/3: default/my-release +invoking preapply hooks for releases in group 2/3: default/external-secrets +invoking preapply hooks for releases in group 3/3: kube-system/kubernetes-external-secrets +processing 1 groups of releases in this order: +GROUP RELEASES +1 kube-system/kubernetes-external-secrets + +processing releases in group 1/1: kube-system/kubernetes-external-secrets processing 2 groups of releases in this order: GROUP RELEASES 1 default/external-secrets @@ -56,3 +64,8 @@ NAME NAMESPACE CHART VERSION DURATION external-secrets default incubator/raw 3.1.0 0s my-release default incubator/raw 3.1.0 0s + +DELETED RELEASES: +NAME NAMESPACE DURATION +kubernetes-external-secrets kube-system 0s + diff --git a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log index a603737b..b67a15d7 100644 --- a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log +++ b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_with_not_installed_and_disabled_release/log @@ -35,13 +35,15 @@ Affected releases are: external-secrets (incubator/raw) UPDATED my-release (incubator/raw) UPDATED -invoking preapply hooks for 2 groups of releases in this order: +invoking preapply hooks for 3 groups of releases in this order: GROUP RELEASES 1 default/my-release 2 default/external-secrets +3 kube-system/kubernetes-external-secrets -invoking preapply hooks for releases in group 1/2: default/my-release -invoking preapply hooks for releases in group 2/2: default/external-secrets +invoking preapply hooks for releases in group 1/3: default/my-release +invoking preapply hooks for releases in group 2/3: default/external-secrets +invoking preapply hooks for releases in group 3/3: kube-system/kubernetes-external-secrets processing 2 groups of releases in this order: GROUP RELEASES 1 default/external-secrets diff --git a/pkg/app/testdata/testapply_3/skip-needs=true_with_no_diff_on_a_release/log b/pkg/app/testdata/testapply_3/skip-needs=true_with_no_diff_on_a_release/log index 48848dc8..47aff850 100644 --- a/pkg/app/testdata/testapply_3/skip-needs=true_with_no_diff_on_a_release/log +++ b/pkg/app/testdata/testapply_3/skip-needs=true_with_no_diff_on_a_release/log @@ -38,13 +38,11 @@ GROUP RELEASES invoking preapply hooks for releases in group 1/2: default/my-release invoking preapply hooks for releases in group 2/2: default/external-secrets -processing 2 groups of releases in this order: +processing 1 groups of releases in this order: GROUP RELEASES 1 default/external-secrets -2 default/my-release -processing releases in group 1/2: default/external-secrets -processing releases in group 2/2: default/my-release +processing releases in group 1/1: default/external-secrets UPDATED RELEASES: NAME NAMESPACE CHART VERSION DURATION diff --git a/pkg/state/state_run.go b/pkg/state/state_run.go index 65074c1d..f6e20d34 100644 --- a/pkg/state/state_run.go +++ b/pkg/state/state_run.go @@ -104,19 +104,6 @@ func (st *HelmState) PlanReleases(opts PlanOptions) ([][]Release, error) { return nil, err } - // If SelectedReleases is provided, mark those releases as not filtered - if len(opts.SelectedReleases) > 0 { - selectedIDs := make(map[string]struct{}) - for _, r := range opts.SelectedReleases { - selectedIDs[ReleaseToID(&r)] = struct{}{} - } - for i := range marked { - if _, ok := selectedIDs[ReleaseToID(&marked[i].ReleaseSpec)]; ok { - marked[i].Filtered = false - } - } - } - groups, err := SortedReleaseGroups(marked, opts) if err != nil { return nil, err @@ -177,11 +164,22 @@ func GroupReleasesByDependency(releases []Release, opts PlanOptions) ([][]Releas } var selectedReleaseIDs []string - for _, r := range releases { - if !r.Filtered { - id := ReleaseToID(&r.ReleaseSpec) + if len(opts.SelectedReleases) > 0 { + // When SelectedReleases is explicitly provided (e.g., by the delete/destroy path), + // use it directly to determine which releases to plan. + for _, r := range opts.SelectedReleases { + release := r + id := ReleaseToID(&release) selectedReleaseIDs = append(selectedReleaseIDs, id) } + } else { + // Otherwise, use the Filtered flag set by SelectReleases/markExcludedReleases + for _, r := range releases { + if !r.Filtered { + id := ReleaseToID(&r.ReleaseSpec) + selectedReleaseIDs = append(selectedReleaseIDs, id) + } + } } skipDepValidation := opts.SkipNeeds