diff --git a/pkg/app/app.go b/pkg/app/app.go index 3d95ab97..d8858717 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -2323,7 +2323,7 @@ func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state SelectedReleases: selectedReleases, IncludeNeeds: false, IncludeTransitiveNeeds: false, - SkipNeeds: c.SkipNeeds(), + SkipNeeds: c.SkipNeeds() || includeNeeds, }) if err != nil { diff --git a/pkg/app/app_diff_test.go b/pkg/app/app_diff_test.go index 5b9e8d0b..e888ee19 100644 --- a/pkg/app/app_diff_test.go +++ b/pkg/app/app_diff_test.go @@ -175,8 +175,6 @@ releases: error: ``, selectors: []string{"app=test"}, diffed: []exectest.Release{ - // TODO: Turned out we can't differentiate needs vs transitive needs in this case :thinking: - {Name: "logging", Flags: []string{"--kube-context", "default", "--namespace", "kube-system", "--reset-values"}}, {Name: "kubernetes-external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "kube-system", "--reset-values"}}, {Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default", "--reset-values"}}, {Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default", "--reset-values"}}, diff --git a/pkg/app/app_lint_test.go b/pkg/app/app_lint_test.go index f9b10836..6aa3f36b 100644 --- a/pkg/app/app_lint_test.go +++ b/pkg/app/app_lint_test.go @@ -1,21 +1,18 @@ package app import ( - "os" - "path/filepath" - "strings" "sync" "testing" "github.com/google/go-cmp/cmp" "github.com/helmfile/vals" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "github.com/helmfile/helmfile/pkg/exectest" ffs "github.com/helmfile/helmfile/pkg/filesystem" "github.com/helmfile/helmfile/pkg/helmexec" + "github.com/helmfile/helmfile/pkg/testhelper" ) func TestLint(t *testing.T) { @@ -144,30 +141,7 @@ releases: require.Equal(t, wantLints, helm.Linted) }) - testNameComponents := strings.Split(t.Name(), "/") - testBaseName := strings.ToLower( - strings.ReplaceAll( - testNameComponents[len(testNameComponents)-1], - " ", - "_", - ), - ) - wantLogFileDir := filepath.Join("testdata", "app_lint_test") - wantLogFile := filepath.Join(wantLogFileDir, testBaseName) - wantLogData, err := os.ReadFile(wantLogFile) - updateLogFile := err != nil - wantLog := string(wantLogData) - gotLog := bs.String() - if updateLogFile { - if err := os.MkdirAll(wantLogFileDir, 0755); err != nil { - t.Fatalf("unable to create directory %q: %v", wantLogFileDir, err) - } - if err := os.WriteFile(wantLogFile, bs.Bytes(), 0644); err != nil { - t.Fatalf("unable to update lint log snapshot: %v", err) - } - } - - assert.Equal(t, wantLog, gotLog) + testhelper.RequireLog(t, "app_lint_test", bs) } t.Run("fail on unselected need by default", func(t *testing.T) { @@ -199,8 +173,6 @@ releases: error: ``, selectors: []string{"app=test"}, linted: []exectest.Release{ - // TODO: Turned out we can't differentiate needs vs transitive needs in this case :thinking: - {Name: "logging", Flags: []string{"--namespace", "kube-system"}}, {Name: "kubernetes-external-secrets", Flags: []string{"--namespace", "kube-system"}}, {Name: "external-secrets", Flags: []string{"--namespace", "default"}}, {Name: "my-release", Flags: []string{"--namespace", "default"}}, diff --git a/pkg/app/app_template_test.go b/pkg/app/app_template_test.go index f2e5f50c..eabed44c 100644 --- a/pkg/app/app_template_test.go +++ b/pkg/app/app_template_test.go @@ -206,8 +206,6 @@ releases: selectors: []string{"app=test"}, // Issue #2309: --kube-context is now added to template flags templated: []exectest.Release{ - // TODO: Turned out we can't differentiate needs vs transitive needs in this case :thinking: - {Name: "logging", Flags: []string{"--kube-context", "default", "--namespace", "kube-system"}}, {Name: "kubernetes-external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "kube-system"}}, {Name: "external-secrets", Flags: []string{"--kube-context", "default", "--namespace", "default"}}, {Name: "my-release", Flags: []string{"--kube-context", "default", "--namespace", "default"}}, diff --git a/pkg/app/testdata/app_diff_test/include-needs b/pkg/app/testdata/app_diff_test/include-needs index 2e043346..ed985d09 100644 --- a/pkg/app/testdata/app_diff_test/include-needs +++ b/pkg/app/testdata/app_diff_test/include-needs @@ -2,14 +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 2 release(s) matching app=test found in helmfile.yaml -processing 4 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default/kube-system/logging -2 default/kube-system/kubernetes-external-secrets -3 default/default/external-secrets -4 default/default/my-release +1 default/kube-system/kubernetes-external-secrets +2 default/default/external-secrets +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 +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 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 374768b4..b8b28277 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,16 +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=test3 found in helmfile.yaml -processing 3 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 -3 default//test3 +1 default//test2 +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 +processing releases in group 1/2: default//test2 +processing releases in group 2/2: 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 538e191f..b6c63520 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,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 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 374768b4..94cc476c 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,15 +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 3 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 -3 default//test3 +1 default//test2 +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 +processing releases in group 1/2: default//test2 +processing releases in group 2/2: 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 374768b4..94cc476c 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,15 +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 3 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 -3 default//test3 +1 default//test2 +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 +processing releases in group 1/2: default//test2 +processing releases in group 2/2: 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 c28d87bc..bf059104 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 +1 default/ns1/bar, default/ns2/bar 2 default/ns1/foo -processing releases in group 1/2: default/ns1/bar +processing releases in group 1/2: default/ns1/bar, default/ns2/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 2e1dadd2..cf7dd6b4 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,11 +1,13 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//foo +2 default//bar -processing releases in group 1/1: default//foo +processing releases in group 1/2: default//foo +processing releases in group 2/2: default//bar 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_with_skip-needs b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_skip-needs index 423dcd31..d0e53b18 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,11 +2,13 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//foo +1 default//bar +2 default//foo -processing releases in group 1/1: 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 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 66b8126d..3ba64bfa 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,11 +2,13 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default//bar +1 default//foo +2 default//bar -processing releases in group 1/1: 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 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 41b61c6b..0489bb59 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,11 +1,13 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//bar +2 default//foo -processing releases in group 1/1: default//bar +processing releases in group 1/2: default//bar +processing releases in group 2/2: default//foo 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 fadc03f0..108de434 100644 --- a/pkg/app/testdata/app_diff_test_1/noop +++ b/pkg/app/testdata/app_diff_test_1/noop @@ -1,9 +1,11 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//bar +2 default//foo -processing releases in group 1/1: default//bar +processing releases in group 1/2: default//bar +processing releases in group 2/2: default//foo No affected releases diff --git a/pkg/app/testdata/app_diff_test_1/smoke b/pkg/app/testdata/app_diff_test_1/smoke index 796556ee..43f15041 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-v2 -5 default//frontend-v2, default//frontend-v3 +4 default//backend-v1, default//backend-v2 +5 default//frontend-v1, 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-v2 -processing releases in group 5/5: default//frontend-v2, default//frontend-v3 +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 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 1f7d1f93..332e08fd 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,11 +1,13 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 foo +2 bar -processing releases in group 1/1: foo +processing releases in group 1/2: foo +processing releases in group 2/2: bar 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_with_skip-needs b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_skip-needs index a6718797..0df4dc20 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,11 +2,13 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 foo +1 bar +2 foo -processing releases in group 1/1: 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 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 dddea730..930bcaca 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,11 +1,13 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 bar +2 foo -processing releases in group 1/1: bar +processing releases in group 1/2: bar +processing releases in group 2/2: foo 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 937ee995..5c602c2e 100644 --- a/pkg/app/testdata/app_diff_test_2/noop +++ b/pkg/app/testdata/app_diff_test_2/noop @@ -1,9 +1,11 @@ merged environment: &{default map[] map[] map[]} 2 release(s) found in helmfile.yaml -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 bar +2 foo -processing releases in group 1/1: bar +processing releases in group 1/2: bar +processing releases in group 2/2: foo No affected releases diff --git a/pkg/app/testdata/app_diff_test_2/smoke b/pkg/app/testdata/app_diff_test_2/smoke index c2fc529f..b2b45fde 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-v2 -5 frontend-v2, frontend-v3 +4 backend-v1, backend-v2 +5 frontend-v1, 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-v2 -processing releases in group 5/5: frontend-v2, frontend-v3 +processing releases in group 4/5: backend-v1, backend-v2 +processing releases in group 5/5: frontend-v1, 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 2e043346..ed985d09 100644 --- a/pkg/app/testdata/app_lint_test/include-needs +++ b/pkg/app/testdata/app_lint_test/include-needs @@ -2,14 +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 2 release(s) matching app=test found in helmfile.yaml -processing 4 groups of releases in this order: +processing 3 groups of releases in this order: GROUP RELEASES -1 default/kube-system/logging -2 default/kube-system/kubernetes-external-secrets -3 default/default/external-secrets -4 default/default/my-release +1 default/kube-system/kubernetes-external-secrets +2 default/default/external-secrets +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 +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 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 3c08554b..3c22226f 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,10 +2,8 @@ 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 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 8f55648a..3a218076 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,12 +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=test3 found in helmfile.yaml -processing 3 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 -3 default//test3 +1 default//test2 +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 +processing releases in group 1/2: default//test2 +processing releases in group 2/2: 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 3c08554b..3c22226f 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,10 +2,8 @@ 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 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 8f55648a..3a218076 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,12 +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=test3 found in helmfile.yaml -processing 3 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 -3 default//test3 +1 default//test2 +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 +processing releases in group 1/2: default//test2 +processing releases in group 2/2: 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 8f55648a..3a218076 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,12 +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=test3 found in helmfile.yaml -processing 3 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES -1 default/kube-system/disabled -2 default//test2 -3 default//test3 +1 default//test2 +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 +processing releases in group 1/2: default//test2 +processing releases in group 2/2: default//test3 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 3adeaeab..602459d2 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,16 +12,20 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//bar +2 default//foo -processing releases in group 1/1: default//bar -processing 1 groups of releases in this order: +processing releases in group 1/2: default//bar +processing releases in group 2/2: default//foo +processing 2 groups of releases in this order: GROUP RELEASES 1 default//foo +2 default//bar -processing releases in group 1/1: default//foo +processing releases in group 1/2: default//foo +processing releases in group 2/2: default//bar 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 c4da6734..cd450481 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,16 +14,20 @@ 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 1 groups of releases in this order: -GROUP RELEASES -1 default//bar - -processing releases in group 1/1: default//bar -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//foo +2 default//bar -processing releases in group 1/1: default//foo +processing releases in group 1/2: default//foo +processing releases in group 2/2: default//bar +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 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 5b557587..97c1bc1c 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,16 +14,20 @@ 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 1 groups of releases in this order: -GROUP RELEASES -1 default//foo - -processing releases in group 1/1: default//foo -processing 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//bar +2 default//foo -processing releases in group 1/1: default//bar +processing releases in group 1/2: default//bar +processing releases in group 2/2: default//foo +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 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 659b1fd2..0c2af781 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,16 +12,20 @@ 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 1 groups of releases in this order: +processing 2 groups of releases in this order: GROUP RELEASES 1 default//foo +2 default//bar -processing releases in group 1/1: default//foo -processing 1 groups of releases in this order: +processing releases in group 1/2: default//foo +processing releases in group 2/2: default//bar +processing 2 groups of releases in this order: GROUP RELEASES 1 default//bar +2 default//foo -processing releases in group 1/1: default//bar +processing releases in group 1/2: default//bar +processing releases in group 2/2: default//foo UPDATED RELEASES: NAME NAMESPACE CHART VERSION DURATION diff --git a/pkg/app/testdata/testapply/smoke/log b/pkg/app/testdata/testapply/smoke/log index 2daeed71..86afb0e8 100644 --- a/pkg/app/testdata/testapply/smoke/log +++ b/pkg/app/testdata/testapply/smoke/log @@ -25,26 +25,32 @@ 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 2 groups of releases in this order: +processing 5 groups of releases in this order: GROUP RELEASES -1 default//frontend-v1 -2 default//backend-v1 +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 -processing releases in group 1/2: default//frontend-v1 -processing releases in group 2/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 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-v2 -5 default//frontend-v3 +4 default//backend-v1, default//backend-v2 +5 default//frontend-v1, 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-v2 -processing releases in group 5/5: default//frontend-v3 +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 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 a8776915..0976d844 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,17 +13,19 @@ 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 1 groups of releases in this order: -GROUP RELEASES -1 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 +1 default/ns1/foo +2 default/ns1/bar, 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 2 groups of releases in this order: +GROUP RELEASES +1 default/ns1/bar, default/ns2/bar 2 default/ns1/foo -processing releases in group 1/2: default/ns1/bar +processing releases in group 1/2: default/ns1/bar, default/ns2/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 df204aec..d00bbb0d 100644 --- a/pkg/app/testdata/testapply_2/include-transitive-needs=true/log +++ b/pkg/app/testdata/testapply_2/include-transitive-needs=true/log @@ -29,11 +29,15 @@ Affected releases are: serviceB (my/chart) UPDATED serviceC (my/chart) UPDATED -invoking preapply hooks for 1 groups of releases in this order: +invoking preapply hooks for 3 groups of releases in this order: GROUP RELEASES 1 default//serviceA +2 default//serviceB +3 default//serviceC -invoking preapply hooks for releases in group 1/1: default//serviceA +invoking preapply hooks for releases in group 1/3: default//serviceA +invoking preapply hooks for releases in group 2/3: default//serviceB +invoking preapply hooks for releases in group 3/3: default//serviceC processing 3 groups of releases in this order: GROUP RELEASES 1 default//serviceC diff --git a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true/log b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true/log index 0b0bad62..62337d68 100644 --- a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true/log +++ b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true/log @@ -33,23 +33,28 @@ Affected releases are: kubernetes-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 -processing 2 groups of releases in this order: +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 3 groups of releases in this order: GROUP RELEASES -1 default/default/external-secrets -2 default/default/my-release +1 default/kube-system/kubernetes-external-secrets +2 default/default/external-secrets +3 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/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 UPDATED RELEASES: -NAME NAMESPACE CHART VERSION DURATION -external-secrets default incubator/raw 3.1.0 0s -my-release default incubator/raw 3.1.0 0s +NAME NAMESPACE CHART VERSION DURATION +kubernetes-external-secrets kube-system incubator/raw 3.1.0 0s +external-secrets default incubator/raw 3.1.0 0s +my-release default incubator/raw 3.1.0 0s diff --git a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log index 6af67687..77069b44 100644 --- a/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log +++ b/pkg/app/testdata/testapply_2/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log @@ -32,13 +32,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=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 f00d2c4f..ba53e9af 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 @@ -36,20 +36,24 @@ Affected releases are: 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 -processing 2 groups of releases in this order: +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 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 -processing releases in group 1/2: default/default/my-release -processing releases in group 2/2: default/default/external-secrets +processing releases in group 1/3: default/default/my-release +processing releases in group 2/3: default/default/external-secrets +processing 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 @@ -64,3 +68,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_3/skip-needs=false_include-needs=true/log b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true/log index dc06cef0..3706c59d 100644 --- a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true/log +++ b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true/log @@ -33,23 +33,28 @@ Affected releases are: kubernetes-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 -processing 2 groups of releases in this order: +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 3 groups of releases in this order: GROUP RELEASES -1 default/external-secrets -2 default/my-release +1 kube-system/kubernetes-external-secrets +2 default/external-secrets +3 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/3: kube-system/kubernetes-external-secrets +processing releases in group 2/3: default/external-secrets +processing releases in group 3/3: default/my-release UPDATED RELEASES: -NAME NAMESPACE CHART VERSION DURATION -external-secrets default incubator/raw 3.1.0 0s -my-release default incubator/raw 3.1.0 0s +NAME NAMESPACE CHART VERSION DURATION +kubernetes-external-secrets kube-system incubator/raw 3.1.0 0s +external-secrets default incubator/raw 3.1.0 0s +my-release default incubator/raw 3.1.0 0s diff --git a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log index a01ac5c9..7f9b3818 100644 --- a/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log +++ b/pkg/app/testdata/testapply_3/skip-needs=false_include-needs=true_but_no_diff_on_needed_release/log @@ -32,13 +32,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=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 6bd8dc32..06963ad6 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 @@ -36,20 +36,24 @@ Affected releases are: 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 -processing 2 groups of releases in this order: +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 3 groups of releases in this order: GROUP RELEASES 1 default/my-release 2 default/external-secrets +3 kube-system/kubernetes-external-secrets -processing releases in group 1/2: default/my-release -processing releases in group 2/2: default/external-secrets +processing releases in group 1/3: default/my-release +processing releases in group 2/3: default/external-secrets +processing releases in group 3/3: kube-system/kubernetes-external-secrets processing 2 groups of releases in this order: GROUP RELEASES 1 default/external-secrets @@ -64,3 +68,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/state/state.go b/pkg/state/state.go index 1354cdef..0c5cc2e4 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -3049,10 +3049,24 @@ func unmarkNeedsDirectOnly(filteredReleases []Release) { func collectDirectNeedsOnly(filteredReleases []Release) map[string]struct{} { directNeeds := map[string]struct{}{} + nameToID := map[string]string{} + for _, r := range filteredReleases { + nameToID[r.Name] = ReleaseToID(&r.ReleaseSpec) + } for _, r := range filteredReleases { if !r.Filtered { - for _, id := range r.ReleaseSpec.Needs { - directNeeds[id] = struct{}{} + for _, need := range r.ReleaseSpec.Needs { + if fullID, ok := nameToID[need]; ok { + directNeeds[fullID] = struct{}{} + } else { + parts := strings.Split(need, "/") + needName := parts[len(parts)-1] + if fullID, ok := nameToID[needName]; ok { + directNeeds[fullID] = struct{}{} + } else { + directNeeds[need] = struct{}{} + } + } } } } @@ -3060,13 +3074,10 @@ func collectDirectNeedsOnly(filteredReleases []Release) map[string]struct{} { } func unmarkReleasesByNeedID(toUnmark map[string]struct{}, releases []Release) { - for needID := range toUnmark { - parts := strings.Split(needID, "/") - needName := parts[len(parts)-1] - for i, r := range releases { - if r.Name == needName { - releases[i].Filtered = false - } + for i := range releases { + releaseID := ReleaseToID(&releases[i].ReleaseSpec) + if _, ok := toUnmark[releaseID]; ok { + releases[i].Filtered = false } } } diff --git a/pkg/state/state_run.go b/pkg/state/state_run.go index 0f0befbf..65074c1d 100644 --- a/pkg/state/state_run.go +++ b/pkg/state/state_run.go @@ -104,6 +104,19 @@ 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