From 81b699b780e4a088a21cddd3a07aa02cf443209b Mon Sep 17 00:00:00 2001 From: yxxhero <11087727+yxxhero@users.noreply.github.com> Date: Sat, 8 Feb 2025 18:04:57 +0800 Subject: [PATCH] Revert "cleanup: remove all about v0.x (#1903)" This reverts commit d7bcd5e9985305ac427bc75e5644419e9ca939a2. Signed-off-by: yxxhero --- .github/workflows/ci.yaml | 13 ++ .github/workflows/releaser.yaml | 1 + .goreleaser.yml | 4 + Makefile | 4 + cmd/apply.go | 7 + cmd/charts.go | 41 ++++ cmd/delete.go | 44 ++++ cmd/root.go | 8 + docs/index.md | 1 + pkg/app/app.go | 63 ++++- pkg/app/app_apply_nokubectx_test.go | 80 ++++++- pkg/app/app_apply_test.go | 82 ++++++- pkg/app/app_list_test.go | 1 - pkg/app/app_sync_test.go | 14 +- pkg/app/app_test.go | 112 +++++---- pkg/app/config.go | 29 +++ pkg/app/constants.go | 5 +- pkg/app/desired_state_file_loader.go | 24 +- pkg/app/diff_nokubectx_test.go | 181 ++++++++++++++- pkg/app/diff_test.go | 218 +++++++++++++++++- pkg/app/run.go | 11 + pkg/app/testdata/app_diff_test/bad_selector | 101 ++++++++ .../fail_on_unselected_need_by_default | 101 ++++++++ pkg/app/testdata/app_diff_test/include-needs | 101 ++++++++ ...ds_should_not_fail_on_disabled_direct_need | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ ...ds_should_not_fail_on_disabled_direct_need | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ .../app_diff_test/include-transitive-needs | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ pkg/app/testdata/app_diff_test/no-hooks | 101 ++++++++ .../show_diff_on_changed_selected_release | 29 +++ ...ff_on_already_uninstalled_selected_release | 31 +++ pkg/app/testdata/app_diff_test/skip-needs | 101 ++++++++ pkg/app/testdata/app_diff_test_1/bar | 33 +++ .../delete_bar_when_bar_needs_foo | 31 +++ .../delete_bar_when_foo_needs_bar | 31 +++ ..._bar_when_foo_needs_bar_with_include-needs | 31 +++ ...ete_bar_when_foo_needs_bar_with_skip-needs | 31 +++ .../delete_foo_and_bar_when_bar_needs_foo | 33 +++ .../delete_foo_and_bar_when_foo_needs_bar | 33 +++ .../delete_foo_when_bar_needs_foo | 31 +++ ..._foo_when_bar_needs_foo_with_include-needs | 31 +++ ...ete_foo_when_bar_needs_foo_with_skip-needs | 31 +++ .../delete_foo_when_foo_needs_bar | 31 +++ .../helm3_upgrade_when_ns2_bar_needs_ns1_foo | 33 +++ pkg/app/testdata/app_diff_test_1/install | 33 +++ .../non-existent_release_in_needs | 8 - pkg/app/testdata/app_diff_test_1/noop | 31 +++ pkg/app/testdata/app_diff_test_1/smoke | 121 ++++++++++ .../unselected_release_in_needs | 7 - .../upgrade_when_bar_needs_foo | 29 +++ ...grade_when_bar_needs_foo,_with_ns_override | 29 +++ .../upgrade_when_foo_needs_bar | 29 +++ ...grade_when_foo_needs_bar,_with_ns_override | 29 +++ ...e_when_foo_needs_bar_with_context_override | 33 +++ ...n_releaseb_needs_releasea_with_aws_context | 37 +++ ...grade_when_tns1_ns1_foo_needs_tns2_ns2_bar | 33 +++ .../upgrades_with_bad_selector | 33 --- ...with_good_selector_with_--skip-needs=false | 34 --- ..._with_good_selector_with_--skip-needs=true | 40 +++- pkg/app/testdata/app_diff_test_2/bar | 33 +++ .../delete_bar_when_bar_needs_foo | 31 +++ .../delete_bar_when_foo_needs_bar | 31 +++ ..._bar_when_foo_needs_bar_with_include-needs | 31 +++ ...ete_bar_when_foo_needs_bar_with_skip-needs | 31 +++ .../delete_foo_and_bar_when_bar_needs_foo | 33 +++ .../delete_foo_and_bar_when_foo_needs_bar | 33 +++ .../delete_foo_when_bar_needs_foo | 31 +++ .../delete_foo_when_foo_needs_bar | 31 +++ pkg/app/testdata/app_diff_test_2/foo | 33 +++ .../helm3_upgrade_when_ns2_bar_needs_ns1_foo | 33 +++ pkg/app/testdata/app_diff_test_2/install | 33 +++ .../non-existent_release_in_needs | 8 - pkg/app/testdata/app_diff_test_2/noop | 31 +++ pkg/app/testdata/app_diff_test_2/smoke | 121 ++++++++++ .../upgrade_when_bar_needs_foo | 29 +++ ...grade_when_bar_needs_foo,_with_ns_override | 29 +++ .../upgrade_when_foo_needs_bar | 29 +++ ...grade_when_foo_needs_bar,_with_ns_override | 29 +++ .../upgrades_with_bad_selector | 33 --- ...with_good_selector_with_--skip-needs=false | 34 --- ..._with_good_selector_with_--skip-needs=true | 40 +++- pkg/app/testdata/app_lint_test/bad_selector | 101 ++++++++ .../fail_on_unselected_need_by_default | 101 ++++++++ pkg/app/testdata/app_lint_test/include-needs | 101 ++++++++ ...ds_should_not_fail_on_disabled_direct_need | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ ...ds_should_not_fail_on_disabled_direct_need | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ .../app_lint_test/include-transitive-needs | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ pkg/app/testdata/app_lint_test/skip-needs | 101 ++++++++ .../default_environment_includes_all_releases | 205 ++++++++++++++++ .../app_list_test/fail_on_unknown_environment | 61 +++++ ...ses_for_environment_used_in_multiple_files | 205 ++++++++++++++++ ...ases_for_environment_used_in_one_file_only | 106 +++++++++ ...releases_matching_selector_and_environment | 160 +++++++++++++ .../testdata/app_template_test/bad_selector | 101 ++++++++ .../fail_on_unselected_need_by_default | 101 ++++++++ .../testdata/app_template_test/include-needs | 101 ++++++++ ...ds_should_not_fail_on_disabled_direct_need | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ ...ds_should_not_fail_on_disabled_direct_need | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ .../include-transitive-needs | 101 ++++++++ ...hould_not_fail_on_disabled_transitive_need | 101 ++++++++ pkg/app/testdata/app_template_test/no-hooks | 101 ++++++++ pkg/app/testdata/app_template_test/show-only | 101 ++++++++ pkg/app/testdata/app_template_test/skip-needs | 101 ++++++++ .../dag_test/dag_lists_dependencies_in_order | 114 +++++++++ .../delete_bar_when_bar_needs_foo/log | 31 +++ .../delete_bar_when_foo_needs_bar/log | 31 +++ .../delete_foo_and_bar_when_bar_needs_foo/log | 33 +++ .../delete_foo_and_bar_when_foo_needs_bar/log | 33 +++ .../delete_foo_when_bar_needs_foo/log | 31 +++ .../delete_foo_when_foo_needs_bar/log | 31 +++ .../testdata/testapply/duplicate_releases/log | 39 ++++ .../log | 27 +++ .../log | 39 ++++ .../log | 39 ++++ pkg/app/testdata/testapply/install/log | 33 +++ .../non-existent_release_in_needs/log | 31 +++ pkg/app/testdata/testapply/noop/log | 31 +++ pkg/app/testdata/testapply/smoke/log | 121 ++++++++++ .../testapply/unselected_release_in_needs/log | 31 +++ .../log | 29 +++ .../testapply/upgrade_when_bar_needs_foo/log | 29 +++ .../log | 29 +++ .../testapply/upgrade_when_foo_needs_bar/log | 29 +++ .../upgrade_when_ns1/foo_needs_ns2/bar/log | 33 +++ .../upgrade_when_ns2/bar_needs_ns1/foo/log | 33 +++ .../testapply/upgrades_with_bad_selector/log | 40 +++- .../log | 40 +++- .../log | 40 +++- .../testdata/testapply_2/bad_--selector/log | 33 --- .../testapply_2/deduplicate_by_--selector/log | 47 ++++ .../include-transitive-needs=true/log | 36 ++- .../log | 39 ++++ .../log | 51 ++++ .../skip-needs=false_include-needs=true/log | 40 +++- .../log | 40 +++- .../log | 41 +++- .../log | 41 +++- .../testdata/testapply_2/skip-needs=true/log | 40 +++- .../log | 40 +++- .../testdata/testapply_3/bad_--selector/log | 33 --- .../skip-needs=false_include-needs=true/log | 40 +++- .../log | 40 +++- .../log | 41 +++- .../log | 41 +++- .../testdata/testapply_3/skip-needs=true/log | 40 +++- .../log | 40 +++- pkg/app/testdata/testdeps/smoke/log | 7 - .../log | 31 +++ .../log | 121 ++++++++++ pkg/app/testdata/testdestroy/helm3/log | 31 +++ pkg/app/testdata/testdestroy/smoke/log | 121 ++++++++++ .../log | 31 +++ .../log | 121 ++++++++++ pkg/app/testdata/testdestroy_2/helm3/log | 31 +++ pkg/app/testdata/testdestroy_2/smoke/log | 121 ++++++++++ .../testreadfromyaml_rendertemplatelog/log | 10 - pkg/app/two_pass_renderer.go | 106 ++++++++- pkg/app/two_pass_renderer_test.go | 115 ++++++++- pkg/config/apply.go | 10 + pkg/config/charts.go | 46 ++++ pkg/config/delete.go | 67 ++++++ pkg/envvar/const.go | 4 + pkg/policy/checker.go | 6 +- pkg/policy/checker_test.go | 27 ++- pkg/runtime/runtime.go | 25 +- pkg/state/create.go | 14 ++ pkg/state/create_test.go | 20 ++ pkg/state/state.go | 4 + pkg/state/state_test.go | 30 ++- pkg/tmpl/context_funcs.go | 16 +- pkg/tmpl/context_funcs_test.go | 24 ++ test/e2e/template/helmfile/snapshot_test.go | 2 +- .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{no-envs.yaml.gotmpl => no-envs.yaml} | 0 .../{no-values.yaml.gotmpl => no-values.yaml} | 0 .../helmfiles/{prod.yaml.gotmpl => prod.yaml} | 0 .../helmfiles/{test.yaml.gotmpl => test.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 8 +- .../config.yaml | 5 + .../input.yaml} | 2 +- .../output.yaml | 1 + .../config.yaml | 5 - .../{input.yaml.gotmpl => input.yaml} | 0 .../hcl_mix/{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../output.yaml | 4 +- .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../pr_560/{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 .../{input.yaml.gotmpl => input.yaml} | 0 test/integration/test-cases/chart-needs.sh | 9 +- .../{helmfile.yaml.gotmpl => helmfile.yaml} | 0 ...y-jsonPatches-and-strategicMergePatches.sh | 9 +- .../{helmfile.yaml.gotmpl => helmfile.yaml} | 0 test/integration/test-cases/chartify.sh | 9 +- .../{helmfile.yaml.gotmpl => helmfile.yaml} | 0 .../cli-overwrite-environment-values.sh | 30 ++- .../input/input.yaml | 17 ++ ...input.yaml.gotmpl => input_v1.yaml.gotmpl} | 0 .../output/output.yaml | 9 +- .../output/output_v1.yaml | 111 +++++++++ test/integration/test-cases/happypath.sh | 9 +- .../{happypath.yaml.gotmpl => happypath.yaml} | 0 test/integration/test-cases/postrender.sh | 9 +- .../{helmfile.yaml.gotmpl => helmfile.yaml} | 0 test/integration/test-cases/regression.sh | 32 ++- ...issue.1682.yaml.gotmpl => issue.1682.yaml} | 0 ...issue.1857.yaml.gotmpl => issue.1857.yaml} | 0 ...issue.1867.yaml.gotmpl => issue.1867.yaml} | 0 ...issue.2118.yaml.gotmpl => issue.2118.yaml} | 0 test/integration/test-cases/secretssops.sh | 8 +- ...cretssops.yaml.gotmpl => secretssops.yaml} | 0 ...bhelmfile-multi-bases-with-array-values.sh | 35 ++- .../output/result-live | 25 -- test/integration/test-cases/yaml-overwrite.sh | 30 +-- 229 files changed, 9464 insertions(+), 510 deletions(-) create mode 100644 cmd/charts.go create mode 100644 cmd/delete.go delete mode 100644 pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs delete mode 100644 pkg/app/testdata/app_diff_test_1/unselected_release_in_needs delete mode 100644 pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector delete mode 100644 pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false delete mode 100644 pkg/app/testdata/app_diff_test_2/non-existent_release_in_needs delete mode 100644 pkg/app/testdata/app_diff_test_2/upgrades_with_bad_selector delete mode 100644 pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=false delete mode 100644 pkg/app/testdata/testapply_2/bad_--selector/log delete mode 100644 pkg/app/testdata/testapply_3/bad_--selector/log delete mode 100644 pkg/app/testdata/testdeps/smoke/log delete mode 100644 pkg/app/testdata/testreadfromyaml_rendertemplatelog/log create mode 100644 pkg/config/charts.go create mode 100644 pkg/config/delete.go rename test/e2e/template/helmfile/testdata/snapshot/chart_need/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/chart_need_enable_live_output/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/{no-envs.yaml.gotmpl => no-envs.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/{no-values.yaml.gotmpl => no-values.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/{prod.yaml.gotmpl => prod.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/{test.yaml.gotmpl => test.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/{input.yaml.gotmpl => input.yaml} (58%) create mode 100644 test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/config.yaml rename test/e2e/template/helmfile/testdata/snapshot/{environments_releases_without_same_yaml_part/input.yaml.gotmpl => environments_releases_within_same_yaml_part/input.yaml} (97%) rename test/e2e/template/helmfile/testdata/snapshot/{environments_releases_without_same_yaml_part => environments_releases_within_same_yaml_part}/output.yaml (56%) delete mode 100644 test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/config.yaml rename test/e2e/template/helmfile/testdata/snapshot/environments_values_gotmpl_with_environment_name/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/hcl_mix/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/issue_1229_template_strategic_merge_with_lockfile/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/issue_473_oci_chart_url_fetch/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/issue_493_template_yaml_anchors_merge/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/issue_498_template_go_getter_with_selector/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/oci_chart_pull/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/oci_need/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/postrenderer/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/pr_560/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/release_template_inheritance/{input.yaml.gotmpl => input.yaml} (100%) rename test/e2e/template/helmfile/testdata/snapshot/templated_lockfile/{input.yaml.gotmpl => input.yaml} (100%) rename test/integration/test-cases/chart-needs/input/{helmfile.yaml.gotmpl => helmfile.yaml} (100%) rename test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches/input/{helmfile.yaml.gotmpl => helmfile.yaml} (100%) rename test/integration/test-cases/chartify/input/{helmfile.yaml.gotmpl => helmfile.yaml} (100%) create mode 100644 test/integration/test-cases/cli-overwrite-environment-values/input/input.yaml rename test/integration/test-cases/cli-overwrite-environment-values/input/{input.yaml.gotmpl => input_v1.yaml.gotmpl} (100%) create mode 100644 test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml rename test/integration/test-cases/happypath/input/{happypath.yaml.gotmpl => happypath.yaml} (100%) rename test/integration/test-cases/postrender/input/{helmfile.yaml.gotmpl => helmfile.yaml} (100%) rename test/integration/test-cases/regression/input/{issue.1682.yaml.gotmpl => issue.1682.yaml} (100%) rename test/integration/test-cases/regression/input/{issue.1857.yaml.gotmpl => issue.1857.yaml} (100%) rename test/integration/test-cases/regression/input/{issue.1867.yaml.gotmpl => issue.1867.yaml} (100%) rename test/integration/test-cases/regression/input/{issue.2118.yaml.gotmpl => issue.2118.yaml} (100%) rename test/integration/test-cases/secretssops/input/{secretssops.yaml.gotmpl => secretssops.yaml} (100%) delete mode 100644 test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values/output/result-live diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 26f579cf..2e25b18c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -59,6 +59,7 @@ jobs: plugin-secrets-version: 3.15.0 plugin-diff-version: 3.8.1 extra-helmfile-flags: '' + v1mode: '' - helm-version: v3.16.4 kustomize-version: v5.4.3 # We assume that the helm-secrets plugin is supposed to @@ -69,16 +70,26 @@ jobs: plugin-secrets-version: 4.6.0 plugin-diff-version: 3.9.14 extra-helmfile-flags: '' + v1mode: '' - helm-version: v3.17.0 kustomize-version: v5.2.1 plugin-secrets-version: 3.15.0 plugin-diff-version: 3.8.1 extra-helmfile-flags: '' + v1mode: '' - helm-version: v3.17.0 kustomize-version: v5.4.3 plugin-secrets-version: 4.6.0 plugin-diff-version: 3.9.14 extra-helmfile-flags: '' + v1mode: '' + # Helmfile v1 + - helm-version: v3.17.0 + kustomize-version: v5.4.3 + plugin-secrets-version: 4.6.0 + plugin-diff-version: 3.9.14 + extra-helmfile-flags: '' + v1mode: 'true' # In case you need to test some optional helmfile features, # enable it via extra-helmfile-flags below. - helm-version: v3.17.0 @@ -86,6 +97,7 @@ jobs: plugin-secrets-version: 4.6.0 plugin-diff-version: 3.9.14 extra-helmfile-flags: '--enable-live-output' + v1mode: '' steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -115,6 +127,7 @@ jobs: HELMFILE_HELM3: 1 TERM: xterm EXTRA_HELMFILE_FLAGS: ${{ matrix.extra-helmfile-flags }} + HELMFILE_V1MODE: ${{ matrix.v1mode }} e2e_tests: needs: tests diff --git a/.github/workflows/releaser.yaml b/.github/workflows/releaser.yaml index fc98bd7c..ee2f0dc9 100644 --- a/.github/workflows/releaser.yaml +++ b/.github/workflows/releaser.yaml @@ -16,6 +16,7 @@ permissions: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + HELMFILE_V1MODE: ${{ startsWith(github.ref, 'refs/tags/v1') }} SNAPSHOT: ${{ !startsWith(github.ref, 'refs/tags/v') && '--snapshot' || '' }} jobs: diff --git a/.goreleaser.yml b/.goreleaser.yml index aba37be9..6d515513 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,5 +1,8 @@ version: 2 project_name: helmfile +env: + # We default to non-v1 mode (=helmfile v0.x behavior) when HELMFILE_V1MODE is not set + - HELMFILE_V1MODE={{ if index .Env "HELMFILE_V1MODE" }}{{ .Env.HELMFILE_V1MODE }}{{ else }}false{{ end }} builds: - id: helmfile main: . @@ -12,6 +15,7 @@ builds: - -X go.szostok.io/version.commit={{.FullCommit}} - -X go.szostok.io/version.commitDate={{.CommitDate}} - -X go.szostok.io/version.dirtyBuild=false + - -X github.com/helmfile/helmfile/pkg/runtime.v1Mode={{.Env.HELMFILE_V1MODE}} goos: - darwin - linux diff --git a/Makefile b/Makefile index 5e009ca0..0500bd33 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,10 @@ build: go build -ldflags="$(GO_BUILD_VERSION_LDFLAGS)" ${TARGETS} .PHONY: build +build-v1: + go build -ldflags="$(GO_BUILD_VERSION_LDFLAGS) -X github.com/helmfile/helmfile/pkg/runtime.v1Mode=true" ${TARGETS} +.PHONY: build-v1 + generate: go generate ${PKGS} .PHONY: generate diff --git a/cmd/apply.go b/cmd/apply.go index 8cbe4ad9..9e6cfa47 100644 --- a/cmd/apply.go +++ b/cmd/apply.go @@ -5,6 +5,7 @@ import ( "github.com/helmfile/helmfile/pkg/app" "github.com/helmfile/helmfile/pkg/config" + "github.com/helmfile/helmfile/pkg/runtime" ) // NewApplyCmd returns apply subcmd @@ -43,6 +44,12 @@ func NewApplyCmd(globalCfg *config.GlobalImpl) *cobra.Command { f.StringVar(&applyOptions.DiffArgs, "diff-args", "", `pass args to helm helm-diff`) f.StringVar(&applyOptions.SyncArgs, "sync-args", "", `pass args to helm upgrade`) f.StringVar(&globalCfg.GlobalOptions.Args, "args", "", "pass args to helm exec") + if !runtime.V1Mode { + // TODO: Remove this function once Helmfile v0.x + f.BoolVar(&applyOptions.RetainValuesFiles, "retain-values-files", false, "DEPRECATED: Use skip-cleanup instead") + _ = f.MarkDeprecated("retain-values-files", "Use skip-cleanup instead") + } + f.BoolVar(&applyOptions.SkipCleanup, "skip-cleanup", false, "Stop cleaning up temporary values generated by helmfile and helm-secrets. Useful for debugging. Don't use in production for security") f.BoolVar(&applyOptions.SkipCRDs, "skip-crds", false, "if set, no CRDs will be installed on sync. By default, CRDs are installed if not already present") f.BoolVar(&applyOptions.SkipNeeds, "skip-needs", true, `do not automatically include releases from the target release's "needs" when --selector/-l flag is provided. Does nothing when --selector/-l flag is not provided. Defaults to true when --include-needs or --include-transitive-needs is not provided`) diff --git a/cmd/charts.go b/cmd/charts.go new file mode 100644 index 00000000..cae9d168 --- /dev/null +++ b/cmd/charts.go @@ -0,0 +1,41 @@ +// TODO: Remove this function once Helmfile v0.x +package cmd + +import ( + "github.com/spf13/cobra" + + "github.com/helmfile/helmfile/pkg/app" + "github.com/helmfile/helmfile/pkg/config" +) + +// NewChartsCmd returns charts subcmd +func NewChartsCmd(globalCfg *config.GlobalImpl) *cobra.Command { + chartsOptions := config.NewChartsOptions() + + cmd := &cobra.Command{ + Use: "charts", + Short: "DEPRECATED: sync releases from state file (helm upgrade --install)", + RunE: func(cmd *cobra.Command, args []string) error { + chartsImpl := config.NewChartsImpl(globalCfg, chartsOptions) + err := config.NewCLIConfigImpl(chartsImpl.GlobalImpl) + if err != nil { + return err + } + + if err := chartsImpl.ValidateConfig(); err != nil { + return err + } + + a := app.New(chartsImpl) + return toCLIError(chartsImpl.GlobalImpl, a.DeprecatedSyncCharts(chartsImpl)) + }, + } + + f := cmd.Flags() + f.StringVar(&globalCfg.GlobalOptions.Args, "args", "", "pass args to helm exec") + f.StringArrayVar(&chartsOptions.Set, "set", nil, "additional values to be merged into the helm command --set flag") + f.StringArrayVar(&chartsOptions.Values, "values", nil, "additional value files to be merged into the helm command --values flag") + f.IntVar(&chartsOptions.Concurrency, "concurrency", 0, "maximum number of concurrent helm processes to run, 0 is unlimited") + + return cmd +} diff --git a/cmd/delete.go b/cmd/delete.go new file mode 100644 index 00000000..1c89c147 --- /dev/null +++ b/cmd/delete.go @@ -0,0 +1,44 @@ +// TODO: Remove this function once Helmfile v0.x +package cmd + +import ( + "github.com/spf13/cobra" + + "github.com/helmfile/helmfile/pkg/app" + "github.com/helmfile/helmfile/pkg/config" +) + +// NewDeleteCmd returns delete subcmd +func NewDeleteCmd(globalCfg *config.GlobalImpl) *cobra.Command { + deleteOptions := config.NewDeleteOptions() + + cmd := &cobra.Command{ + Use: "delete", + Short: "DEPRECATED: delete releases from state file (helm delete)", + RunE: func(cmd *cobra.Command, args []string) error { + deleteImpl := config.NewDeleteImpl(globalCfg, deleteOptions) + err := config.NewCLIConfigImpl(deleteImpl.GlobalImpl) + if err != nil { + return err + } + + if err := deleteImpl.ValidateConfig(); err != nil { + return err + } + + a := app.New(deleteImpl) + return toCLIError(deleteImpl.GlobalImpl, a.Delete(deleteImpl)) + }, + } + + f := cmd.Flags() + f.StringVar(&globalCfg.GlobalOptions.Args, "args", "", "pass args to helm exec") + f.StringVar(&deleteOptions.Cascade, "cascade", "", "pass cascade to helm exec, default: background") + f.IntVar(&deleteOptions.Concurrency, "concurrency", 0, "maximum number of concurrent helm processes to run, 0 is unlimited") + f.BoolVar(&deleteOptions.Purge, "purge", false, "purge releases i.e. free release names and histories") + f.BoolVar(&deleteOptions.SkipCharts, "skip-charts", false, "don't prepare charts when deleting releases") + f.BoolVar(&deleteOptions.DeleteWait, "deleteWait", false, `override helmDefaults.wait setting "helm uninstall --wait"`) + f.IntVar(&deleteOptions.DeleteTimeout, "deleteTimeout", 300, `time in seconds to wait for helm uninstall, default: 300`) + + return cmd +} diff --git a/cmd/root.go b/cmd/root.go index ed629d12..f94cd9be 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -109,6 +109,14 @@ func NewRootCmd(globalConfig *config.GlobalOptions) (*cobra.Command, error) { ), ) + // TODO: Remove this function once Helmfile v0.x + if !runtime.V1Mode { + cmd.AddCommand( + NewChartsCmd(globalImpl), + NewDeleteCmd(globalImpl), + ) + } + return cmd, nil } diff --git a/docs/index.md b/docs/index.md index db460ca9..88c819b7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -557,6 +557,7 @@ Helmfile uses some OS environment variables to override default behaviour: * `HELMFILE_ENVIRONMENT` - specify [Helmfile environment](https://helmfile.readthedocs.io/en/latest/#environment), it has lower priority than CLI argument `--environment` * `HELMFILE_TEMPDIR` - specify directory to store temporary files * `HELMFILE_UPGRADE_NOTICE_DISABLED` - expecting any non-empty value to skip the check for the latest version of Helmfile in [helmfile version](https://helmfile.readthedocs.io/en/latest/#version) +* `HELMFILE_V1MODE` - Helmfile v0.x behaves like v1.x with `true`, Helmfile v1.x behaves like v0.x with `false` as value * `HELMFILE_GOCCY_GOYAML` - use *goccy/go-yaml* instead of *gopkg.in/yaml.v2*. It's `false` by default in Helmfile v0.x and `true` by default for Helmfile v1.x. * `HELMFILE_CACHE_HOME` - specify directory to store cached files for remote operations * `HELMFILE_FILE_PATH` - specify the path to the helmfile.yaml file diff --git a/pkg/app/app.go b/pkg/app/app.go index 3a44b252..91beba57 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -20,6 +20,7 @@ import ( "github.com/helmfile/helmfile/pkg/helmexec" "github.com/helmfile/helmfile/pkg/plugins" "github.com/helmfile/helmfile/pkg/remote" + "github.com/helmfile/helmfile/pkg/runtime" "github.com/helmfile/helmfile/pkg/state" ) @@ -138,6 +139,25 @@ func (a *App) Repos(c ReposConfigProvider) error { }, c.IncludeTransitiveNeeds(), SetFilter(true)) } +// TODO: Remove this function once Helmfile v0.x +func (a *App) DeprecatedSyncCharts(c DeprecatedChartsConfigProvider) error { + return a.ForEachState(func(run *Run) (_ bool, errs []error) { + err := run.withPreparedCharts("charts", state.ChartPrepareOptions{ + SkipRepos: true, + SkipDeps: true, + Concurrency: 2, + }, func() { + errs = run.DeprecatedSyncCharts(c) + }) + + if err != nil { + errs = append(errs, err) + } + + return + }, c.IncludeTransitiveNeeds(), SetFilter(true)) +} + func (a *App) Diff(c DiffConfigProvider) error { var allDiffDetectedErrs []error @@ -389,7 +409,7 @@ func (a *App) Apply(c ApplyConfigProvider) error { var opts []LoadOption - opts = append(opts, SetRetainValuesFiles(c.SkipCleanup())) + opts = append(opts, SetRetainValuesFiles(c.RetainValuesFiles() || c.SkipCleanup())) err := a.ForEachState(func(run *Run) (ok bool, errs []error) { includeCRDs := !c.SkipCRDs() @@ -401,7 +421,7 @@ func (a *App) Apply(c ApplyConfigProvider) error { Wait: c.Wait(), WaitForJobs: c.WaitForJobs(), IncludeCRDs: &includeCRDs, - SkipCleanup: c.SkipCleanup(), + SkipCleanup: c.RetainValuesFiles() || c.SkipCleanup(), Validate: c.Validate(), Concurrency: c.Concurrency(), IncludeTransitiveNeeds: c.IncludeNeeds(), @@ -453,6 +473,31 @@ func (a *App) Status(c StatusesConfigProvider) error { }, false, SetFilter(true)) } +// TODO: Remove this function once Helmfile v0.x +func (a *App) Delete(c DeleteConfigProvider) error { + return a.ForEachState(func(run *Run) (ok bool, errs []error) { + if !c.SkipCharts() { + err := run.withPreparedCharts("delete", state.ChartPrepareOptions{ + SkipRepos: c.SkipRefresh() || c.SkipDeps(), + SkipRefresh: c.SkipRefresh(), + SkipDeps: c.SkipDeps(), + Concurrency: c.Concurrency(), + DeleteWait: c.DeleteWait(), + DeleteTimeout: c.DeleteTimeout(), + }, func() { + ok, errs = a.delete(run, c.Purge(), c) + }) + + if err != nil { + errs = append(errs, err) + } + } else { + ok, errs = a.delete(run, c.Purge(), c) + } + return + }, false, SetReverse(true)) +} + func (a *App) Destroy(c DestroyConfigProvider) error { return a.ForEachState(func(run *Run) (ok bool, errs []error) { if !c.SkipCharts() { @@ -1213,6 +1258,16 @@ func (a *App) findDesiredStateFiles(specifiedPath string, opts LoadOpts) ([]stri case a.fs.FileExistsAt(DefaultGotmplHelmfile): defaultFile = DefaultGotmplHelmfile + + // TODO: Remove this block when we remove v0 code + case !runtime.V1Mode && a.fs.FileExistsAt(DeprecatedHelmfile): + a.Logger.Warnf( + "warn: %s is being loaded: %s is deprecated in favor of %s. See https://github.com/roboll/helmfile/issues/25 for more information", + DeprecatedHelmfile, + DeprecatedHelmfile, + DefaultHelmfile, + ) + defaultFile = DeprecatedHelmfile } switch { @@ -1377,7 +1432,7 @@ func (a *App) apply(r *Run, c ApplyConfigProvider) (bool, bool, []error) { Context: c.Context(), Output: c.DiffOutput(), Set: c.Set(), - SkipCleanup: c.SkipCleanup(), + SkipCleanup: c.RetainValuesFiles() || c.SkipCleanup(), SkipDiffOnInstall: c.SkipDiffOnInstall(), ReuseValues: c.ReuseValues(), ResetValues: c.ResetValues(), @@ -1488,7 +1543,7 @@ Do you really want to apply? syncOpts := &state.SyncOpts{ Set: c.Set(), - SkipCleanup: c.SkipCleanup(), + SkipCleanup: c.RetainValuesFiles() || c.SkipCleanup(), SkipCRDs: c.SkipCRDs(), Wait: c.Wait(), WaitForJobs: c.WaitForJobs(), diff --git a/pkg/app/app_apply_nokubectx_test.go b/pkg/app/app_apply_nokubectx_test.go index c5ca3bbe..437a467c 100644 --- a/pkg/app/app_apply_nokubectx_test.go +++ b/pkg/app/app_apply_nokubectx_test.go @@ -146,7 +146,7 @@ func TestApply_3(t *testing.T) { skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -199,7 +199,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -250,7 +250,7 @@ releases: }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -306,7 +306,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -359,7 +359,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -415,7 +415,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -464,7 +464,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def t.Run("bad --selector", func(t *testing.T) { check(t, testcase{ files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -494,6 +494,72 @@ releases: error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile", // as we check for log output, set concurrency to 1 to avoid non-deterministic test result concurrency: 1, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +0 release(s) matching app=test_non_existent found in helmfile.yaml + +changing working directory back to "/path/to" +`, }) }) } diff --git a/pkg/app/app_apply_test.go b/pkg/app/app_apply_test.go index 06caf828..057cd683 100644 --- a/pkg/app/app_apply_test.go +++ b/pkg/app/app_apply_test.go @@ -146,7 +146,7 @@ func TestApply_2(t *testing.T) { skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -199,7 +199,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -250,7 +250,7 @@ releases: }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -306,7 +306,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -359,7 +359,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -415,7 +415,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -470,7 +470,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -517,7 +517,7 @@ serviceC 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 def t.Run("bad --selector", func(t *testing.T) { check(t, testcase{ files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -547,6 +547,72 @@ releases: error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile", // as we check for log output, set concurrency to 1 to avoid non-deterministic test result concurrency: 1, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +0 release(s) matching app=test_non_existent found in helmfile.yaml + +changing working directory back to "/path/to" +`, }) }) diff --git a/pkg/app/app_list_test.go b/pkg/app/app_list_test.go index 69bbc754..4cd535ed 100644 --- a/pkg/app/app_list_test.go +++ b/pkg/app/app_list_test.go @@ -240,7 +240,6 @@ environments: values: - myrelease2: enabled: false ---- releases: - name: myrelease1 chart: mychart1 diff --git a/pkg/app/app_sync_test.go b/pkg/app/app_sync_test.go index 5115db1c..b138f2fb 100644 --- a/pkg/app/app_sync_test.go +++ b/pkg/app/app_sync_test.go @@ -142,7 +142,7 @@ func TestSync(t *testing.T) { skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -191,7 +191,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -249,7 +249,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -300,7 +300,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -348,7 +348,7 @@ serviceA 4 Fri Nov 1 08:40:07 2019 DEPLOYED chart-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -401,7 +401,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def }, error: ``, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -447,7 +447,7 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def t.Run("bad --selector", func(t *testing.T) { check(t, testcase{ files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: diff --git a/pkg/app/app_test.go b/pkg/app/app_test.go index 3ea1b062..df79ee51 100644 --- a/pkg/app/app_test.go +++ b/pkg/app/app_test.go @@ -135,7 +135,6 @@ environments: default: values: - env.*.yaml ---- releases: - name: zipkin chart: stable/zipkin @@ -171,7 +170,7 @@ BAZ: 4 t.Errorf("unexpected error: %v", err) } - expectedOrder := []string{"helmfile.yaml", "/path/to/env.1.yaml", "/path/to/env.2.yaml"} + expectedOrder := []string{"helmfile.yaml", "/path/to/env.1.yaml", "/path/to/env.2.yaml", "/path/to/env.1.yaml", "/path/to/env.2.yaml"} actualOrder := fs.SuccessfulReads() if !reflect.DeepEqual(actualOrder, expectedOrder) { t.Errorf("unexpected order of processed state files: expected=%v, actual=%v", expectedOrder, actualOrder) @@ -185,7 +184,6 @@ environments: default: values: - env.*.yaml ---- releases: - name: zipkin chart: stable/zipkin @@ -232,7 +230,6 @@ bases: - base.yaml environments: test: ---- releases: - name: zipkin chart: stable/zipkin @@ -284,7 +281,6 @@ environments: missingFileHandler: %s values: - %s ---- releases: - name: zipkin chart: stable/zipkin @@ -397,7 +393,7 @@ helmfiles: "/path/to/helmfile.d/a1.yaml": ` environments: prod: ---- + releases: - name: zipkin chart: stable/zipkin @@ -803,44 +799,41 @@ func runFilterSubHelmFilesTests(testcases []struct { func TestVisitDesiredStatesWithReleasesFiltered_EmbeddedNestedStateAdditionalEnvValues(t *testing.T) { files := map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` helmfiles: -- path: helmfile.d/a*.yaml.gotmpl +- path: helmfile.d/a*.yaml values: - env.values.yaml -- helmfile.d/b*.yaml.gotmpl -- path: helmfile.d/c*.yaml.gotmpl +- helmfile.d/b*.yaml +- path: helmfile.d/c*.yaml values: - env.values.yaml `, - "/path/to/helmfile.d/a1.yaml.gotmpl": ` + "/path/to/helmfile.d/a1.yaml": ` environments: default: values: - ns: INLINE_NS ---- releases: - name: foo chart: stable/zipkin namespace: {{ .Environment.Values.ns }} `, - "/path/to/helmfile.d/b.yaml.gotmpl": ` + "/path/to/helmfile.d/b.yaml": ` environments: default: values: - ns: INLINE_NS ---- releases: - name: bar chart: stable/grafana namespace: {{ .Environment.Values.ns }} `, - "/path/to/helmfile.d/c.yaml.gotmpl": ` + "/path/to/helmfile.d/c.yaml": ` environments: default: values: - ns: INLINE_NS ---- releases: - name: baz chart: stable/envoy @@ -858,7 +851,7 @@ ns: INLINE_NS Namespace: "", Selectors: []string{}, Env: "default", - FileOrDir: "/path/to/helmfile.yaml.gotmpl", + FileOrDir: "/path/to/helmfile.yaml", }, files) expectNoCallsToHelm(app) @@ -984,7 +977,7 @@ releases: func TestVisitDesiredStatesWithReleasesFiltered_EnvironmentValueOverrides(t *testing.T) { files := map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` environments: default: values: @@ -1028,7 +1021,7 @@ bar: "bar1" Env: "default", ValuesFiles: []string{"overrides.yaml"}, Set: map[string]any{"bar": "bar2", "baz": "baz1"}, - FileOrDir: "helmfile.yaml.gotmpl", + FileOrDir: "helmfile.yaml", }, files) expectNoCallsToHelm(app) @@ -1082,7 +1075,7 @@ func TestVisitDesiredStatesWithReleasesFiltered_StateValueOverrides(t *testing.T testcase := testcases[i] t.Run(fmt.Sprintf("case %d", i), func(t *testing.T) { files := map[string]string{ - "/path/to/helmfile.yaml.gotmpl": fmt.Sprintf(` + "/path/to/helmfile.yaml": fmt.Sprintf(` # The top-level "values" are "base" values has inherited to state values with the lowest priority. # The lowest priority results in environment-specific values to override values defined in the base. values: @@ -1149,7 +1142,7 @@ x: Env: testcase.env, ValuesFiles: []string{"overrides.yaml"}, Set: map[string]any{"x": map[string]any{"hoge": "hoge_set", "fuga": "fuga_set"}}, - FileOrDir: "helmfile.yaml.gotmpl", + FileOrDir: "helmfile.yaml", }, files) expectNoCallsToHelm(app) @@ -1449,7 +1442,7 @@ func TestLoadDesiredStateFromYaml_DuplicateReleaseName(t *testing.T) { } func TestLoadDesiredStateFromYaml_Bases(t *testing.T) { - yamlFile := "/path/to/yaml/file.gotmpl" + yamlFile := "/path/to/yaml/file" yamlContent := `bases: - ../base.yaml - ../base.gotmpl @@ -1520,7 +1513,7 @@ helmDefaults: } func TestLoadDesiredStateFromYaml_MultiPartTemplate(t *testing.T) { - yamlFile := "/path/to/yaml/file.gotmpl" + yamlFile := "/path/to/yaml/file" yamlContent := `bases: - ../base.yaml --- @@ -1726,7 +1719,7 @@ foo: FOO } func TestLoadDesiredStateFromYaml_MultiPartTemplate_WithNonDefaultEnv(t *testing.T) { - yamlFile := "/path/to/yaml/file.gotmpl" + yamlFile := "/path/to/yaml/file" yamlContent := `bases: - ../base.yaml --- @@ -1817,7 +1810,7 @@ helmDefaults: } func TestLoadDesiredStateFromYaml_MultiPartTemplate_WithReverse(t *testing.T) { - yamlFile := "/path/to/yaml/file.gotmpl" + yamlFile := "/path/to/yaml/file" yamlContent := ` {{ readFile "templates.yaml" }} @@ -1875,7 +1868,7 @@ releases: // See https://github.com/roboll/helmfile/issues/615 func TestLoadDesiredStateFromYaml_MultiPartTemplate_NoMergeArrayInEnvVal(t *testing.T) { - statePath := "/path/to/helmfile.yaml.gotmpl" + statePath := "/path/to/helmfile.yaml" stateContent := ` environments: default: @@ -1940,7 +1933,7 @@ func TestLoadDesiredStateFromYaml_MultiPartTemplate_MergeMapsVariousKeys(t *test } for i := range testcases { tc := testcases[i] - statePath := "/path/to/helmfile.yaml.gotmpl" + statePath := "/path/to/helmfile.yaml" stateContent := ` environments: default: @@ -2057,7 +2050,7 @@ releases: } for i := range testcases { tc := testcases[i] - statePath := "/path/to/helmfile.yaml.gotmpl" + statePath := "/path/to/helmfile.yaml" stateContent := fmt.Sprintf(tc.state, tc.expr) testFs := testhelper.NewTestFs(map[string]string{ statePath: stateContent, @@ -2220,6 +2213,9 @@ type applyConfig struct { cascade string values []string + // TODO: Remove this function once Helmfile v0.x + retainValuesFiles bool + set []string validate bool skipCleanup bool @@ -2380,6 +2376,11 @@ func (a applyConfig) Logger() *zap.SugaredLogger { return a.logger } +// TODO: Remove this function once Helmfile v0.x +func (a applyConfig) RetainValuesFiles() bool { + return a.retainValuesFiles +} + func (a applyConfig) SkipDiffOnInstall() bool { return a.skipDiffOnInstall } @@ -3428,7 +3429,7 @@ bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 defau skipNeeds: true, }, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -3481,9 +3482,9 @@ my-release 4 Fri Nov 1 08:40:07 2019 DEPLOYED raw-3.1.0 3.1.0 def skipNeeds: false, includeNeeds: true, }, - error: `in ./helmfile.yaml.gotmpl: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`, + error: `in ./helmfile.yaml: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -3522,7 +3523,7 @@ releases: name: "upgrades with bad selector", loc: location(), files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -3773,6 +3774,41 @@ releases: `, "/path/to/charts/example/Chart.yaml": `foo: FOO`, }, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: repositories: + 2: - name: bitnami + 3: url: https://charts.bitnami.com/bitnami/ + 4: releases: + 5: - name: example + 6: chart: /path/to/charts/example + 7: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: repositories: + 2: - name: bitnami + 3: url: https://charts.bitnami.com/bitnami/ + 4: releases: + 5: - name: example + 6: chart: /path/to/charts/example + 7: + +merged environment: &{default map[] map[]} +There are no repositories defined in your helmfile.yaml. +This means helmfile cannot update your dependencies or create a lock file. +See https://github.com/roboll/helmfile/issues/878 for more information. +changing working directory back to "/path/to" +`, charts: []string{"/path/to/charts/example"}, }, } @@ -3820,9 +3856,8 @@ releases: if tc.log != "" { actual := bs.String() + assert.Equal(t, tc.log, actual) - } else { - assertLogEqualsToSnapshot(t, bs.String()) } }) } @@ -3927,7 +3962,6 @@ environments: values: - myrelease2: enabled: false ---- releases: - name: myrelease1 chart: mychart1 @@ -3991,7 +4025,7 @@ func testSetStringValuesTemplate(t *testing.T, goccyGoYaml bool) { }) files := map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` releases: - name: zipkin chart: stable/zipkin @@ -4015,7 +4049,7 @@ releases: OverrideKubeContext: "default", Logger: newAppTestLogger(), Env: "default", - FileOrDir: "helmfile.yaml.gotmpl", + FileOrDir: "helmfile.yaml", }, files) expectNoCallsToHelm(app) @@ -4059,7 +4093,7 @@ func testSetValuesTemplate(t *testing.T, goccyGoYaml bool) { }) files := map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` releases: - name: zipkin chart: stable/zipkin @@ -4087,7 +4121,7 @@ releases: OverrideKubeContext: "default", Logger: newAppTestLogger(), Env: "default", - FileOrDir: "helmfile.yaml.gotmpl", + FileOrDir: "helmfile.yaml", }, files) expectNoCallsToHelm(app) diff --git a/pkg/app/config.go b/pkg/app/config.go index 1a46c4cc..b6e3a064 100644 --- a/pkg/app/config.go +++ b/pkg/app/config.go @@ -25,6 +25,15 @@ type ConfigProvider interface { loggingConfig } +// TODO: Remove this function once Helmfile v0.x +type DeprecatedChartsConfigProvider interface { + Values() []string + + concurrencyConfig + loggingConfig + IncludeTransitiveNeeds() bool +} + type DepsConfigProvider interface { Args() string SkipRepos() bool @@ -72,6 +81,9 @@ type ApplyConfigProvider interface { Context() int DiffOutput() string + // TODO: Remove this function once Helmfile v0.x + RetainValuesFiles() bool + Validate() bool SkipCleanup() bool SkipDiffOnInstall() bool @@ -154,6 +166,23 @@ type DiffConfigProvider interface { valuesControlMode } +// TODO: Remove this function once Helmfile v0.x +type DeleteConfigProvider interface { + Args() string + Cascade() string + + Purge() bool + SkipDeps() bool + SkipRefresh() bool + SkipCharts() bool + DeleteWait() bool + DeleteTimeout() int + + interactive + loggingConfig + concurrencyConfig +} + type DestroyConfigProvider interface { Args() string Cascade() string diff --git a/pkg/app/constants.go b/pkg/app/constants.go index 38d06ce0..63fd3af7 100644 --- a/pkg/app/constants.go +++ b/pkg/app/constants.go @@ -8,7 +8,10 @@ import ( ) const ( - DefaultHelmfile = "helmfile.yaml" + DefaultHelmfile = "helmfile.yaml" + // TODO: Remove this function once Helmfile v0.x + DeprecatedHelmfile = "charts.yaml" + DefaultHelmfileDirectory = "helmfile.d" ExperimentalSelectorExplicit = "explicit-selector-inheritance" // value to remove default selector inheritance to sub-helmfiles and use the explicit one ) diff --git a/pkg/app/desired_state_file_loader.go b/pkg/app/desired_state_file_loader.go index 90986023..76fa81f5 100644 --- a/pkg/app/desired_state_file_loader.go +++ b/pkg/app/desired_state_file_loader.go @@ -15,6 +15,7 @@ import ( "github.com/helmfile/helmfile/pkg/helmexec" "github.com/helmfile/helmfile/pkg/policy" "github.com/helmfile/helmfile/pkg/remote" + "github.com/helmfile/helmfile/pkg/runtime" "github.com/helmfile/helmfile/pkg/state" ) @@ -161,14 +162,21 @@ func (a *desiredStateLoader) underlying() *state.StateCreator { func (a *desiredStateLoader) rawLoad(yaml []byte, baseDir, file string, evaluateBases bool, env, overrodeEnv *environment.Environment) (*state.HelmState, error) { var st *state.HelmState var err error - merged, err := env.Merge(overrodeEnv) - if err != nil { - return nil, err - } + if runtime.V1Mode { + st, err = a.underlying().ParseAndLoad(yaml, baseDir, file, a.env, false, evaluateBases, env, overrodeEnv) + if err != nil { + return nil, err + } + } else { + merged, err := env.Merge(overrodeEnv) + if err != nil { + return nil, err + } - st, err = a.underlying().ParseAndLoad(yaml, baseDir, file, a.env, false, evaluateBases, merged, nil) - if err != nil { - return nil, err + st, err = a.underlying().ParseAndLoad(yaml, baseDir, file, a.env, false, evaluateBases, merged, nil) + if err != nil { + return nil, err + } } helmfiles, err := st.ExpandedHelmfiles() if err != nil { @@ -199,7 +207,7 @@ func (ld *desiredStateLoader) load(env, overrodeEnv *environment.Environment, ba var rawContent []byte - if filepath.Ext(filename) == ".gotmpl" { + if filepath.Ext(filename) == ".gotmpl" || !runtime.V1Mode { var yamlBuf *bytes.Buffer var err error diff --git a/pkg/app/diff_nokubectx_test.go b/pkg/app/diff_nokubectx_test.go index 9b2d36c8..cd0239ad 100644 --- a/pkg/app/diff_nokubectx_test.go +++ b/pkg/app/diff_nokubectx_test.go @@ -636,7 +636,7 @@ bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 defau loc: location(), flags: flags{skipNeeds: true}, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -677,7 +677,7 @@ releases: loc: location(), flags: flags{skipNeeds: false}, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -711,14 +711,81 @@ releases: upgraded: []exectest.Release{}, // as we check for log output, set concurrency to 1 to avoid non-deterministic test result concurrency: 1, - error: `in ./helmfile.yaml.gotmpl: release "default/external-secrets" depends on "kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`, + error: `in ./helmfile.yaml: release "default/external-secrets" depends on "kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +2 release(s) matching app=test found in helmfile.yaml + +err: release "default/external-secrets" depends on "kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +changing working directory back to "/path/to" +`, }, { // see https://github.com/roboll/helmfile/issues/919#issuecomment-549831747 name: "upgrades with bad selector", loc: location(), files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -750,6 +817,72 @@ releases: error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile", // as we check for log output, set concurrency to 1 to avoid non-deterministic test result concurrency: 1, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +0 release(s) matching app=test_non_existent found in helmfile.yaml + +changing working directory back to "/path/to" +`, }, // // error cases @@ -779,6 +912,46 @@ releases: deleted: []exectest.Release{}, concurrency: 1, error: `in ./helmfile.yaml: release(s) "foo" depend(s) on an undefined release "bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"?`, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +merged environment: &{default 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 + +err: release(s) "foo" depend(s) on an undefined release "bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"? +changing working directory back to "/path/to" +`, }, } diff --git a/pkg/app/diff_test.go b/pkg/app/diff_test.go index 372badff..f1987143 100644 --- a/pkg/app/diff_test.go +++ b/pkg/app/diff_test.go @@ -931,7 +931,7 @@ bar 4 Fri Nov 1 08:40:07 2019 DEPLOYED mychart2-3.1.0 3.1.0 defau loc: location(), flags: flags{skipNeeds: true}, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -972,7 +972,7 @@ releases: loc: location(), flags: flags{skipNeeds: false}, files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -1006,14 +1006,81 @@ releases: upgraded: []exectest.Release{}, // as we check for log output, set concurrency to 1 to avoid non-deterministic test result concurrency: 1, - error: `in ./helmfile.yaml.gotmpl: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`, + error: `in ./helmfile.yaml: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies`, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +2 release(s) matching app=test found in helmfile.yaml + +err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies +changing working directory back to "/path/to" +`, }, { // see https://github.com/roboll/helmfile/issues/919#issuecomment-549831747 name: "upgrades with bad selector", loc: location(), files: map[string]string{ - "/path/to/helmfile.yaml.gotmpl": ` + "/path/to/helmfile.yaml": ` {{ $mark := "a" }} releases: @@ -1045,6 +1112,72 @@ releases: error: "err: no releases found that matches specified selector(app=test_non_existent) and environment(default), in any helmfile", // as we check for log output, set concurrency to 1 to avoid non-deterministic test result concurrency: 1, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +merged environment: &{default map[] map[]} +0 release(s) matching app=test_non_existent found in helmfile.yaml + +changing working directory back to "/path/to" +`, }, // // error cases @@ -1075,6 +1208,43 @@ releases: deleted: []exectest.Release{}, concurrency: 1, error: `in ./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`, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart3 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart3 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + +merged environment: &{default map[] map[]} +1 release(s) matching name=foo found in helmfile.yaml + +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 +changing working directory back to "/path/to" +`, }, { name: "non-existent release in needs", @@ -1101,6 +1271,46 @@ releases: deleted: []exectest.Release{}, concurrency: 1, error: `in ./helmfile.yaml: release(s) "default//foo" depend(s) on an undefined release "default//bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"?`, + log: `processing file "helmfile.yaml" in directory "." +changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +merged environment: &{default 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 + +err: release(s) "default//foo" depend(s) on an undefined release "default//bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"? +changing working directory back to "/path/to" +`, }, } diff --git a/pkg/app/run.go b/pkg/app/run.go index f01c2d4d..e29fce2a 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -135,6 +135,17 @@ func (r *Run) Repos(c ReposConfigProvider) error { return r.ctx.SyncReposOnce(r.state, r.helm) } +// TODO: Remove this function once Helmfile v0.x +func (r *Run) DeprecatedSyncCharts(c DeprecatedChartsConfigProvider) []error { + st := r.state + helm := r.helm + + affectedReleases := state.AffectedReleases{} + errs := st.SyncReleases(&affectedReleases, helm, c.Values(), c.Concurrency()) + affectedReleases.DisplayAffectedReleases(c.Logger()) + return errs +} + func (r *Run) diff(triggerCleanupEvent bool, detailedExitCode bool, c DiffConfigProvider, diffOpts *state.DiffOpts) (*string, map[string]state.ReleaseSpec, map[string]state.ReleaseSpec, []error) { st := r.state helm := r.helm diff --git a/pkg/app/testdata/app_diff_test/bad_selector b/pkg/app/testdata/app_diff_test/bad_selector index 7d03a1f4..9a3ab785 100644 --- a/pkg/app/testdata/app_diff_test/bad_selector +++ b/pkg/app/testdata/app_diff_test/bad_selector @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 0 release(s) matching app=test_non_existent found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test/fail_on_unselected_need_by_default b/pkg/app/testdata/app_diff_test/fail_on_unselected_need_by_default index ab53c3ad..a0113f65 100644 --- a/pkg/app/testdata/app_diff_test/fail_on_unselected_need_by_default +++ b/pkg/app/testdata/app_diff_test/fail_on_unselected_need_by_default @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test/include-needs b/pkg/app/testdata/app_diff_test/include-needs index 58fa9cab..892b6ea0 100644 --- a/pkg/app/testdata/app_diff_test/include-needs +++ b/pkg/app/testdata/app_diff_test/include-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 368cb842..9154b011 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 0396ca0d..84a81703 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 368cb842..9154b011 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 0396ca0d..84a81703 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test/include-transitive-needs b/pkg/app/testdata/app_diff_test/include-transitive-needs index 58fa9cab..892b6ea0 100644 --- a/pkg/app/testdata/app_diff_test/include-transitive-needs +++ b/pkg/app/testdata/app_diff_test/include-transitive-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 0396ca0d..84a81703 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test/no-hooks b/pkg/app/testdata/app_diff_test/no-hooks index ceb99f63..67ee2936 100644 --- a/pkg/app/testdata/app_diff_test/no-hooks +++ b/pkg/app/testdata/app_diff_test/no-hooks @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test/show_diff_on_changed_selected_release b/pkg/app/testdata/app_diff_test/show_diff_on_changed_selected_release index 66b419fa..a695f222 100644 --- a/pkg/app/testdata/app_diff_test/show_diff_on_changed_selected_release +++ b/pkg/app/testdata/app_diff_test/show_diff_on_changed_selected_release @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: a + 3: chart: incubator/raw + 4: namespace: default + 5: - name: b + 6: chart: incubator/raw + 7: namespace: default + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: a + 3: chart: incubator/raw + 4: namespace: default + 5: - name: b + 6: chart: incubator/raw + 7: namespace: default + 8: + merged environment: &{default map[] map[]} 1 release(s) matching name=a found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test/shows_no_diff_on_already_uninstalled_selected_release b/pkg/app/testdata/app_diff_test/shows_no_diff_on_already_uninstalled_selected_release index 58d51e49..a0a45f09 100644 --- a/pkg/app/testdata/app_diff_test/shows_no_diff_on_already_uninstalled_selected_release +++ b/pkg/app/testdata/app_diff_test/shows_no_diff_on_already_uninstalled_selected_release @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: a + 3: chart: incubator/raw + 4: installed: false + 5: namespace: default + 6: - name: b + 7: chart: incubator/raw + 8: namespace: default + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: a + 3: chart: incubator/raw + 4: installed: false + 5: namespace: default + 6: - name: b + 7: chart: incubator/raw + 8: namespace: default + 9: + merged environment: &{default map[] map[]} 1 release(s) matching name=a found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test/skip-needs b/pkg/app/testdata/app_diff_test/skip-needs index ceb99f63..67ee2936 100644 --- a/pkg/app/testdata/app_diff_test/skip-needs +++ b/pkg/app/testdata/app_diff_test/skip-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_1/bar b/pkg/app/testdata/app_diff_test_1/bar index 26cad101..cf0a0bb0 100644 --- a/pkg/app/testdata/app_diff_test_1/bar +++ b/pkg/app/testdata/app_diff_test_1/bar @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: mychart2 + 9: namespace: ns2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: mychart2 + 9: namespace: ns2 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml 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 96453206..993d71e8 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,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: installed: false + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: installed: false + 7: needs: + 8: - foo + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml 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 9afd557d..febbbebd 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_include-needs b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_include-needs index 820af517..1ac8c2d3 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_include-needs +++ b/pkg/app/testdata/app_diff_test_1/delete_bar_when_foo_needs_bar_with_include-needs @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 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 b79babf5..2cae2be4 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_bar_needs_foo index ba652995..db62f332 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_bar_needs_foo @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: needs: + 6: - foo + 7: - name: foo + 8: chart: mychart1 + 9: installed: false +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: needs: + 6: - foo + 7: - name: foo + 8: chart: mychart1 + 9: installed: false +10: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_foo_needs_bar index a3469c08..7268940e 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_1/delete_foo_and_bar_when_foo_needs_bar @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: installed: false + 8: needs: + 9: - bar +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: installed: false + 8: needs: + 9: - bar +10: + merged environment: &{default 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 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 fb673733..b10dd133 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_include-needs b/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_include-needs index 3456f070..c34f7b46 100644 --- a/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_include-needs +++ b/pkg/app/testdata/app_diff_test_1/delete_foo_when_bar_needs_foo_with_include-needs @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + merged environment: &{default 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 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 13f06734..60002d0c 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + merged environment: &{default 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 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 cb7b8fc7..f2e49270 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,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/helm3_upgrade_when_ns2_bar_needs_ns1_foo b/pkg/app/testdata/app_diff_test_1/helm3_upgrade_when_ns2_bar_needs_ns1_foo index bb76a70e..2c4a2fef 100644 --- a/pkg/app/testdata/app_diff_test_1/helm3_upgrade_when_ns2_bar_needs_ns1_foo +++ b/pkg/app/testdata/app_diff_test_1/helm3_upgrade_when_ns2_bar_needs_ns1_foo @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: mychart1 + 9: namespace: ns1 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: mychart1 + 9: namespace: ns1 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/install b/pkg/app/testdata/app_diff_test_1/install index ba4ef00f..bc8c2830 100644 --- a/pkg/app/testdata/app_diff_test_1/install +++ b/pkg/app/testdata/app_diff_test_1/install @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: mychart3 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: - name: bar + 9: chart: mychart2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: mychart3 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: - name: bar + 9: chart: mychart2 +10: + merged environment: &{default map[] map[]} 3 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs b/pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs deleted file mode 100644 index 60dead90..00000000 --- a/pkg/app/testdata/app_diff_test_1/non-existent_release_in_needs +++ /dev/null @@ -1,8 +0,0 @@ -processing file "helmfile.yaml" in directory "." -changing working directory to "/path/to" -merged environment: &{default 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 - -err: release(s) "default//foo" depend(s) on an undefined release "default//bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"? -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/noop b/pkg/app/testdata/app_diff_test_1/noop index beea0d82..5c2c5753 100644 --- a/pkg/app/testdata/app_diff_test_1/noop +++ b/pkg/app/testdata/app_diff_test_1/noop @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/smoke b/pkg/app/testdata/app_diff_test_1/smoke index b11d65d4..3cd9cd5a 100644 --- a/pkg/app/testdata/app_diff_test_1/smoke +++ b/pkg/app/testdata/app_diff_test_1/smoke @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 10 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/unselected_release_in_needs b/pkg/app/testdata/app_diff_test_1/unselected_release_in_needs deleted file mode 100644 index d82f9d50..00000000 --- a/pkg/app/testdata/app_diff_test_1/unselected_release_in_needs +++ /dev/null @@ -1,7 +0,0 @@ -processing file "helmfile.yaml" in directory "." -changing working directory to "/path/to" -merged environment: &{default map[] map[]} -1 release(s) matching name=foo found in helmfile.yaml - -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 -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo index e1ade01c..20aae345 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo,_with_ns_override b/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo,_with_ns_override index 37ac4517..f78c15ac 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo,_with_ns_override +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_bar_needs_foo,_with_ns_override @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar index 4add017f..b87bccce 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar,_with_ns_override b/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar,_with_ns_override index f54ab275..e0d964ad 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar,_with_ns_override +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar,_with_ns_override @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar_with_context_override b/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar_with_context_override index 358aaaf6..bbdfc3d1 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar_with_context_override +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_foo_needs_bar_with_context_override @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: helmDefaults: + 2: kubeContext: hello/world + 3: releases: + 4: - name: bar + 5: chart: mychart2 + 6: - name: foo + 7: chart: mychart1 + 8: needs: + 9: - bar +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: helmDefaults: + 2: kubeContext: hello/world + 3: releases: + 4: - name: bar + 5: chart: mychart2 + 6: - name: foo + 7: chart: mychart1 + 8: needs: + 9: - bar +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_releaseb_needs_releasea_with_aws_context b/pkg/app/testdata/app_diff_test_1/upgrade_when_releaseb_needs_releasea_with_aws_context index 1ca95228..e6383a6a 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_releaseb_needs_releasea_with_aws_context +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_releaseb_needs_releasea_with_aws_context @@ -1,5 +1,42 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: releaseA + 3: chart: mychart1 + 4: namespace: namespaceA + 5: kubeContext: arn:aws:eks:us-east-1:1234567890:cluster/myekscluster + 6: - name: releaseB + 7: chart: mychart2 + 8: namespace: namespaceA + 9: kubeContext: arn:aws:eks:us-east-1:1234567890:cluster/myekscluster +10: needs: +11: - arn:aws:eks:us-east-1:1234567890:cluster/myekscluster/namespaceA/releaseA +12: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: releaseA + 3: chart: mychart1 + 4: namespace: namespaceA + 5: kubeContext: arn:aws:eks:us-east-1:1234567890:cluster/myekscluster + 6: - name: releaseB + 7: chart: mychart2 + 8: namespace: namespaceA + 9: kubeContext: arn:aws:eks:us-east-1:1234567890:cluster/myekscluster +10: needs: +11: - arn:aws:eks:us-east-1:1234567890:cluster/myekscluster/namespaceA/releaseA +12: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrade_when_tns1_ns1_foo_needs_tns2_ns2_bar b/pkg/app/testdata/app_diff_test_1/upgrade_when_tns1_ns1_foo_needs_tns2_ns2_bar index 26cad101..cf0a0bb0 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrade_when_tns1_ns1_foo_needs_tns2_ns2_bar +++ b/pkg/app/testdata/app_diff_test_1/upgrade_when_tns1_ns1_foo_needs_tns2_ns2_bar @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: mychart2 + 9: namespace: ns2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: mychart2 + 9: namespace: ns2 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector b/pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector deleted file mode 100644 index 8e3e99cf..00000000 --- a/pkg/app/testdata/app_diff_test_1/upgrades_with_bad_selector +++ /dev/null @@ -1,33 +0,0 @@ -processing file "helmfile.yaml.gotmpl" in directory "." -changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": - 0: - 1: - 2: - 3: releases: - 4: - name: kubernetes-external-secrets - 5: chart: incubator/raw - 6: namespace: kube-system - 7: - 8: - name: external-secrets - 9: chart: incubator/raw -10: namespace: default -11: labels: -12: app: test -13: needs: -14: - kube-system/kubernetes-external-secrets -15: -16: - name: my-release -17: chart: incubator/raw -18: namespace: default -19: labels: -20: app: test -21: needs: -22: - default/external-secrets -23: - -merged environment: &{default map[] map[]} -0 release(s) matching app=test_non_existent found in helmfile.yaml.gotmpl - -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false b/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false deleted file mode 100644 index f29aa140..00000000 --- a/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=false +++ /dev/null @@ -1,34 +0,0 @@ -processing file "helmfile.yaml.gotmpl" in directory "." -changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": - 0: - 1: - 2: - 3: releases: - 4: - name: kubernetes-external-secrets - 5: chart: incubator/raw - 6: namespace: kube-system - 7: - 8: - name: external-secrets - 9: chart: incubator/raw -10: namespace: default -11: labels: -12: app: test -13: needs: -14: - kube-system/kubernetes-external-secrets -15: -16: - name: my-release -17: chart: incubator/raw -18: namespace: default -19: labels: -20: app: test -21: needs: -22: - default/external-secrets -23: - -merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl - -err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=true b/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=true index 6e264062..427f901f 100644 --- a/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=true +++ b/pkg/app/testdata/app_diff_test_1/upgrades_with_good_selector_with_--skip-needs=true @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml processing 2 groups of releases in this order: GROUP RELEASES diff --git a/pkg/app/testdata/app_diff_test_2/bar b/pkg/app/testdata/app_diff_test_2/bar index f5cea33b..91ee7d7e 100644 --- a/pkg/app/testdata/app_diff_test_2/bar +++ b/pkg/app/testdata/app_diff_test_2/bar @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: mychart2 + 9: namespace: ns2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: mychart2 + 9: namespace: ns2 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml 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 7867ad46..4e540849 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,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: installed: false + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: installed: false + 7: needs: + 8: - foo + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml 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 e0bc8dea..f3a1cd0f 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_include-needs b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_include-needs index f08db1b7..451d5aba 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_include-needs +++ b/pkg/app/testdata/app_diff_test_2/delete_bar_when_foo_needs_bar_with_include-needs @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 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 03791661..a54fce36 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_bar_needs_foo index ba652995..db62f332 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_bar_needs_foo @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: needs: + 6: - foo + 7: - name: foo + 8: chart: mychart1 + 9: installed: false +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: needs: + 6: - foo + 7: - name: foo + 8: chart: mychart1 + 9: installed: false +10: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_foo_needs_bar index a3469c08..7268940e 100644 --- a/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_2/delete_foo_and_bar_when_foo_needs_bar @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: installed: false + 8: needs: + 9: - bar +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: installed: false + 5: - name: foo + 6: chart: mychart1 + 7: installed: false + 8: needs: + 9: - bar +10: + merged environment: &{default 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 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 52e9c63e..f4cc93bd 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: installed: false + 5: - name: bar + 6: chart: mychart2 + 7: needs: + 8: - foo + 9: + merged environment: &{default 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 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 b897150f..8c2fb60c 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,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/foo b/pkg/app/testdata/app_diff_test_2/foo index 2638d8ff..7cdf3a2e 100644 --- a/pkg/app/testdata/app_diff_test_2/foo +++ b/pkg/app/testdata/app_diff_test_2/foo @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: mychart1 + 9: namespace: ns1 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: mychart1 + 9: namespace: ns1 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/helm3_upgrade_when_ns2_bar_needs_ns1_foo b/pkg/app/testdata/app_diff_test_2/helm3_upgrade_when_ns2_bar_needs_ns1_foo index 2638d8ff..7cdf3a2e 100644 --- a/pkg/app/testdata/app_diff_test_2/helm3_upgrade_when_ns2_bar_needs_ns1_foo +++ b/pkg/app/testdata/app_diff_test_2/helm3_upgrade_when_ns2_bar_needs_ns1_foo @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: mychart1 + 9: namespace: ns1 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: mychart1 + 9: namespace: ns1 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/install b/pkg/app/testdata/app_diff_test_2/install index 55f951fc..95591b3a 100644 --- a/pkg/app/testdata/app_diff_test_2/install +++ b/pkg/app/testdata/app_diff_test_2/install @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: mychart3 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: - name: bar + 9: chart: mychart2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: mychart3 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: - name: bar + 9: chart: mychart2 +10: + merged environment: &{default map[] map[]} 3 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/non-existent_release_in_needs b/pkg/app/testdata/app_diff_test_2/non-existent_release_in_needs deleted file mode 100644 index 34aaed69..00000000 --- a/pkg/app/testdata/app_diff_test_2/non-existent_release_in_needs +++ /dev/null @@ -1,8 +0,0 @@ -processing file "helmfile.yaml" in directory "." -changing working directory to "/path/to" -merged environment: &{default 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 - -err: release(s) "foo" depend(s) on an undefined release "bar". Perhaps you made a typo in "needs" or forgot defining a release named "bar" with appropriate "namespace" and "kubeContext"? -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_2/noop b/pkg/app/testdata/app_diff_test_2/noop index 3f843e50..4bb79c7f 100644 --- a/pkg/app/testdata/app_diff_test_2/noop +++ b/pkg/app/testdata/app_diff_test_2/noop @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/smoke b/pkg/app/testdata/app_diff_test_2/smoke index 52de3861..fcaf8164 100644 --- a/pkg/app/testdata/app_diff_test_2/smoke +++ b/pkg/app/testdata/app_diff_test_2/smoke @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 10 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo b/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo index 2239c0c5..6b69bd73 100644 --- a/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo +++ b/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo,_with_ns_override b/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo,_with_ns_override index 0841c62e..87892d12 100644 --- a/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo,_with_ns_override +++ b/pkg/app/testdata/app_diff_test_2/upgrade_when_bar_needs_foo,_with_ns_override @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: mychart1 + 4: - name: bar + 5: chart: mychart2 + 6: needs: + 7: - foo + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar b/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar index 0a5c6018..7ea553a7 100644 --- a/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar +++ b/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar,_with_ns_override b/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar,_with_ns_override index 686dabf1..49bb72fe 100644 --- a/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar,_with_ns_override +++ b/pkg/app/testdata/app_diff_test_2/upgrade_when_foo_needs_bar,_with_ns_override @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: mychart2 + 4: - name: foo + 5: chart: mychart1 + 6: needs: + 7: - bar + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/app_diff_test_2/upgrades_with_bad_selector b/pkg/app/testdata/app_diff_test_2/upgrades_with_bad_selector deleted file mode 100644 index 8e3e99cf..00000000 --- a/pkg/app/testdata/app_diff_test_2/upgrades_with_bad_selector +++ /dev/null @@ -1,33 +0,0 @@ -processing file "helmfile.yaml.gotmpl" in directory "." -changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": - 0: - 1: - 2: - 3: releases: - 4: - name: kubernetes-external-secrets - 5: chart: incubator/raw - 6: namespace: kube-system - 7: - 8: - name: external-secrets - 9: chart: incubator/raw -10: namespace: default -11: labels: -12: app: test -13: needs: -14: - kube-system/kubernetes-external-secrets -15: -16: - name: my-release -17: chart: incubator/raw -18: namespace: default -19: labels: -20: app: test -21: needs: -22: - default/external-secrets -23: - -merged environment: &{default map[] map[]} -0 release(s) matching app=test_non_existent found in helmfile.yaml.gotmpl - -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=false b/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=false deleted file mode 100644 index 3be41c57..00000000 --- a/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=false +++ /dev/null @@ -1,34 +0,0 @@ -processing file "helmfile.yaml.gotmpl" in directory "." -changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": - 0: - 1: - 2: - 3: releases: - 4: - name: kubernetes-external-secrets - 5: chart: incubator/raw - 6: namespace: kube-system - 7: - 8: - name: external-secrets - 9: chart: incubator/raw -10: namespace: default -11: labels: -12: app: test -13: needs: -14: - kube-system/kubernetes-external-secrets -15: -16: - name: my-release -17: chart: incubator/raw -18: namespace: default -19: labels: -20: app: test -21: needs: -22: - default/external-secrets -23: - -merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl - -err: release "default/external-secrets" depends on "kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=true b/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=true index e61b33e8..926e26fd 100644 --- a/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=true +++ b/pkg/app/testdata/app_diff_test_2/upgrades_with_good_selector_with_--skip-needs=true @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml processing 2 groups of releases in this order: GROUP RELEASES diff --git a/pkg/app/testdata/app_lint_test/bad_selector b/pkg/app/testdata/app_lint_test/bad_selector index 7d03a1f4..9a3ab785 100644 --- a/pkg/app/testdata/app_lint_test/bad_selector +++ b/pkg/app/testdata/app_lint_test/bad_selector @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 0 release(s) matching app=test_non_existent found in helmfile.yaml diff --git a/pkg/app/testdata/app_lint_test/fail_on_unselected_need_by_default b/pkg/app/testdata/app_lint_test/fail_on_unselected_need_by_default index ab53c3ad..a0113f65 100644 --- a/pkg/app/testdata/app_lint_test/fail_on_unselected_need_by_default +++ b/pkg/app/testdata/app_lint_test/fail_on_unselected_need_by_default @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_lint_test/include-needs b/pkg/app/testdata/app_lint_test/include-needs index 58fa9cab..892b6ea0 100644 --- a/pkg/app/testdata/app_lint_test/include-needs +++ b/pkg/app/testdata/app_lint_test/include-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 54c6135e..ad93dd62 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 f2ad0c8f..c51d74d8 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 54c6135e..ad93dd62 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 f2ad0c8f..c51d74d8 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_lint_test/include-transitive-needs b/pkg/app/testdata/app_lint_test/include-transitive-needs index 58fa9cab..892b6ea0 100644 --- a/pkg/app/testdata/app_lint_test/include-transitive-needs +++ b/pkg/app/testdata/app_lint_test/include-transitive-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 f2ad0c8f..c51d74d8 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_lint_test/skip-needs b/pkg/app/testdata/app_lint_test/skip-needs index ceb99f63..67ee2936 100644 --- a/pkg/app/testdata/app_lint_test/skip-needs +++ b/pkg/app/testdata/app_lint_test/skip-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_list_test/default_environment_includes_all_releases b/pkg/app/testdata/app_list_test/default_environment_includes_all_releases index 75efff96..5dd4bb4a 100644 --- a/pkg/app/testdata/app_list_test/default_environment_includes_all_releases +++ b/pkg/app/testdata/app_list_test/default_environment_includes_all_releases @@ -1,16 +1,221 @@ found 3 helmfile state files in helmfile.d: /path/to/helmfile.d/helmfile_1.yaml, /path/to/helmfile.d/helmfile_2.yaml, /path/to/helmfile.d/helmfile_3.yaml processing file "helmfile_1.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_1.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + merged environment: &{default map[] map[]} +first-pass rendering starting for "helmfile_1.yaml.part.1": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: + 5: - name: kubernetes-external-secrets + 6: chart: incubator/raw + 7: namespace: kube-system + 8: needs: + 9: - kube-system/logging +10: +11: - name: external-secrets +12: chart: incubator/raw +13: namespace: default +14: labels: +15: app: test +16: needs: +17: - kube-system/kubernetes-external-secrets +18: +19: - name: my-release +20: chart: incubator/raw +21: namespace: default +22: labels: +23: app: test +24: needs: +25: - default/external-secrets +26: +27: +28: # Disabled releases are treated as missing +29: - name: disabled +30: chart: incubator/raw +31: namespace: kube-system +32: installed: false +33: +34: - name: test2 +35: chart: incubator/raw +36: needs: +37: - kube-system/disabled +38: +39: - name: test3 +40: chart: incubator/raw +41: needs: +42: - test2 +43: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.1": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: + 5: - name: kubernetes-external-secrets + 6: chart: incubator/raw + 7: namespace: kube-system + 8: needs: + 9: - kube-system/logging +10: +11: - name: external-secrets +12: chart: incubator/raw +13: namespace: default +14: labels: +15: app: test +16: needs: +17: - kube-system/kubernetes-external-secrets +18: +19: - name: my-release +20: chart: incubator/raw +21: namespace: default +22: labels: +23: app: test +24: needs: +25: - default/external-secrets +26: +27: +28: # Disabled releases are treated as missing +29: - name: disabled +30: chart: incubator/raw +31: namespace: kube-system +32: installed: false +33: +34: - name: test2 +35: chart: incubator/raw +36: needs: +37: - kube-system/disabled +38: +39: - name: test3 +40: chart: incubator/raw +41: needs: +42: - test2 +43: + merged environment: &{default 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 changing working directory back to "/path/to" processing file "helmfile_2.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_2.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + merged environment: &{default map[] map[]} +first-pass rendering starting for "helmfile_2.yaml.part.1": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.1": + 0: repositories: + 1: - name: bitnami + 2: url: https://charts.bitnami.com/bitnami + 3: + 4: releases: + 5: - name: cache + 6: namespace: my-app + 7: chart: bitnami/redis + 8: version: 17.0.7 + 9: labels: +10: app: test +11: +12: - name: database +13: namespace: my-app +14: chart: bitnami/postgres +15: version: 11.6.22 +16: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.1": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.1": + 0: repositories: + 1: - name: bitnami + 2: url: https://charts.bitnami.com/bitnami + 3: + 4: releases: + 5: - name: cache + 6: namespace: my-app + 7: chart: bitnami/redis + 8: version: 17.0.7 + 9: labels: +10: app: test +11: +12: - name: database +13: namespace: my-app +14: chart: bitnami/postgres +15: version: 11.6.22 +16: + merged environment: &{default map[] map[]} changing working directory back to "/path/to" processing file "helmfile_3.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_3.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile_3.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + merged environment: &{default map[] map[]} changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_list_test/fail_on_unknown_environment b/pkg/app/testdata/app_list_test/fail_on_unknown_environment index 9eccd0c3..040b2ebe 100644 --- a/pkg/app/testdata/app_list_test/fail_on_unknown_environment +++ b/pkg/app/testdata/app_list_test/fail_on_unknown_environment @@ -1,13 +1,74 @@ found 3 helmfile state files in helmfile.d: /path/to/helmfile.d/helmfile_1.yaml, /path/to/helmfile.d/helmfile_2.yaml, /path/to/helmfile.d/helmfile_3.yaml processing file "helmfile_1.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_1.yaml.part.0": inherited=&{staging map[] map[]}, overrode= +first-pass uses: &{staging map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + +first-pass produced: &{staging map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.0": {staging map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + merged environment: &{staging map[] map[]} changing working directory back to "/path/to" processing file "helmfile_2.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_2.yaml.part.0": inherited=&{staging map[] map[]}, overrode= +first-pass uses: &{staging map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + +first-pass produced: &{staging map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.0": {staging map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + merged environment: &{staging map[] map[]} changing working directory back to "/path/to" processing file "helmfile_3.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_3.yaml.part.0": inherited=&{staging map[] map[]}, overrode= +first-pass uses: &{staging map[] map[]} +first-pass rendering output of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + +first-pass produced: &{staging map[] map[]} +first-pass rendering result of "helmfile_3.yaml.part.0": {staging map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + merged environment: &{staging map[] map[]} changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_multiple_files b/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_multiple_files index b161220b..8350e3c8 100644 --- a/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_multiple_files +++ b/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_multiple_files @@ -1,16 +1,221 @@ found 3 helmfile state files in helmfile.d: /path/to/helmfile.d/helmfile_1.yaml, /path/to/helmfile.d/helmfile_2.yaml, /path/to/helmfile.d/helmfile_3.yaml processing file "helmfile_1.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_1.yaml.part.0": inherited=&{shared map[] map[]}, overrode= +first-pass uses: &{shared map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + +first-pass produced: &{shared map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.0": {shared map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + merged environment: &{shared map[] map[]} +first-pass rendering starting for "helmfile_1.yaml.part.1": inherited=&{shared map[] map[]}, overrode= +first-pass uses: &{shared map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: + 5: - name: kubernetes-external-secrets + 6: chart: incubator/raw + 7: namespace: kube-system + 8: needs: + 9: - kube-system/logging +10: +11: - name: external-secrets +12: chart: incubator/raw +13: namespace: default +14: labels: +15: app: test +16: needs: +17: - kube-system/kubernetes-external-secrets +18: +19: - name: my-release +20: chart: incubator/raw +21: namespace: default +22: labels: +23: app: test +24: needs: +25: - default/external-secrets +26: +27: +28: # Disabled releases are treated as missing +29: - name: disabled +30: chart: incubator/raw +31: namespace: kube-system +32: installed: false +33: +34: - name: test2 +35: chart: incubator/raw +36: needs: +37: - kube-system/disabled +38: +39: - name: test3 +40: chart: incubator/raw +41: needs: +42: - test2 +43: + +first-pass produced: &{shared map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.1": {shared map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: + 5: - name: kubernetes-external-secrets + 6: chart: incubator/raw + 7: namespace: kube-system + 8: needs: + 9: - kube-system/logging +10: +11: - name: external-secrets +12: chart: incubator/raw +13: namespace: default +14: labels: +15: app: test +16: needs: +17: - kube-system/kubernetes-external-secrets +18: +19: - name: my-release +20: chart: incubator/raw +21: namespace: default +22: labels: +23: app: test +24: needs: +25: - default/external-secrets +26: +27: +28: # Disabled releases are treated as missing +29: - name: disabled +30: chart: incubator/raw +31: namespace: kube-system +32: installed: false +33: +34: - name: test2 +35: chart: incubator/raw +36: needs: +37: - kube-system/disabled +38: +39: - name: test3 +40: chart: incubator/raw +41: needs: +42: - test2 +43: + merged environment: &{shared 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 changing working directory back to "/path/to" processing file "helmfile_2.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_2.yaml.part.0": inherited=&{shared map[] map[]}, overrode= +first-pass uses: &{shared map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + +first-pass produced: &{shared map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.0": {shared map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + merged environment: &{shared map[] map[]} +first-pass rendering starting for "helmfile_2.yaml.part.1": inherited=&{shared map[] map[]}, overrode= +first-pass uses: &{shared map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.1": + 0: repositories: + 1: - name: bitnami + 2: url: https://charts.bitnami.com/bitnami + 3: + 4: releases: + 5: - name: cache + 6: namespace: my-app + 7: chart: bitnami/redis + 8: version: 17.0.7 + 9: labels: +10: app: test +11: +12: - name: database +13: namespace: my-app +14: chart: bitnami/postgres +15: version: 11.6.22 +16: + +first-pass produced: &{shared map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.1": {shared map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.1": + 0: repositories: + 1: - name: bitnami + 2: url: https://charts.bitnami.com/bitnami + 3: + 4: releases: + 5: - name: cache + 6: namespace: my-app + 7: chart: bitnami/redis + 8: version: 17.0.7 + 9: labels: +10: app: test +11: +12: - name: database +13: namespace: my-app +14: chart: bitnami/postgres +15: version: 11.6.22 +16: + merged environment: &{shared map[] map[]} changing working directory back to "/path/to" processing file "helmfile_3.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_3.yaml.part.0": inherited=&{shared map[] map[]}, overrode= +first-pass uses: &{shared map[] map[]} +first-pass rendering output of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + +first-pass produced: &{shared map[] map[]} +first-pass rendering result of "helmfile_3.yaml.part.0": {shared map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + merged environment: &{shared map[] map[]} changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_one_file_only b/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_one_file_only index a214f41f..927ee649 100644 --- a/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_one_file_only +++ b/pkg/app/testdata/app_list_test/filters_releases_for_environment_used_in_one_file_only @@ -1,14 +1,120 @@ found 3 helmfile state files in helmfile.d: /path/to/helmfile.d/helmfile_1.yaml, /path/to/helmfile.d/helmfile_2.yaml, /path/to/helmfile.d/helmfile_3.yaml processing file "helmfile_1.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_1.yaml.part.0": inherited=&{test map[] map[]}, overrode= +first-pass uses: &{test map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + +first-pass produced: &{test map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.0": {test map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + merged environment: &{test map[] map[]} changing working directory back to "/path/to" processing file "helmfile_2.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_2.yaml.part.0": inherited=&{test map[] map[]}, overrode= +first-pass uses: &{test map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + +first-pass produced: &{test map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.0": {test map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + merged environment: &{test map[] map[]} +first-pass rendering starting for "helmfile_2.yaml.part.1": inherited=&{test map[] map[]}, overrode= +first-pass uses: &{test map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.1": + 0: repositories: + 1: - name: bitnami + 2: url: https://charts.bitnami.com/bitnami + 3: + 4: releases: + 5: - name: cache + 6: namespace: my-app + 7: chart: bitnami/redis + 8: version: 17.0.7 + 9: labels: +10: app: test +11: +12: - name: database +13: namespace: my-app +14: chart: bitnami/postgres +15: version: 11.6.22 +16: + +first-pass produced: &{test map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.1": {test map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.1": + 0: repositories: + 1: - name: bitnami + 2: url: https://charts.bitnami.com/bitnami + 3: + 4: releases: + 5: - name: cache + 6: namespace: my-app + 7: chart: bitnami/redis + 8: version: 17.0.7 + 9: labels: +10: app: test +11: +12: - name: database +13: namespace: my-app +14: chart: bitnami/postgres +15: version: 11.6.22 +16: + merged environment: &{test map[] map[]} changing working directory back to "/path/to" processing file "helmfile_3.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_3.yaml.part.0": inherited=&{test map[] map[]}, overrode= +first-pass uses: &{test map[] map[]} +first-pass rendering output of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + +first-pass produced: &{test map[] map[]} +first-pass rendering result of "helmfile_3.yaml.part.0": {test map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + merged environment: &{test map[] map[]} changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_list_test/list_releases_matching_selector_and_environment b/pkg/app/testdata/app_list_test/list_releases_matching_selector_and_environment index 41a5321e..4d332f10 100644 --- a/pkg/app/testdata/app_list_test/list_releases_matching_selector_and_environment +++ b/pkg/app/testdata/app_list_test/list_releases_matching_selector_and_environment @@ -1,15 +1,175 @@ found 3 helmfile state files in helmfile.d: /path/to/helmfile.d/helmfile_1.yaml, /path/to/helmfile.d/helmfile_2.yaml, /path/to/helmfile.d/helmfile_3.yaml processing file "helmfile_1.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_1.yaml.part.0": inherited=&{development map[] map[]}, overrode= +first-pass uses: &{development map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + +first-pass produced: &{development map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.0": {development map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + merged environment: &{development map[] map[]} +first-pass rendering starting for "helmfile_1.yaml.part.1": inherited=&{development map[] map[]}, overrode= +first-pass uses: &{development map[] map[]} +first-pass rendering output of "helmfile_1.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: + 5: - name: kubernetes-external-secrets + 6: chart: incubator/raw + 7: namespace: kube-system + 8: needs: + 9: - kube-system/logging +10: +11: - name: external-secrets +12: chart: incubator/raw +13: namespace: default +14: labels: +15: app: test +16: needs: +17: - kube-system/kubernetes-external-secrets +18: +19: - name: my-release +20: chart: incubator/raw +21: namespace: default +22: labels: +23: app: test +24: needs: +25: - default/external-secrets +26: +27: +28: # Disabled releases are treated as missing +29: - name: disabled +30: chart: incubator/raw +31: namespace: kube-system +32: installed: false +33: +34: - name: test2 +35: chart: incubator/raw +36: needs: +37: - kube-system/disabled +38: +39: - name: test3 +40: chart: incubator/raw +41: needs: +42: - test2 +43: + +first-pass produced: &{development map[] map[]} +first-pass rendering result of "helmfile_1.yaml.part.1": {development map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_1.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: + 5: - name: kubernetes-external-secrets + 6: chart: incubator/raw + 7: namespace: kube-system + 8: needs: + 9: - kube-system/logging +10: +11: - name: external-secrets +12: chart: incubator/raw +13: namespace: default +14: labels: +15: app: test +16: needs: +17: - kube-system/kubernetes-external-secrets +18: +19: - name: my-release +20: chart: incubator/raw +21: namespace: default +22: labels: +23: app: test +24: needs: +25: - default/external-secrets +26: +27: +28: # Disabled releases are treated as missing +29: - name: disabled +30: chart: incubator/raw +31: namespace: kube-system +32: installed: false +33: +34: - name: test2 +35: chart: incubator/raw +36: needs: +37: - kube-system/disabled +38: +39: - name: test3 +40: chart: incubator/raw +41: needs: +42: - test2 +43: + merged environment: &{development 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 changing working directory back to "/path/to" processing file "helmfile_2.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_2.yaml.part.0": inherited=&{development map[] map[]}, overrode= +first-pass uses: &{development map[] map[]} +first-pass rendering output of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + +first-pass produced: &{development map[] map[]} +first-pass rendering result of "helmfile_2.yaml.part.0": {development map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_2.yaml.part.0": + 0: + 1: environments: + 2: test: {} + 3: shared: {} + merged environment: &{development map[] map[]} changing working directory back to "/path/to" processing file "helmfile_3.yaml" in directory "/path/to/helmfile.d" changing working directory to "/path/to/helmfile.d" +first-pass rendering starting for "helmfile_3.yaml.part.0": inherited=&{development map[] map[]}, overrode= +first-pass uses: &{development map[] map[]} +first-pass rendering output of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + +first-pass produced: &{development map[] map[]} +first-pass rendering result of "helmfile_3.yaml.part.0": {development map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile_3.yaml.part.0": + 0: + 1: releases: + 2: - name: global + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + merged environment: &{development map[] map[]} changing working directory back to "/path/to" diff --git a/pkg/app/testdata/app_template_test/bad_selector b/pkg/app/testdata/app_template_test/bad_selector index 7d03a1f4..9a3ab785 100644 --- a/pkg/app/testdata/app_template_test/bad_selector +++ b/pkg/app/testdata/app_template_test/bad_selector @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 0 release(s) matching app=test_non_existent found in helmfile.yaml diff --git a/pkg/app/testdata/app_template_test/fail_on_unselected_need_by_default b/pkg/app/testdata/app_template_test/fail_on_unselected_need_by_default index ab53c3ad..a0113f65 100644 --- a/pkg/app/testdata/app_template_test/fail_on_unselected_need_by_default +++ b/pkg/app/testdata/app_template_test/fail_on_unselected_need_by_default @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_template_test/include-needs b/pkg/app/testdata/app_template_test/include-needs index 58fa9cab..892b6ea0 100644 --- a/pkg/app/testdata/app_template_test/include-needs +++ b/pkg/app/testdata/app_template_test/include-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 ebd01666..5b8e896d 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 29ad4ef5..47172c7e 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 ebd01666..5b8e896d 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 29ad4ef5..47172c7e 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_template_test/include-transitive-needs b/pkg/app/testdata/app_template_test/include-transitive-needs index 58fa9cab..892b6ea0 100644 --- a/pkg/app/testdata/app_template_test/include-transitive-needs +++ b/pkg/app/testdata/app_template_test/include-transitive-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 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 29ad4ef5..47172c7e 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 @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_template_test/no-hooks b/pkg/app/testdata/app_template_test/no-hooks index ceb99f63..67ee2936 100644 --- a/pkg/app/testdata/app_template_test/no-hooks +++ b/pkg/app/testdata/app_template_test/no-hooks @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/app_template_test/show-only b/pkg/app/testdata/app_template_test/show-only index e528ba50..16806eb9 100644 --- a/pkg/app/testdata/app_template_test/show-only +++ b/pkg/app/testdata/app_template_test/show-only @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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=logging found in helmfile.yaml diff --git a/pkg/app/testdata/app_template_test/skip-needs b/pkg/app/testdata/app_template_test/skip-needs index ceb99f63..67ee2936 100644 --- a/pkg/app/testdata/app_template_test/skip-needs +++ b/pkg/app/testdata/app_template_test/skip-needs @@ -1,5 +1,106 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: logging + 3: chart: incubator/raw + 4: namespace: kube-system + 5: + 6: - name: kubernetes-external-secrets + 7: chart: incubator/raw + 8: namespace: kube-system + 9: needs: +10: - kube-system/logging +11: +12: - name: external-secrets +13: chart: incubator/raw +14: namespace: default +15: labels: +16: app: test +17: needs: +18: - kube-system/kubernetes-external-secrets +19: +20: - name: my-release +21: chart: incubator/raw +22: namespace: default +23: labels: +24: app: test +25: needs: +26: - default/external-secrets +27: +28: +29: # Disabled releases are treated as missing +30: - name: disabled +31: chart: incubator/raw +32: namespace: kube-system +33: installed: false +34: +35: - name: test2 +36: chart: incubator/raw +37: needs: +38: - kube-system/disabled +39: +40: - name: test3 +41: chart: incubator/raw +42: needs: +43: - test2 +44: + merged environment: &{default 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 diff --git a/pkg/app/testdata/dag_test/dag_lists_dependencies_in_order b/pkg/app/testdata/dag_test/dag_lists_dependencies_in_order index 6b1135ae..c64a76f9 100644 --- a/pkg/app/testdata/dag_test/dag_lists_dependencies_in_order +++ b/pkg/app/testdata/dag_test/dag_lists_dependencies_in_order @@ -1,6 +1,120 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: environments: + 2: development: {} + 3: shared: {} + merged environment: &{default map[] map[]} +first-pass rendering starting for "helmfile.yaml.part.1": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: needs: + 8: - kube-system/logging + 9: - name: external-secrets +10: chart: incubator/raw +11: namespace: default +12: labels: +13: app: test +14: needs: +15: - kube-system/kubernetes-external-secrets +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: # Disabled releases are treated as missing +24: - name: disabled +25: chart: incubator/raw +26: namespace: kube-system +27: installed: false +28: - name: test2 +29: chart: incubator/raw +30: needs: +31: - kube-system/disabled +32: - name: test3 +33: chart: incubator/raw +34: needs: +35: - test2 +36: - name: test4 +37: chart: incubator/raw +38: needs: +39: - test2 +40: - test3 +41: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.1": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.1": + 0: releases: + 1: - name: logging + 2: chart: incubator/raw + 3: namespace: kube-system + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: needs: + 8: - kube-system/logging + 9: - name: external-secrets +10: chart: incubator/raw +11: namespace: default +12: labels: +13: app: test +14: needs: +15: - kube-system/kubernetes-external-secrets +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: # Disabled releases are treated as missing +24: - name: disabled +25: chart: incubator/raw +26: namespace: kube-system +27: installed: false +28: - name: test2 +29: chart: incubator/raw +30: needs: +31: - kube-system/disabled +32: - name: test3 +33: chart: incubator/raw +34: needs: +35: - test2 +36: - name: test4 +37: chart: incubator/raw +38: needs: +39: - test2 +40: - test3 +41: + merged environment: &{default 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 changing working directory back to "/path/to" 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 7999740f..3ee09b86 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: - name: bar + 5: chart: stable/mychart2 + 6: installed: false + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: - name: bar + 5: chart: stable/mychart2 + 6: installed: false + 7: needs: + 8: - foo + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml 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 63e24849..02d852b3 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: installed: false + 5: - name: foo + 6: chart: stable/mychart1 + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: installed: false + 5: - name: foo + 6: chart: stable/mychart1 + 7: needs: + 8: - bar + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/testapply/delete_foo_and_bar_when_bar_needs_foo/log b/pkg/app/testdata/testapply/delete_foo_and_bar_when_bar_needs_foo/log index f640c818..f3377bd1 100644 --- a/pkg/app/testdata/testapply/delete_foo_and_bar_when_bar_needs_foo/log +++ b/pkg/app/testdata/testapply/delete_foo_and_bar_when_bar_needs_foo/log @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: installed: false + 5: needs: + 6: - foo + 7: - name: foo + 8: chart: stable/mychart1 + 9: installed: false +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: installed: false + 5: needs: + 6: - foo + 7: - name: foo + 8: chart: stable/mychart1 + 9: installed: false +10: + merged environment: &{default 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 diff --git a/pkg/app/testdata/testapply/delete_foo_and_bar_when_foo_needs_bar/log b/pkg/app/testdata/testapply/delete_foo_and_bar_when_foo_needs_bar/log index 2b2c48cd..e8850438 100644 --- a/pkg/app/testdata/testapply/delete_foo_and_bar_when_foo_needs_bar/log +++ b/pkg/app/testdata/testapply/delete_foo_and_bar_when_foo_needs_bar/log @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: installed: false + 5: - name: foo + 6: chart: stable/mychart1 + 7: installed: false + 8: needs: + 9: - bar +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: installed: false + 5: - name: foo + 6: chart: stable/mychart1 + 7: installed: false + 8: needs: + 9: - bar +10: + merged environment: &{default 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 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 1dc037b0..25bb1eef 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: installed: false + 5: - name: bar + 6: chart: stable/mychart2 + 7: needs: + 8: - foo + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: installed: false + 5: - name: bar + 6: chart: stable/mychart2 + 7: needs: + 8: - foo + 9: + merged environment: &{default 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 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 3f58a191..38541ce3 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 @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/duplicate_releases/log b/pkg/app/testdata/testapply/duplicate_releases/log index ccdf69e2..5a14f57e 100644 --- a/pkg/app/testdata/testapply/duplicate_releases/log +++ b/pkg/app/testdata/testapply/duplicate_releases/log @@ -1,5 +1,44 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart2 + 7: needs: + 8: - ns1/bar + 9: - name: foo +10: chart: mychart1 +11: needs: +12: - ns1/bar +13: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart2 + 7: needs: + 8: - ns1/bar + 9: - name: foo +10: chart: mychart1 +11: needs: +12: - ns1/bar +13: + merged environment: &{default map[] map[]} err: found 2 duplicate releases with ID "default//foo" changing working directory back to "/path/to" diff --git a/pkg/app/testdata/testapply/helm-status-check-to-release-existence/log b/pkg/app/testdata/testapply/helm-status-check-to-release-existence/log index 3dd5b87b..223b67ad 100644 --- a/pkg/app/testdata/testapply/helm-status-check-to-release-existence/log +++ b/pkg/app/testdata/testapply/helm-status-check-to-release-existence/log @@ -1,5 +1,32 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo_notFound + 5: chart: stable/mychart1 + 6: installed: false + 7: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo_notFound + 5: chart: stable/mychart1 + 6: installed: false + 7: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/install-with-upgrade-with-skip-diff-on-install/log b/pkg/app/testdata/testapply/install-with-upgrade-with-skip-diff-on-install/log index c5e811d4..e309756f 100644 --- a/pkg/app/testdata/testapply/install-with-upgrade-with-skip-diff-on-install/log +++ b/pkg/app/testdata/testapply/install-with-upgrade-with-skip-diff-on-install/log @@ -1,5 +1,44 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: stable/mychart3 + 4: disableValidationOnInstall: true + 5: - name: foo + 6: chart: stable/mychart1 + 7: disableValidationOnInstall: true + 8: needs: + 9: - bar +10: - name: bar +11: chart: stable/mychart2 +12: disableValidation: true +13: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: stable/mychart3 + 4: disableValidationOnInstall: true + 5: - name: foo + 6: chart: stable/mychart1 + 7: disableValidationOnInstall: true + 8: needs: + 9: - bar +10: - name: bar +11: chart: stable/mychart2 +12: disableValidation: true +13: + merged environment: &{default map[] map[]} 3 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/install-with-upgrade-with-validation-control/log b/pkg/app/testdata/testapply/install-with-upgrade-with-validation-control/log index c5e811d4..e309756f 100644 --- a/pkg/app/testdata/testapply/install-with-upgrade-with-validation-control/log +++ b/pkg/app/testdata/testapply/install-with-upgrade-with-validation-control/log @@ -1,5 +1,44 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: stable/mychart3 + 4: disableValidationOnInstall: true + 5: - name: foo + 6: chart: stable/mychart1 + 7: disableValidationOnInstall: true + 8: needs: + 9: - bar +10: - name: bar +11: chart: stable/mychart2 +12: disableValidation: true +13: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: stable/mychart3 + 4: disableValidationOnInstall: true + 5: - name: foo + 6: chart: stable/mychart1 + 7: disableValidationOnInstall: true + 8: needs: + 9: - bar +10: - name: bar +11: chart: stable/mychart2 +12: disableValidation: true +13: + merged environment: &{default map[] map[]} 3 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/install/log b/pkg/app/testdata/testapply/install/log index b6766a38..288e71a2 100644 --- a/pkg/app/testdata/testapply/install/log +++ b/pkg/app/testdata/testapply/install/log @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: stable/mychart3 + 4: - name: foo + 5: chart: stable/mychart1 + 6: needs: + 7: - bar + 8: - name: bar + 9: chart: stable/mychart2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: chart: stable/mychart3 + 4: - name: foo + 5: chart: stable/mychart1 + 6: needs: + 7: - bar + 8: - name: bar + 9: chart: stable/mychart2 +10: + merged environment: &{default map[] map[]} 3 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/non-existent_release_in_needs/log b/pkg/app/testdata/testapply/non-existent_release_in_needs/log index 714f59fa..b13e2b15 100644 --- a/pkg/app/testdata/testapply/non-existent_release_in_needs/log +++ b/pkg/app/testdata/testapply/non-existent_release_in_needs/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - ns1/bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: baz + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - ns1/bar + 9: + merged environment: &{default 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 diff --git a/pkg/app/testdata/testapply/noop/log b/pkg/app/testdata/testapply/noop/log index b9eb3b39..89669abf 100644 --- a/pkg/app/testdata/testapply/noop/log +++ b/pkg/app/testdata/testapply/noop/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: installed: false + 7: needs: + 8: - bar + 9: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/smoke/log b/pkg/app/testdata/testapply/smoke/log index 5f674219..6ef2316c 100644 --- a/pkg/app/testdata/testapply/smoke/log +++ b/pkg/app/testdata/testapply/smoke/log @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 10 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/unselected_release_in_needs/log b/pkg/app/testdata/testapply/unselected_release_in_needs/log index 9f34aacd..fd4dca83 100644 --- a/pkg/app/testdata/testapply/unselected_release_in_needs/log +++ b/pkg/app/testdata/testapply/unselected_release_in_needs/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - ns1/bar + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: namespace: ns1 + 4: chart: mychart3 + 5: - name: foo + 6: chart: mychart1 + 7: needs: + 8: - ns1/bar + 9: + merged environment: &{default map[] map[]} 1 release(s) matching name=foo found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo,_with_ns_override/log b/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo,_with_ns_override/log index c216b8ee..75c0b4ce 100644 --- a/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo,_with_ns_override/log +++ b/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo,_with_ns_override/log @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: - name: bar + 5: chart: stable/mychart2 + 6: needs: + 7: - foo + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: - name: bar + 5: chart: stable/mychart2 + 6: needs: + 7: - foo + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo/log b/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo/log index 06004eba..0854f6f9 100644 --- a/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo/log +++ b/pkg/app/testdata/testapply/upgrade_when_bar_needs_foo/log @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: - name: bar + 5: chart: stable/mychart2 + 6: needs: + 7: - foo + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: - name: bar + 5: chart: stable/mychart2 + 6: needs: + 7: - foo + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar,_with_ns_override/log b/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar,_with_ns_override/log index f590244f..18819452 100644 --- a/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar,_with_ns_override/log +++ b/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar,_with_ns_override/log @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: needs: + 7: - bar + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar/log b/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar/log index 53a2991c..38252743 100644 --- a/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar/log +++ b/pkg/app/testdata/testapply/upgrade_when_foo_needs_bar/log @@ -1,5 +1,34 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: needs: + 7: - bar + 8: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: - name: foo + 5: chart: stable/mychart1 + 6: needs: + 7: - bar + 8: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns2/bar/log b/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns2/bar/log index 13ca7ee3..6f129537 100644 --- a/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns2/bar/log +++ b/pkg/app/testdata/testapply/upgrade_when_ns1/foo_needs_ns2/bar/log @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: stable/mychart2 + 9: namespace: ns2 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: stable/mychart1 + 4: namespace: ns1 + 5: needs: + 6: - ns2/bar + 7: - name: bar + 8: chart: stable/mychart2 + 9: namespace: ns2 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrade_when_ns2/bar_needs_ns1/foo/log b/pkg/app/testdata/testapply/upgrade_when_ns2/bar_needs_ns1/foo/log index 5e96b8fd..76015ef1 100644 --- a/pkg/app/testdata/testapply/upgrade_when_ns2/bar_needs_ns1/foo/log +++ b/pkg/app/testdata/testapply/upgrade_when_ns2/bar_needs_ns1/foo/log @@ -1,5 +1,38 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: stable/mychart1 + 9: namespace: ns1 +10: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: bar + 3: chart: stable/mychart2 + 4: namespace: ns2 + 5: needs: + 6: - ns1/foo + 7: - name: foo + 8: chart: stable/mychart1 + 9: namespace: ns1 +10: + merged environment: &{default map[] map[]} 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testapply/upgrades_with_bad_selector/log b/pkg/app/testdata/testapply/upgrades_with_bad_selector/log index 8e3e99cf..37de515c 100644 --- a/pkg/app/testdata/testapply/upgrades_with_bad_selector/log +++ b/pkg/app/testdata/testapply/upgrades_with_bad_selector/log @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,6 +60,6 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -0 release(s) matching app=test_non_existent found in helmfile.yaml.gotmpl +0 release(s) matching app=test_non_existent found in helmfile.yaml changing working directory back to "/path/to" diff --git a/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=false_--include-needs=true/log b/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=false_--include-needs=true/log index f29aa140..b286816b 100644 --- a/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=false_--include-needs=true/log +++ b/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=false_--include-needs=true/log @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml err: release "default/default/external-secrets" depends on "default/kube-system/kubernetes-external-secrets" which does not match the selectors. Please add a selector like "--selector name=kubernetes-external-secrets", or indicate whether to skip (--skip-needs) or include (--include-needs) these dependencies changing working directory back to "/path/to" diff --git a/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=true/log b/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=true/log index 65c32bd4..d1a55a90 100644 --- a/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=true/log +++ b/pkg/app/testdata/testapply/upgrades_with_good_selector_with_--skip-needs=true/log @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED diff --git a/pkg/app/testdata/testapply_2/bad_--selector/log b/pkg/app/testdata/testapply_2/bad_--selector/log deleted file mode 100644 index 8e3e99cf..00000000 --- a/pkg/app/testdata/testapply_2/bad_--selector/log +++ /dev/null @@ -1,33 +0,0 @@ -processing file "helmfile.yaml.gotmpl" in directory "." -changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": - 0: - 1: - 2: - 3: releases: - 4: - name: kubernetes-external-secrets - 5: chart: incubator/raw - 6: namespace: kube-system - 7: - 8: - name: external-secrets - 9: chart: incubator/raw -10: namespace: default -11: labels: -12: app: test -13: needs: -14: - kube-system/kubernetes-external-secrets -15: -16: - name: my-release -17: chart: incubator/raw -18: namespace: default -19: labels: -20: app: test -21: needs: -22: - default/external-secrets -23: - -merged environment: &{default map[] map[]} -0 release(s) matching app=test_non_existent found in helmfile.yaml.gotmpl - -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/testapply_2/deduplicate_by_--selector/log b/pkg/app/testdata/testapply_2/deduplicate_by_--selector/log index 6e400919..dfde4bdd 100644 --- a/pkg/app/testdata/testapply_2/deduplicate_by_--selector/log +++ b/pkg/app/testdata/testapply_2/deduplicate_by_--selector/log @@ -1,5 +1,52 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: incubator/raw + 4: namespace: default + 5: labels: + 6: app: test + 7: component: raw + 8: index: '1' + 9: +10: - name: foo +11: chart: incubator/raw +12: namespace: default +13: labels: +14: app: test +15: component: raw +16: index: '2' +17: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: incubator/raw + 4: namespace: default + 5: labels: + 6: app: test + 7: component: raw + 8: index: '1' + 9: +10: - name: foo +11: chart: incubator/raw +12: namespace: default +13: labels: +14: app: test +15: component: raw +16: index: '2' +17: + merged environment: &{default map[] map[]} 1 release(s) matching index=1 found in helmfile.yaml 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 c4fd365e..80fe6952 100644 --- a/pkg/app/testdata/testapply_2/include-transitive-needs=true/log +++ b/pkg/app/testdata/testapply_2/include-transitive-needs=true/log @@ -1,7 +1,35 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: serviceA + 5: chart: my/chart + 6: needs: + 7: - serviceB + 8: + 9: - name: serviceB +10: chart: my/chart +11: needs: +12: - serviceC +13: +14: - name: serviceC +15: chart: my/chart +16: +17: - name: serviceD +18: chart: my/chart +19: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -24,7 +52,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 19: merged environment: &{default map[] map[]} -3 release(s) matching name=serviceA found in helmfile.yaml.gotmpl +3 release(s) matching name=serviceA found in helmfile.yaml Affected releases are: serviceA (my/chart) UPDATED diff --git a/pkg/app/testdata/testapply_2/select_non_existent_release_with_--allow-no-matching-release/log b/pkg/app/testdata/testapply_2/select_non_existent_release_with_--allow-no-matching-release/log index 2c735ba9..ed58f794 100644 --- a/pkg/app/testdata/testapply_2/select_non_existent_release_with_--allow-no-matching-release/log +++ b/pkg/app/testdata/testapply_2/select_non_existent_release_with_--allow-no-matching-release/log @@ -1,5 +1,44 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: incubator/raw + 4: namespace: default + 5: labels: + 6: app: test + 7: + 8: - name: bar + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: incubator/raw + 4: namespace: default + 5: labels: + 6: app: test + 7: + 8: - name: bar + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: + merged environment: &{default map[] map[]} 0 release(s) matching app=foo found in helmfile.yaml diff --git a/pkg/app/testdata/testapply_2/select_single_release_from_helmfile_with_two_duplicates/log b/pkg/app/testdata/testapply_2/select_single_release_from_helmfile_with_two_duplicates/log index 07be1f75..5aad40b2 100644 --- a/pkg/app/testdata/testapply_2/select_single_release_from_helmfile_with_two_duplicates/log +++ b/pkg/app/testdata/testapply_2/select_single_release_from_helmfile_with_two_duplicates/log @@ -1,5 +1,56 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: incubator/raw + 4: namespace: default + 5: labels: + 6: app: test + 7: + 8: - name: bar + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: build +13: +14: - name: bar +15: chart: incubator/raw +16: namespace: default +17: labels: +18: app: test +19: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: foo + 3: chart: incubator/raw + 4: namespace: default + 5: labels: + 6: app: test + 7: + 8: - name: bar + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: build +13: +14: - name: bar +15: chart: incubator/raw +16: namespace: default +17: labels: +18: app: test +19: + merged environment: &{default map[] map[]} 1 release(s) matching name=foo found in helmfile.yaml 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 fad7bdc6..0350fb56 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 @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED 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 370e8e8e..2f1fa1f1 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 @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) 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 9998300d..c6a51f3c 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 @@ -1,7 +1,40 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: installed: false + 8: + 9: - name: external-secrets +10: chart: incubator/raw +11: namespace: default +12: labels: +13: app: test +14: needs: +15: - kube-system/kubernetes-external-secrets +16: +17: - name: my-release +18: chart: incubator/raw +19: namespace: default +20: labels: +21: app: test +22: needs: +23: - default/external-secrets +24: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -30,7 +63,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": merged environment: &{default map[] map[]} 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 -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml 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: 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 6bf96b12..13ca54dd 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 @@ -1,7 +1,40 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: installed: false + 8: + 9: - name: external-secrets +10: chart: incubator/raw +11: namespace: default +12: labels: +13: app: test +14: needs: +15: - kube-system/kubernetes-external-secrets +16: +17: - name: my-release +18: chart: incubator/raw +19: namespace: default +20: labels: +21: app: test +22: needs: +23: - default/external-secrets +24: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -30,7 +63,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": merged environment: &{default map[] map[]} 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 -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml 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: diff --git a/pkg/app/testdata/testapply_2/skip-needs=true/log b/pkg/app/testdata/testapply_2/skip-needs=true/log index 65c32bd4..d1a55a90 100644 --- a/pkg/app/testdata/testapply_2/skip-needs=true/log +++ b/pkg/app/testdata/testapply_2/skip-needs=true/log @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED 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 1f4c6d72..26968c1e 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 @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED diff --git a/pkg/app/testdata/testapply_3/bad_--selector/log b/pkg/app/testdata/testapply_3/bad_--selector/log deleted file mode 100644 index 8e3e99cf..00000000 --- a/pkg/app/testdata/testapply_3/bad_--selector/log +++ /dev/null @@ -1,33 +0,0 @@ -processing file "helmfile.yaml.gotmpl" in directory "." -changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": - 0: - 1: - 2: - 3: releases: - 4: - name: kubernetes-external-secrets - 5: chart: incubator/raw - 6: namespace: kube-system - 7: - 8: - name: external-secrets - 9: chart: incubator/raw -10: namespace: default -11: labels: -12: app: test -13: needs: -14: - kube-system/kubernetes-external-secrets -15: -16: - name: my-release -17: chart: incubator/raw -18: namespace: default -19: labels: -20: app: test -21: needs: -22: - default/external-secrets -23: - -merged environment: &{default map[] map[]} -0 release(s) matching app=test_non_existent found in helmfile.yaml.gotmpl - -changing working directory back to "/path/to" 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 4245010a..4193cc54 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 @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED 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 653c58c2..1b585c5b 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 @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED 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 0996c8a0..84e5b96e 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 @@ -1,7 +1,40 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: installed: false + 8: + 9: - name: external-secrets +10: chart: incubator/raw +11: namespace: default +12: labels: +13: app: test +14: needs: +15: - kube-system/kubernetes-external-secrets +16: +17: - name: my-release +18: chart: incubator/raw +19: namespace: default +20: labels: +21: app: test +22: needs: +23: - default/external-secrets +24: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -30,7 +63,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": merged environment: &{default map[] map[]} 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 -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml 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: 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 222191de..3018fdfa 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 @@ -1,7 +1,40 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: installed: false + 8: + 9: - name: external-secrets +10: chart: incubator/raw +11: namespace: default +12: labels: +13: app: test +14: needs: +15: - kube-system/kubernetes-external-secrets +16: +17: - name: my-release +18: chart: incubator/raw +19: namespace: default +20: labels: +21: app: test +22: needs: +23: - default/external-secrets +24: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -30,7 +63,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": merged environment: &{default map[] map[]} 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 -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml 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: diff --git a/pkg/app/testdata/testapply_3/skip-needs=true/log b/pkg/app/testdata/testapply_3/skip-needs=true/log index 3a82d6bc..e7200b58 100644 --- a/pkg/app/testdata/testapply_3/skip-needs=true/log +++ b/pkg/app/testdata/testapply_3/skip-needs=true/log @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED 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 3c4dc215..0bb7dd4b 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 @@ -1,7 +1,39 @@ -processing file "helmfile.yaml.gotmpl" in directory "." +processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" -rendering starting for "helmfile.yaml.gotmpl.part.0": inherited=&{default map[] map[]}, overrode= -rendering result of "helmfile.yaml.gotmpl.part.0": +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: + 2: + 3: releases: + 4: - name: kubernetes-external-secrets + 5: chart: incubator/raw + 6: namespace: kube-system + 7: + 8: - name: external-secrets + 9: chart: incubator/raw +10: namespace: default +11: labels: +12: app: test +13: needs: +14: - kube-system/kubernetes-external-secrets +15: +16: - name: my-release +17: chart: incubator/raw +18: namespace: default +19: labels: +20: app: test +21: needs: +22: - default/external-secrets +23: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": 0: 1: 2: @@ -28,7 +60,7 @@ rendering result of "helmfile.yaml.gotmpl.part.0": 23: merged environment: &{default map[] map[]} -2 release(s) matching app=test found in helmfile.yaml.gotmpl +2 release(s) matching app=test found in helmfile.yaml Affected releases are: external-secrets (incubator/raw) UPDATED diff --git a/pkg/app/testdata/testdeps/smoke/log b/pkg/app/testdata/testdeps/smoke/log deleted file mode 100644 index 52b88928..00000000 --- a/pkg/app/testdata/testdeps/smoke/log +++ /dev/null @@ -1,7 +0,0 @@ -processing file "helmfile.yaml" in directory "." -changing working directory to "/path/to" -merged environment: &{default map[] map[]} -There are no repositories defined in your helmfile.yaml. -This means helmfile cannot update your dependencies or create a lock file. -See https://github.com/roboll/helmfile/issues/878 for more information. -changing working directory back to "/path/to" diff --git a/pkg/app/testdata/testdestroy/destroy_installed_but_disabled_release/log b/pkg/app/testdata/testdestroy/destroy_installed_but_disabled_release/log index a7eea328..e7d3352d 100644 --- a/pkg/app/testdata/testdestroy/destroy_installed_but_disabled_release/log +++ b/pkg/app/testdata/testdestroy/destroy_installed_but_disabled_release/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy/destroy_only_one_release_with_selector/log b/pkg/app/testdata/testdestroy/destroy_only_one_release_with_selector/log index 0ca9be54..b3ea59f1 100644 --- a/pkg/app/testdata/testdestroy/destroy_only_one_release_with_selector/log +++ b/pkg/app/testdata/testdestroy/destroy_only_one_release_with_selector/log @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 1 release(s) matching name=logging found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy/helm3/log b/pkg/app/testdata/testdestroy/helm3/log index a7eea328..e7d3352d 100644 --- a/pkg/app/testdata/testdestroy/helm3/log +++ b/pkg/app/testdata/testdestroy/helm3/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy/smoke/log b/pkg/app/testdata/testdestroy/smoke/log index 16e0f5c9..13a80305 100644 --- a/pkg/app/testdata/testdestroy/smoke/log +++ b/pkg/app/testdata/testdestroy/smoke/log @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 10 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy_2/destroy_installed_but_disabled_release/log b/pkg/app/testdata/testdestroy_2/destroy_installed_but_disabled_release/log index eebb5cdb..04b1ccfd 100644 --- a/pkg/app/testdata/testdestroy_2/destroy_installed_but_disabled_release/log +++ b/pkg/app/testdata/testdestroy_2/destroy_installed_but_disabled_release/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy_2/destroy_only_one_release_with_selector/log b/pkg/app/testdata/testdestroy_2/destroy_only_one_release_with_selector/log index 6ac05319..917d5684 100644 --- a/pkg/app/testdata/testdestroy_2/destroy_only_one_release_with_selector/log +++ b/pkg/app/testdata/testdestroy_2/destroy_only_one_release_with_selector/log @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 1 release(s) matching name=logging found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy_2/helm3/log b/pkg/app/testdata/testdestroy_2/helm3/log index eebb5cdb..04b1ccfd 100644 --- a/pkg/app/testdata/testdestroy_2/helm3/log +++ b/pkg/app/testdata/testdestroy_2/helm3/log @@ -1,5 +1,36 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: backend-v1 + 3: chart: charts/backend + 4: installed: false + 5: - name: frontend-v1 + 6: chart: charts/frontend + 7: needs: + 8: - backend-v1 + 9: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 2 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testdestroy_2/smoke/log b/pkg/app/testdata/testdestroy_2/smoke/log index 6d07d6be..d4fd6427 100644 --- a/pkg/app/testdata/testdestroy_2/smoke/log +++ b/pkg/app/testdata/testdestroy_2/smoke/log @@ -1,5 +1,126 @@ processing file "helmfile.yaml" in directory "." changing working directory to "/path/to" +first-pass rendering starting for "helmfile.yaml.part.0": inherited=&{default map[] map[]}, overrode= +first-pass uses: &{default map[] map[]} +first-pass rendering output of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + +first-pass produced: &{default map[] map[]} +first-pass rendering result of "helmfile.yaml.part.0": {default map[] map[]} +vals: +map[] +defaultVals:[] +second-pass rendering result of "helmfile.yaml.part.0": + 0: + 1: releases: + 2: - name: database + 3: chart: charts/mysql + 4: needs: + 5: - logging + 6: - name: frontend-v1 + 7: chart: charts/frontend + 8: installed: false + 9: needs: +10: - servicemesh +11: - logging +12: - backend-v1 +13: - name: frontend-v2 +14: chart: charts/frontend +15: needs: +16: - servicemesh +17: - logging +18: - backend-v2 +19: - name: frontend-v3 +20: chart: charts/frontend +21: needs: +22: - servicemesh +23: - logging +24: - backend-v2 +25: - name: backend-v1 +26: chart: charts/backend +27: installed: false +28: needs: +29: - servicemesh +30: - logging +31: - database +32: - anotherbackend +33: - name: backend-v2 +34: chart: charts/backend +35: needs: +36: - servicemesh +37: - logging +38: - database +39: - anotherbackend +40: - name: anotherbackend +41: chart: charts/anotherbackend +42: needs: +43: - servicemesh +44: - logging +45: - database +46: - name: servicemesh +47: chart: charts/istio +48: needs: +49: - logging +50: - name: logging +51: chart: charts/fluent-bit +52: - name: front-proxy +53: chart: stable/envoy +54: + merged environment: &{default map[] map[]} WARNING: release frontend-v1 needs backend-v1, but backend-v1 is not installed due to installed: false. Either mark backend-v1 as installed or remove backend-v1 from frontend-v1's needs 10 release(s) found in helmfile.yaml diff --git a/pkg/app/testdata/testreadfromyaml_rendertemplatelog/log b/pkg/app/testdata/testreadfromyaml_rendertemplatelog/log deleted file mode 100644 index db8157f1..00000000 --- a/pkg/app/testdata/testreadfromyaml_rendertemplatelog/log +++ /dev/null @@ -1,10 +0,0 @@ -rendering starting for "": inherited=&{default map[] map[]}, overrode= -rendering result of "": - 0: - 1: releases: - 2: - name: foo - 3: chart: mychart1 - 4: - name: bar - 5: - 6: - diff --git a/pkg/app/two_pass_renderer.go b/pkg/app/two_pass_renderer.go index fddfa307..221af0c2 100644 --- a/pkg/app/two_pass_renderer.go +++ b/pkg/app/two_pass_renderer.go @@ -5,7 +5,10 @@ import ( "fmt" "strings" + "github.com/google/go-cmp/cmp" + "github.com/helmfile/helmfile/pkg/environment" + "github.com/helmfile/helmfile/pkg/runtime" "github.com/helmfile/helmfile/pkg/state" "github.com/helmfile/helmfile/pkg/tmpl" ) @@ -19,6 +22,52 @@ func prependLineNumbers(text string) string { return buf.String() } +func (r *desiredStateLoader) renderPrestate(firstPassEnv, overrode *environment.Environment, baseDir, filename string, content []byte) (*environment.Environment, *state.HelmState) { + initEnv, err := firstPassEnv.Merge(overrode) + if err != nil { + return firstPassEnv, nil + } + tmplData := state.NewEnvironmentTemplateData(*initEnv, r.namespace, map[string]any{}) + firstPassRenderer := tmpl.NewFirstPassRenderer(baseDir, tmplData) + + // parse as much as we can, tolerate errors, this is a preparse + yamlBuf, err := firstPassRenderer.RenderTemplateContentToBuffer(content) + if err != nil { + r.logger.Debugf("first-pass rendering input of \"%s\":\n%s", filename, prependLineNumbers(string(content))) + r.logger.Debugf("template syntax error: %v", err) + if yamlBuf == nil { // we have a template syntax error, let the second parse report + return firstPassEnv, nil + } + } + yamlData := yamlBuf.String() + r.logger.Debugf("first-pass rendering output of \"%s\":\n%s", filename, prependLineNumbers(yamlData)) + + // Work-around for https://github.com/golang/go/issues/24963 + sanitized := strings.ReplaceAll(yamlData, "", "") + + if len(yamlData) != len(sanitized) { + msg := "replaced s to workaround https://github.com/golang/go/issues/24963 to address https://github.com/roboll/helmfile/issues/553:\n%s" + r.logger.Debugf(msg, cmp.Diff(yamlData, sanitized)) + } + + c := r.underlying() + c.Strict = false + // create preliminary state, as we may have an environment. Tolerate errors. + prestate, err := c.ParseAndLoad([]byte(sanitized), baseDir, filename, r.env, true, false, firstPassEnv, overrode) + if err != nil { + if _, ok := err.(*state.StateLoadError); ok { + r.logger.Debugf("could not deduce `environment:` block, configuring only .Environment.Name. error: %v", err) + } + r.logger.Debugf("error in first-pass rendering: result of \"%s\":\n%s", filename, prependLineNumbers(yamlBuf.String())) + } + + if prestate != nil { + firstPassEnv = &prestate.Env + } + + return firstPassEnv, prestate +} + type RenderOpts struct { } @@ -33,7 +82,11 @@ func (r *desiredStateLoader) renderTemplatesToYamlWithEnv(baseDir, filename stri } func (r *desiredStateLoader) twoPassRenderTemplateToYaml(inherited, overrode *environment.Environment, baseDir, filename string, content []byte) (*bytes.Buffer, error) { + // try a first pass render. This will always succeed, but can produce a limited env var phase string + if !runtime.V1Mode { + phase = "first-pass " + } r.logger.Debugf("%srendering starting for \"%s\": inherited=%v, overrode=%v", phase, filename, inherited, overrode) initEnv, err := inherited.Merge(nil) @@ -47,14 +100,53 @@ func (r *desiredStateLoader) twoPassRenderTemplateToYaml(inherited, overrode *en vals map[string]any ) - finalEnv, err = initEnv.Merge(overrode) - if err != nil { - return nil, err - } + if runtime.V1Mode { + var err error - vals, err = finalEnv.GetMergedValues() - if err != nil { - return nil, err + finalEnv, err = initEnv.Merge(overrode) + if err != nil { + return nil, err + } + + vals, err = finalEnv.GetMergedValues() + if err != nil { + return nil, err + } + } else { + r.logger.Debugf("first-pass uses: %v", initEnv) + firstPassEnv, err := initEnv.Merge(nil) + if err != nil { + return nil, err + } + renderedEnv, prestate := r.renderPrestate(firstPassEnv, overrode, baseDir, filename, content) + + r.logger.Debugf("first-pass produced: %v", renderedEnv) + + mergedEnv, err := inherited.Merge(renderedEnv) + if err != nil { + return nil, err + } + + mergedEnv, err = mergedEnv.Merge(overrode) + if err != nil { + return nil, err + } + + r.logger.Debugf("first-pass rendering result of \"%s\": %v", filename, *mergedEnv) + + renderingPhase = "second-pass " + + finalEnv = mergedEnv + + vals, err = finalEnv.GetMergedValues() + if err != nil { + return nil, err + } + + if prestate != nil { + prestate.Env = *mergedEnv + r.logger.Debugf("vals:\n%v\ndefaultVals:%v", vals, prestate.DefaultValues) + } } tmplData := state.NewEnvironmentTemplateData(*finalEnv, r.namespace, vals) diff --git a/pkg/app/two_pass_renderer_test.go b/pkg/app/two_pass_renderer_test.go index 5190f9f6..fde1630f 100644 --- a/pkg/app/two_pass_renderer_test.go +++ b/pkg/app/two_pass_renderer_test.go @@ -7,6 +7,7 @@ import ( "github.com/helmfile/helmfile/pkg/helmexec" "github.com/helmfile/helmfile/pkg/remote" + "github.com/helmfile/helmfile/pkg/runtime" "github.com/helmfile/helmfile/pkg/state" "github.com/helmfile/helmfile/pkg/testhelper" "github.com/helmfile/helmfile/pkg/yaml" @@ -67,6 +68,60 @@ releases: } } +func TestReadFromYaml_RenderTemplate(t *testing.T) { + defaultValuesYaml := ` +releaseName: "hello" +conditionalReleaseTag: "yes" +` + + yamlContent := []byte(` +environments: + staging: + values: + - default/values.yaml + production: + +releases: +- name: {{ .Environment.Values.releaseName }} + chart: mychart1 + +{{ if (eq .Environment.Values.conditionalReleaseTag "yes") }} +- name: conditionalRelease +{{ end }} + +`) + + files := map[string]string{ + "/path/to/default/values.yaml": defaultValuesYaml, + } + + r, _, _ := makeLoader(files, "staging") + // test the double rendering + yamlBuf, err := r.renderTemplatesToYaml("", "", yamlContent) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + var state state.HelmState + err = yaml.Unmarshal(yamlBuf.Bytes(), &state) + + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + if len(state.Releases) != 2 { + t.Fatal("there should be 2 releases") + } + + if state.Releases[0].Name != "hello" { + t.Errorf("release name should be hello") + } + + if state.Releases[1].Name != "conditionalRelease" { + t.Error("conditional release should have been present") + } +} + func testReadFromYaml_RenderTemplateLog(t *testing.T) { t.Helper() @@ -110,7 +165,20 @@ releases: } func TestReadFromYaml_RenderTemplateLog(t *testing.T) { - testReadFromYaml_RenderTemplateLog(t) + v := runtime.V1Mode + t.Cleanup(func() { + runtime.V1Mode = v + }) + + t.Run("v0mode", func(t *testing.T) { + runtime.V1Mode = false + testReadFromYaml_RenderTemplateLog(t) + }) + + t.Run("v1mode", func(t *testing.T) { + runtime.V1Mode = true + testReadFromYaml_RenderTemplateLog(t) + }) } func TestReadFromYaml_RenderTemplateWithValuesReferenceError(t *testing.T) { @@ -143,6 +211,51 @@ releases: } } +// This test shows that a gotmpl reference will get rendered correctly +// even if the pre-render disables the readFile and exec functions. +// This does not apply to .gotmpl files, which is a nice side-effect. +func TestReadFromYaml_RenderTemplateWithGotmpl(t *testing.T) { + defaultValuesYamlGotmpl := ` +releaseName: {{ readFile "nonIgnoredFile" }} +` + + yamlContent := []byte(` +environments: + staging: + values: + - values.yaml.gotmpl + production: + +{{ if (eq .Environment.Values.releaseName "release-a") }} # line 8 +releases: +- name: a + chart: mychart1 +{{ end }} +`) + + files := map[string]string{ + "/path/to/nonIgnoredFile": `release-a`, + "/path/to/values.yaml.gotmpl": defaultValuesYamlGotmpl, + } + + r, _, _ := makeLoader(files, "staging") + rendered, _ := r.renderTemplatesToYaml("", "", yamlContent) + + var state state.HelmState + err := yaml.Unmarshal(rendered.Bytes(), &state) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + if len(state.Releases) != 1 { + t.Fatal("there should be 1 release") + } + + if state.Releases[0].Name != "a" { + t.Fatal("release should have been declared") + } +} + func TestReadFromYaml_RenderTemplateWithNamespace(t *testing.T) { yamlContent := []byte(`releases: - name: {{ .Namespace }}-myrelease diff --git a/pkg/config/apply.go b/pkg/config/apply.go index f3f0946f..4d67aa61 100644 --- a/pkg/config/apply.go +++ b/pkg/config/apply.go @@ -18,6 +18,10 @@ type ApplyOptions struct { DetailedExitcode bool // StripTrailingCR is true if trailing carriage returns should be stripped during diffing StripTrailingCR bool + // TODO: Remove this function once Helmfile v0.x + // DEPRECATED: Use skip-cleanup instead + RetainValuesFiles bool + // SkipCleanup is true if the cleanup of temporary values files should be skipped SkipCleanup bool // SkipCRDs is true if the CRDs should be skipped @@ -135,6 +139,12 @@ func (a *ApplyImpl) IncludeTransitiveNeeds() bool { return a.ApplyOptions.IncludeTransitiveNeeds } +// TODO: Remove this function once Helmfile v0.x +// RetainValuesFiles returns the retain values files. +func (a *ApplyImpl) RetainValuesFiles() bool { + return a.ApplyOptions.RetainValuesFiles +} + // ShowSecrets returns the show secrets. func (a *ApplyImpl) ShowSecrets() bool { return a.ApplyOptions.ShowSecrets diff --git a/pkg/config/charts.go b/pkg/config/charts.go new file mode 100644 index 00000000..859894bc --- /dev/null +++ b/pkg/config/charts.go @@ -0,0 +1,46 @@ +// TODO: Remove this function once Helmfile v0.x +package config + +// ChartsOptions is the options for the build command +type ChartsOptions struct { + // Set is the additional values to be merged into the helm command --set flag + Set []string + // Values is the additional value files to be merged into the helm command --values flag + Values []string + // Concurrency is the maximum number of concurrent helm processes to run, 0 is unlimited + Concurrency int +} + +// NewChartsOptions creates a new Apply +func NewChartsOptions() *ChartsOptions { + return &ChartsOptions{} +} + +// ChartsImpl is impl for applyOptions +type ChartsImpl struct { + *GlobalImpl + *ChartsOptions +} + +// NewChartsImpl creates a new ChartsImpl +func NewChartsImpl(g *GlobalImpl, b *ChartsOptions) *ChartsImpl { + return &ChartsImpl{ + GlobalImpl: g, + ChartsOptions: b, + } +} + +// Concurrency returns the concurrency +func (c *ChartsImpl) Concurrency() int { + return c.ChartsOptions.Concurrency +} + +// IncludeTransitiveNeeds returns the includeTransitiveNeeds +func (c *ChartsImpl) IncludeTransitiveNeeds() bool { + return false +} + +// Values returns the values +func (c *ChartsImpl) Values() []string { + return c.ChartsOptions.Values +} diff --git a/pkg/config/delete.go b/pkg/config/delete.go new file mode 100644 index 00000000..f688e94f --- /dev/null +++ b/pkg/config/delete.go @@ -0,0 +1,67 @@ +// TODO: Remove this function once Helmfile v0.x +package config + +// DeleteOptions is the options for the build command +type DeleteOptions struct { + // Concurrency is the maximum number of concurrent helm processes to run, 0 is unlimited + Concurrency int + // Purge is the purge flag + Purge bool + // SkipCharts makes Delete skip `withPreparedCharts` + SkipCharts bool + // Cascade '--cascade' to helmv3 delete, available values: background, foreground, or orphan, default: background + Cascade string + // Wait '--wait' if set, will wait until all the resources are deleted before returning. It will wait for as long as --timeout + DeleteWait bool + // Timeout '--timeout', to wait for helm delete operation (default 5m0s) + DeleteTimeout int +} + +// NewDeleteOptions creates a new Apply +func NewDeleteOptions() *DeleteOptions { + return &DeleteOptions{} +} + +// DeleteImpl is impl for applyOptions +type DeleteImpl struct { + *GlobalImpl + *DeleteOptions +} + +// NewDeleteImpl creates a new DeleteImpl +func NewDeleteImpl(g *GlobalImpl, b *DeleteOptions) *DeleteImpl { + return &DeleteImpl{ + GlobalImpl: g, + DeleteOptions: b, + } +} + +// Concurrency returns the concurrency +func (c *DeleteImpl) Concurrency() int { + return c.DeleteOptions.Concurrency +} + +// Purge returns the purge +func (c *DeleteImpl) Purge() bool { + return c.DeleteOptions.Purge +} + +// SkipCharts returns skipCharts flag +func (c *DeleteImpl) SkipCharts() bool { + return c.DeleteOptions.SkipCharts +} + +// Cascade returns cascade flag +func (c *DeleteImpl) Cascade() string { + return c.DeleteOptions.Cascade +} + +// DeleteWait returns the wait flag +func (c *DeleteImpl) DeleteWait() bool { + return c.DeleteOptions.DeleteWait +} + +// DeleteTimeout returns the timeout flag +func (c *DeleteImpl) DeleteTimeout() int { + return c.DeleteOptions.DeleteTimeout +} diff --git a/pkg/envvar/const.go b/pkg/envvar/const.go index 0235af17..94df7381 100644 --- a/pkg/envvar/const.go +++ b/pkg/envvar/const.go @@ -6,12 +6,16 @@ const ( // use helm status to check if a release exists before installing it UseHelmStatusToCheckReleaseExistence = "HELMFILE_USE_HELM_STATUS_TO_CHECK_RELEASE_EXISTENCE" + // TODO: Remove this function once Helmfile v0.x + SkipInsecureTemplateFunctions = "HELMFILE_SKIP_INSECURE_TEMPLATE_FUNCTIONS" + DisableRunnerUniqueID = "HELMFILE_DISABLE_RUNNER_UNIQUE_ID" Experimental = "HELMFILE_EXPERIMENTAL" // environment variable for experimental features, expecting "true" lower case Environment = "HELMFILE_ENVIRONMENT" FilePath = "HELMFILE_FILE_PATH" TempDir = "HELMFILE_TEMPDIR" UpgradeNoticeDisabled = "HELMFILE_UPGRADE_NOTICE_DISABLED" + V1Mode = "HELMFILE_V1MODE" GoccyGoYaml = "HELMFILE_GOCCY_GOYAML" CacheHome = "HELMFILE_CACHE_HOME" Interactive = "HELMFILE_INTERACTIVE" diff --git a/pkg/policy/checker.go b/pkg/policy/checker.go index 28db5d70..b493d513 100644 --- a/pkg/policy/checker.go +++ b/pkg/policy/checker.go @@ -9,6 +9,8 @@ import ( "slices" "strings" "unicode" + + "github.com/helmfile/helmfile/pkg/runtime" ) var ( @@ -49,7 +51,7 @@ func forbidEnvironmentsWithReleases(filePath string, content []byte) (bool, erro } for i := 0; i < len(result)-1; i++ { if result[i] != "---" && result[i+1] != "---" { - return true, EnvironmentsAndReleasesWithinSameYamlPartErr + return runtime.V1Mode, EnvironmentsAndReleasesWithinSameYamlPartErr } } return false, nil @@ -121,7 +123,7 @@ func TopConfigKeysVerifier(filePath string, helmfileContent []byte) (bool, error preKey := orderKeys[i-1] currentKey := orderKeys[i] if topkeysPriority[preKey] > topkeysPriority[currentKey] { - return true, fmt.Errorf("top-level config key %s must be defined before %s in %s", currentKey, preKey, filePath) + return runtime.V1Mode, fmt.Errorf("top-level config key %s must be defined before %s in %s", currentKey, preKey, filePath) } } return false, nil diff --git a/pkg/policy/checker_test.go b/pkg/policy/checker_test.go index 0b64081a..7c28555c 100644 --- a/pkg/policy/checker_test.go +++ b/pkg/policy/checker_test.go @@ -4,12 +4,15 @@ import ( "testing" "github.com/stretchr/testify/require" + + "github.com/helmfile/helmfile/pkg/runtime" ) func TestForbidEnvironmentsWithReleases(t *testing.T) { testCases := []struct { name string filePath string + v1mode bool content []byte expectedErr bool isStrict bool @@ -18,6 +21,7 @@ func TestForbidEnvironmentsWithReleases(t *testing.T) { name: "no error when only releases", filePath: "helmfile.yaml", content: []byte("releases:\n"), + v1mode: false, expectedErr: false, isStrict: false, }, @@ -25,6 +29,7 @@ func TestForbidEnvironmentsWithReleases(t *testing.T) { name: "no error when only environments", filePath: "helmfile.yaml", content: []byte("environments:\n"), + v1mode: false, expectedErr: false, isStrict: false, }, @@ -32,6 +37,7 @@ func TestForbidEnvironmentsWithReleases(t *testing.T) { name: "no error when has --- between releases and environments", filePath: "helmfile.yaml", content: []byte("environments:\n---\nreleases:\n"), + v1mode: false, expectedErr: false, isStrict: false, }, @@ -39,6 +45,7 @@ func TestForbidEnvironmentsWithReleases(t *testing.T) { name: "no error when has --- between releases and environments, and --- on top of helmfile.yaml.gotmpl", filePath: "helmfile.yaml", content: []byte("---\nenvironments:\n---\nreleases:\n"), + v1mode: false, expectedErr: false, isStrict: false, }, @@ -46,13 +53,28 @@ func TestForbidEnvironmentsWithReleases(t *testing.T) { name: "error when both releases and environments", filePath: "helmfile.yaml", content: []byte("environments:\nreleases:\n"), + v1mode: false, + expectedErr: true, + isStrict: false, + }, + { + name: "error when both releases and environments for plain yaml on v1", + filePath: "helmfile.yaml", + content: []byte("environments:\nreleases:\n"), + v1mode: true, expectedErr: true, isStrict: true, }, } + v1mode := runtime.V1Mode + t.Cleanup(func() { + runtime.V1Mode = v1mode + }) + for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { + runtime.V1Mode = tc.v1mode isStrict, err := forbidEnvironmentsWithReleases(tc.filePath, tc.content) require.Equal(t, tc.isStrict, isStrict, "expected isStrict=%v, got=%v", tc.isStrict, isStrict) if tc.expectedErr { @@ -131,31 +153,26 @@ func TestTopConfigKeysVerifier(t *testing.T) { name: "error when not correct order 00", helmfileContent: []byte("releases:\nbases:\n"), wantErr: true, - wantStrict: true, }, { name: "error when not correct order 01", helmfileContent: []byte("releases:\nhelmDefaults:\nbases:\n"), wantErr: true, - wantStrict: true, }, { name: "error when not correct order 02", helmfileContent: []byte("helmDefaults:\nreleases:\nbases:\n"), wantErr: true, - wantStrict: true, }, { name: "error when not correct order 03", helmfileContent: []byte("releases:\nva:\nve:\nbases:\n"), wantErr: true, - wantStrict: true, }, { name: "error when not correct order 04", helmfileContent: []byte("bases:\nreleases:\nenvironments:\n"), wantErr: true, - wantStrict: true, }, { name: "no error when only has bases", diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index 7c1e1d14..e2e407b5 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -3,15 +3,24 @@ package runtime import ( "fmt" "os" + "strconv" "github.com/helmfile/helmfile/pkg/envvar" ) +// V1Mode is false by default for Helmfile v0.x and +// true by default for Helmfile v1.x var ( + V1Mode bool + // GoccyGoYaml is set to true in order to let Helmfile use // goccy/go-yaml instead of gopkg.in/yaml.v2. // It's false by default in Helmfile v0.x and true by default for Helmfile v1.x. GoccyGoYaml bool + + // We set this via ldflags at build-time so that we can use the + // value specified at the build time as the runtime default. + v1Mode string ) func Info() string { @@ -20,10 +29,22 @@ func Info() string { yamlLib = "goccy/go-yaml" } - return fmt.Sprintf("YAML library = %v", yamlLib) + return fmt.Sprintf("V1 mode = %v\nYAML library = %v", V1Mode, yamlLib) } func init() { + // You can toggle the V1 mode at runtime via an envvar: + // - Helmfile v1.x behaves like v0.x by running it with HELMFILE_V1MODE=false + // - Helmfile v0.x behaves like v1.x by with HELMFILE_V1MODE=true + switch os.Getenv(envvar.V1Mode) { + case "true": + V1Mode = true + case "false": + V1Mode = false + default: + V1Mode, _ = strconv.ParseBool(v1Mode) + } + // You can switch the YAML library at runtime via an envvar: switch os.Getenv(envvar.GoccyGoYaml) { case "true": @@ -31,6 +52,6 @@ func init() { case "false": GoccyGoYaml = false default: - GoccyGoYaml = true + GoccyGoYaml = V1Mode } } diff --git a/pkg/state/create.go b/pkg/state/create.go index 248a3c85..c08086d4 100644 --- a/pkg/state/create.go +++ b/pkg/state/create.go @@ -117,6 +117,20 @@ func (c *StateCreator) Parse(content []byte, baseDir, file string) (*HelmState, } } + // TODO: Remove this function once Helmfile v0.x + if len(state.DeprecatedReleases) > 0 { + if len(state.Releases) > 0 { + return nil, fmt.Errorf("failed to parse %s: you can't specify both `charts` and `releases` sections", file) + } + state.Releases = state.DeprecatedReleases + state.DeprecatedReleases = []ReleaseSpec{} + } + + // TODO: Remove this function once Helmfile v0.x + if state.DeprecatedContext != "" && state.HelmDefaults.KubeContext == "" { + state.HelmDefaults.KubeContext = state.DeprecatedContext + } + if c.overrideHelmBinary != "" && c.overrideHelmBinary != DefaultHelmBinary { state.DefaultHelmBinary = c.overrideHelmBinary } else if state.DefaultHelmBinary == "" { diff --git a/pkg/state/create_test.go b/pkg/state/create_test.go index 4cc282be..46b1e072 100644 --- a/pkg/state/create_test.go +++ b/pkg/state/create_test.go @@ -280,6 +280,26 @@ func TestReadFromYaml_StrictUnmarshalling(t *testing.T) { } } +// TODO: Remove this function once Helmfile v0.x +func TestReadFromYaml_DeprecatedReleaseReferences(t *testing.T) { + yamlFile := "example/path/to/yaml/file" + yamlContent := []byte(`charts: +- name: myrelease + chart: mychart +`) + state, err := createFromYaml(yamlContent, yamlFile, DefaultEnv, logger) + if err != nil { + t.Errorf("unxpected error: %v", err) + } + + if state.Releases[0].Name != "myrelease" { + t.Errorf("unexpected release name: expected=myrelease actual=%s", state.Releases[0].Name) + } + if state.Releases[0].Chart != "mychart" { + t.Errorf("unexpected chart name: expected=mychart actual=%s", state.Releases[0].Chart) + } +} + func TestReadFromYaml_ConflictingReleasesConfig(t *testing.T) { yamlFile := "example/path/to/yaml/file" yamlContent := []byte(`charts: diff --git a/pkg/state/state.go b/pkg/state/state.go index 4d9e43e1..a28c05d9 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -60,6 +60,10 @@ type ReleaseSetSpec struct { HelmDefaults HelmSpec `yaml:"helmDefaults,omitempty"` Helmfiles []SubHelmfileSpec `yaml:"helmfiles,omitempty"` + // TODO: Remove this function once Helmfile v0.x + DeprecatedContext string `yaml:"context,omitempty"` + DeprecatedReleases []ReleaseSpec `yaml:"charts,omitempty"` + OverrideKubeContext string `yaml:"kubeContext,omitempty"` OverrideNamespace string `yaml:"namespace,omitempty"` OverrideChart string `yaml:"chart,omitempty"` diff --git a/pkg/state/state_test.go b/pkg/state/state_test.go index 59210312..9072ea56 100644 --- a/pkg/state/state_test.go +++ b/pkg/state/state_test.go @@ -58,9 +58,13 @@ func TestHelmState_applyDefaultsTo(t *testing.T) { type fields struct { BaseChartPath string Context string - Namespace string - Repositories []RepositorySpec - Releases []ReleaseSpec + + // TODO: Remove this function once Helmfile v0.x + DeprecatedReleases []ReleaseSpec + + Namespace string + Repositories []RepositorySpec + Releases []ReleaseSpec } type args struct { spec ReleaseSpec @@ -85,8 +89,12 @@ func TestHelmState_applyDefaultsTo(t *testing.T) { fieldsWithNamespace := fields{ BaseChartPath: ".", Context: "test_context", - Namespace: specWithNamespaceFromFields.Namespace, - Repositories: nil, + + // TODO: Remove this function once Helmfile v0.x + DeprecatedReleases: nil, + + Namespace: specWithNamespaceFromFields.Namespace, + Repositories: nil, Releases: []ReleaseSpec{ specWithNamespace, }, @@ -140,6 +148,10 @@ func TestHelmState_applyDefaultsTo(t *testing.T) { state := &HelmState{ basePath: tt.fields.BaseChartPath, ReleaseSetSpec: ReleaseSetSpec{ + // TODO: Remove this function once Helmfile v0.x + DeprecatedContext: tt.fields.Context, + DeprecatedReleases: tt.fields.DeprecatedReleases, + OverrideNamespace: tt.fields.Namespace, Repositories: tt.fields.Repositories, Releases: tt.fields.Releases, @@ -728,6 +740,9 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { state := &HelmState{ basePath: "./", ReleaseSetSpec: ReleaseSetSpec{ + // TODO: Remove this function once Helmfile v0.x + DeprecatedContext: "default", + Releases: []ReleaseSpec{*tt.release}, HelmDefaults: tt.defaults, }, @@ -889,8 +904,9 @@ func TestHelmState_flagsForTemplate(t *testing.T) { state := &HelmState{ basePath: "./", ReleaseSetSpec: ReleaseSetSpec{ - Releases: []ReleaseSpec{*tt.release}, - HelmDefaults: tt.defaults, + DeprecatedContext: "default", + Releases: []ReleaseSpec{*tt.release}, + HelmDefaults: tt.defaults, }, valsRuntime: valsRuntime, } diff --git a/pkg/tmpl/context_funcs.go b/pkg/tmpl/context_funcs.go index dac6be4a..12888a91 100644 --- a/pkg/tmpl/context_funcs.go +++ b/pkg/tmpl/context_funcs.go @@ -19,6 +19,7 @@ import ( "github.com/helmfile/helmfile/pkg/envvar" "github.com/helmfile/helmfile/pkg/helmexec" "github.com/helmfile/helmfile/pkg/maputil" + "github.com/helmfile/helmfile/pkg/runtime" "github.com/helmfile/helmfile/pkg/yaml" ) @@ -36,10 +37,23 @@ func (e DisableInsecureFeaturesError) Error() string { var ( disableInsecureFeatures bool + + // TODO: Remove this function once Helmfile v0.x + skipInsecureTemplateFunctions bool ) func init() { disableInsecureFeatures, _ = strconv.ParseBool(os.Getenv(envvar.DisableInsecureFeatures)) + + // TODO: Remove this function once Helmfile v0.x + skipInsecureTemplateFunctions, _ = strconv.ParseBool(os.Getenv(envvar.SkipInsecureTemplateFunctions)) + skipInsecureTemplateFunctions = func() bool { + if runtime.V1Mode { + return false + } + b, _ := strconv.ParseBool(os.Getenv(envvar.SkipInsecureTemplateFunctions)) + return b + }() } func (c *Context) createFuncMap() template.FuncMap { @@ -62,7 +76,7 @@ func (c *Context) createFuncMap() template.FuncMap { "fetchSecretValue": fetchSecretValue, "expandSecretRefs": fetchSecretValues, } - if c.preRender { + if c.preRender || skipInsecureTemplateFunctions { // disable potential side-effect template calls funcMap["exec"] = func(string, []any, ...string) (string, error) { return "", nil diff --git a/pkg/tmpl/context_funcs_test.go b/pkg/tmpl/context_funcs_test.go index d1141d8e..e9e67e04 100644 --- a/pkg/tmpl/context_funcs_test.go +++ b/pkg/tmpl/context_funcs_test.go @@ -46,6 +46,30 @@ func TestCreateFuncMap_DisabledInsecureFeatures(t *testing.T) { disableInsecureFeatures = currentVal } +// TODO: Remove this function once Helmfile v0.x +func TestCreateFuncMap_SkipInsecureTemplateFunctions(t *testing.T) { + if runtime.V1Mode { + t.Logf("SkipInsecureTemplateFunctions is not supported in V1 mode") + return + } + currentVal := skipInsecureTemplateFunctions + + { + skipInsecureTemplateFunctions = true + ctx := &Context{basePath: "."} + funcMaps := ctx.createFuncMap() + args := make([]any, 0) + actual1, err1 := funcMaps["exec"].(func(command string, args []any, inputs ...string) (string, error))("ls", args) + require.Equal(t, "", actual1) + require.ErrorIs(t, err1, nil) + actual2, err2 := funcMaps["readFile"].(func(filename string) (string, error))("context_funcs_test.go") + require.Equal(t, "", actual2) + require.ErrorIs(t, err2, nil) + } + + skipInsecureTemplateFunctions = currentVal +} + func newFSExpecting(expectedFilename string, expected string) *filesystem.FileSystem { return filesystem.FromFileSystem(filesystem.FileSystem{ ReadFile: func(filename string) ([]byte, error) { diff --git a/test/e2e/template/helmfile/snapshot_test.go b/test/e2e/template/helmfile/snapshot_test.go index 68f62be5..672598f1 100644 --- a/test/e2e/template/helmfile/snapshot_test.go +++ b/test/e2e/template/helmfile/snapshot_test.go @@ -223,7 +223,7 @@ func testHelmfileTemplateWithBuildCommand(t *testing.T, goccyGoYaml bool) { helmConfigHome := filepath.Join(tmpDir, "helm_config") t.Logf("Using HELM_CACHE_HOME=%s, HELMFILE_CACHE_HOME=%s, HELM_CONFIG_HOME=%s", helmCacheHome, helmfileCacheHome, helmConfigHome) - inputFile := filepath.Join(testdataDir, name, "input.yaml.gotmpl") + inputFile := filepath.Join(testdataDir, name, "input.yaml") outputFile := filepath.Join(testdataDir, name, "output.yaml") ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) diff --git a/test/e2e/template/helmfile/testdata/snapshot/chart_need/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/chart_need/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/chart_need/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/chart_need/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/chart_need_enable_live_output/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/chart_need_enable_live_output/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/chart_need_enable_live_output/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/chart_need_enable_live_output/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-envs.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-envs.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-envs.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-envs.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-values.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-values.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-values.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/no-values.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/prod.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/prod.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/prod.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/prod.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/test.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/test.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/test.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/helmfiles/test.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/input.yaml similarity index 58% rename from test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/input.yaml index 05b9688c..6b312364 100644 --- a/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/input.yaml.gotmpl +++ b/test/e2e/template/helmfile/testdata/snapshot/environment_missing_in_subhelmfile/input.yaml @@ -4,13 +4,13 @@ environments: - test.yaml.gotmpl --- helmfiles: -- path: helmfiles/test.yaml.gotmpl +- path: helmfiles/test.yaml values: - envName: {{ .Values.envName }} -- path: helmfiles/prod.yaml.gotmpl +- path: helmfiles/prod.yaml values: - envName: {{ .Values.envName }} -- path: helmfiles/no-envs.yaml.gotmpl +- path: helmfiles/no-envs.yaml values: - envName: {{ .Values.envName }} -- path: helmfiles/no-values.yaml.gotmpl \ No newline at end of file +- path: helmfiles/no-values.yaml \ No newline at end of file diff --git a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/config.yaml b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/config.yaml new file mode 100644 index 00000000..71fee0cb --- /dev/null +++ b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/config.yaml @@ -0,0 +1,5 @@ +chartifyTempDir: envs_releases_within_same_yaml_part +helmfileArgs: +- --environment +- prod +- template diff --git a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/input.yaml similarity index 97% rename from test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/input.yaml index 4fc99ecb..276a4d93 100644 --- a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/input.yaml.gotmpl +++ b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/input.yaml @@ -1,7 +1,7 @@ environments: prod: staging: ---- + releases: - name: raw chart: ../../charts/raw-0.0.1 diff --git a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/output.yaml b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/output.yaml similarity index 56% rename from test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/output.yaml rename to test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/output.yaml index 7f723eaa..2e9471ac 100644 --- a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/output.yaml +++ b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_within_same_yaml_part/output.yaml @@ -1,3 +1,4 @@ +WARNING: environments and releases cannot be defined within the same YAML part. Use --- to extract the environments into a dedicated part Building dependency release=raw, chart=../../charts/raw-0.0.1 Templating release=raw, chart=../../charts/raw-0.0.1 --- diff --git a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/config.yaml b/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/config.yaml deleted file mode 100644 index 690947ac..00000000 --- a/test/e2e/template/helmfile/testdata/snapshot/environments_releases_without_same_yaml_part/config.yaml +++ /dev/null @@ -1,5 +0,0 @@ -chartifyTempDir: envs_releases_without_same_yaml_part -helmfileArgs: -- --environment -- prod -- template diff --git a/test/e2e/template/helmfile/testdata/snapshot/environments_values_gotmpl_with_environment_name/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/environments_values_gotmpl_with_environment_name/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/environments_values_gotmpl_with_environment_name/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/environments_values_gotmpl_with_environment_name/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/hcl_mix/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/hcl_mix/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/hcl_mix/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/hcl_mix/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/issue_1229_template_strategic_merge_with_lockfile/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/issue_1229_template_strategic_merge_with_lockfile/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/issue_1229_template_strategic_merge_with_lockfile/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/issue_1229_template_strategic_merge_with_lockfile/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/output.yaml b/test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/output.yaml index fb2d2b51..9e3dec93 100644 --- a/test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/output.yaml +++ b/test/e2e/template/helmfile/testdata/snapshot/issue_2098_release_template_needs/output.yaml @@ -1,7 +1,7 @@ --- -# Source: __workingdir__/testdata/snapshot/issue_2098_release_template_needs/input.yaml.gotmpl +# Source: __workingdir__/testdata/snapshot/issue_2098_release_template_needs/input.yaml -filepath: input.yaml.gotmpl +filepath: input.yaml helmBinary: helm kustomizeBinary: kustomize environments: diff --git a/test/e2e/template/helmfile/testdata/snapshot/issue_473_oci_chart_url_fetch/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/issue_473_oci_chart_url_fetch/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/issue_473_oci_chart_url_fetch/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/issue_473_oci_chart_url_fetch/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/issue_493_template_yaml_anchors_merge/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/issue_493_template_yaml_anchors_merge/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/issue_493_template_yaml_anchors_merge/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/issue_493_template_yaml_anchors_merge/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/issue_498_template_go_getter_with_selector/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/issue_498_template_go_getter_with_selector/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/issue_498_template_go_getter_with_selector/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/issue_498_template_go_getter_with_selector/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/oci_chart_pull/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/oci_chart_pull/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/oci_chart_pull/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/oci_chart_pull/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/oci_need/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/oci_need/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/oci_need/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/oci_need/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/postrenderer/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/postrenderer/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/postrenderer/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/postrenderer/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/pr_560/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/pr_560/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/pr_560/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/pr_560/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/release_template_inheritance/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/release_template_inheritance/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/release_template_inheritance/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/release_template_inheritance/input.yaml diff --git a/test/e2e/template/helmfile/testdata/snapshot/templated_lockfile/input.yaml.gotmpl b/test/e2e/template/helmfile/testdata/snapshot/templated_lockfile/input.yaml similarity index 100% rename from test/e2e/template/helmfile/testdata/snapshot/templated_lockfile/input.yaml.gotmpl rename to test/e2e/template/helmfile/testdata/snapshot/templated_lockfile/input.yaml diff --git a/test/integration/test-cases/chart-needs.sh b/test/integration/test-cases/chart-needs.sh index 2ce8e63d..76cc3814 100644 --- a/test/integration/test-cases/chart-needs.sh +++ b/test/integration/test-cases/chart-needs.sh @@ -1,7 +1,14 @@ chart_need_case_input_dir="${cases_dir}/chart-needs/input" chart_need_case_output_dir="${cases_dir}/chart-needs/output" -config_file="helmfile.yaml.gotmpl" +config_file="helmfile.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${chart_need_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi + chart_needs_tmp=$(mktemp -d) chart_needs_template_reverse=${chart_needs_tmp}/chart.needs.template.log chart_needs_lint_reverse=${chart_needs_tmp}/chart.needs.lint.log diff --git a/test/integration/test-cases/chart-needs/input/helmfile.yaml.gotmpl b/test/integration/test-cases/chart-needs/input/helmfile.yaml similarity index 100% rename from test/integration/test-cases/chart-needs/input/helmfile.yaml.gotmpl rename to test/integration/test-cases/chart-needs/input/helmfile.yaml diff --git a/test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches.sh b/test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches.sh index ea5d4a22..2fd4e5d3 100644 --- a/test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches.sh +++ b/test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches.sh @@ -1,7 +1,14 @@ chartify_jsonPatches_and_strategicMergePatches_case_input_dir="${cases_dir}/chartify-jsonPatches-and-strategicMergePatches/input" chartify_jsonPatches_and_strategicMergePatches_case_output_dir="${cases_dir}/chartify-jsonPatches-and-strategicMergePatches/output" -config_file="helmfile.yaml.gotmpl" +config_file="helmfile.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${chartify_jsonPatches_and_strategicMergePatches_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi + chartify_jsonPatches_and_strategicMergePatches_tmp=$(mktemp -d) chartify_jsonPatches_and_strategicMergePatches_template_reverse=${chartify_jsonPatches_and_strategicMergePatches_tmp}/chartify_jsonPatches_and_strategicMergePatches.template.log diff --git a/test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches/input/helmfile.yaml.gotmpl b/test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches/input/helmfile.yaml similarity index 100% rename from test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches/input/helmfile.yaml.gotmpl rename to test/integration/test-cases/chartify-jsonPatches-and-strategicMergePatches/input/helmfile.yaml diff --git a/test/integration/test-cases/chartify.sh b/test/integration/test-cases/chartify.sh index 8c6e2d3a..963fbbd6 100644 --- a/test/integration/test-cases/chartify.sh +++ b/test/integration/test-cases/chartify.sh @@ -1,7 +1,14 @@ chartify_case_input_dir="${cases_dir}/chartify/input" chartify_case_output_dir="${cases_dir}/chartify/output" -config_file="helmfile.yaml.gotmpl" +config_file="helmfile.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${chartify_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi + chartify_tmp=$(mktemp -d) chartify_template_reverse=${chartify_tmp}/chartify.template.log diff --git a/test/integration/test-cases/chartify/input/helmfile.yaml.gotmpl b/test/integration/test-cases/chartify/input/helmfile.yaml similarity index 100% rename from test/integration/test-cases/chartify/input/helmfile.yaml.gotmpl rename to test/integration/test-cases/chartify/input/helmfile.yaml diff --git a/test/integration/test-cases/cli-overwrite-environment-values.sh b/test/integration/test-cases/cli-overwrite-environment-values.sh index 8e51e159..48d9f2de 100644 --- a/test/integration/test-cases/cli-overwrite-environment-values.sh +++ b/test/integration/test-cases/cli-overwrite-environment-values.sh @@ -6,12 +6,24 @@ cli_overwrite_environment_values_reverse=${cli_overwrite_environment_values_tmp} case_title="cli overwrite environment values" -test_start "$case_title" -info "Comparing ${case_title} for output ${cli_overwrite_environment_values_reverse} with ${cli_overwrite_environment_values_output_dir}/overwritten.yaml" -for i in $(seq 10); do - info "Comparing build/cli-overwrite-environment-values #$i" - ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input.yaml.gotmpl template --state-values-set ns=test3 --state-values-set-string imageTag=1.23.3,zone="zone1,zone2" > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" - diff -u ${cli_overwrite_environment_values_output_dir}/output.yaml ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" should be consistent" - echo code=$? -done -test_pass "cli overwrite environment values for v1" \ No newline at end of file +if [[ ${HELMFILE_V1MODE} = true ]]; then + test_start "$case_title for v1" + info "Comparing ${case_title} for v1 output ${cli_overwrite_environment_values_reverse} with ${cli_overwrite_environment_values_output_dir}/overwritten.yaml" + for i in $(seq 10); do + info "Comparing build/cli-overwrite-environment-values #$i" + ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input_v1.yaml.gotmpl template --state-values-set ns=test3 --state-values-set-string imageTag=1.23.3,zone="zone1,zone2" > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" + diff -u ${cli_overwrite_environment_values_output_dir}/output_v1.yaml ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" should be consistent" + echo code=$? + done + test_pass "cli overwrite environment values for v1" +else + test_start "${case_title}" + info "Comparing ${case_title} output ${cli_overwrite_environment_values_reverse} with ${cli_overwrite_environment_values_output_dir}/overwritten.yaml" + for i in $(seq 10); do + info "Comparing build/cli-overwrite-environment-values #$i" + ${helmfile} -f ${cli_overwrite_environment_values_input_dir}/input_v1.yaml.gotmpl template --state-values-set ns=test3 --state-values-set-string imageTag=1.23.3,zone="zone1,zone2" > ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" shouldn't fail" + diff -u ${cli_overwrite_environment_values_output_dir}/output_v1.yaml ${cli_overwrite_environment_values_reverse} || fail "\"helmfile template\" should be consistent" + echo code=$? + done + test_pass "${case_title}" +fi diff --git a/test/integration/test-cases/cli-overwrite-environment-values/input/input.yaml b/test/integration/test-cases/cli-overwrite-environment-values/input/input.yaml new file mode 100644 index 00000000..28706d92 --- /dev/null +++ b/test/integration/test-cases/cli-overwrite-environment-values/input/input.yaml @@ -0,0 +1,17 @@ +environments: + default: + values: + - base.yaml + - override.yaml + +repositories: + - name: bitnami + url: https://charts.bitnami.com/bitnami + +releases: + - name: test + chart: bitnami/nginx + namespace: {{ .Values.ns }} + version: 13.2.27 + values: + - values.yaml.gotmpl diff --git a/test/integration/test-cases/cli-overwrite-environment-values/input/input.yaml.gotmpl b/test/integration/test-cases/cli-overwrite-environment-values/input/input_v1.yaml.gotmpl similarity index 100% rename from test/integration/test-cases/cli-overwrite-environment-values/input/input.yaml.gotmpl rename to test/integration/test-cases/cli-overwrite-environment-values/input/input_v1.yaml.gotmpl diff --git a/test/integration/test-cases/cli-overwrite-environment-values/output/output.yaml b/test/integration/test-cases/cli-overwrite-environment-values/output/output.yaml index ba0f5cd7..ae8f779c 100644 --- a/test/integration/test-cases/cli-overwrite-environment-values/output/output.yaml +++ b/test/integration/test-cases/cli-overwrite-environment-values/output/output.yaml @@ -1,3 +1,9 @@ +Warning: environments and releases cannot be defined within the same YAML part. Use --- to extract the environments into a dedicated part +Warning: environments and releases cannot be defined within the same YAML part. Use --- to extract the environments into a dedicated part +Adding repo bitnami https://charts.bitnami.com/bitnami +"bitnami" has been added to your repositories + +Templating release=test, chart=bitnami/nginx --- # Source: nginx/templates/svc.yaml apiVersion: v1 @@ -51,7 +57,6 @@ spec: app.kubernetes.io/instance: test app.kubernetes.io/managed-by: Helm annotations: - zone: "zone1,zone2" spec: automountServiceAccountToken: false @@ -76,7 +81,7 @@ spec: initContainers: containers: - name: nginx - image: docker.io/bitnami/nginx:1.23.3 + image: docker.io/bitnami/nginx:test3 imagePullPolicy: "IfNotPresent" env: - name: BITNAMI_DEBUG diff --git a/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml b/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml new file mode 100644 index 00000000..ba0f5cd7 --- /dev/null +++ b/test/integration/test-cases/cli-overwrite-environment-values/output/output_v1.yaml @@ -0,0 +1,111 @@ +--- +# Source: nginx/templates/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: test-nginx + namespace: "test3" + labels: + app.kubernetes.io/name: nginx + helm.sh/chart: nginx-13.2.27 + app.kubernetes.io/instance: test + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: LoadBalancer + sessionAffinity: None + externalTrafficPolicy: "Cluster" + ports: + - name: http + port: 80 + targetPort: http + selector: + app.kubernetes.io/name: nginx + app.kubernetes.io/instance: test +--- +# Source: nginx/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-nginx + namespace: "test3" + labels: + app.kubernetes.io/name: nginx + helm.sh/chart: nginx-13.2.27 + app.kubernetes.io/instance: test + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + strategy: + rollingUpdate: {} + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: nginx + app.kubernetes.io/instance: test + template: + metadata: + labels: + app.kubernetes.io/name: nginx + helm.sh/chart: nginx-13.2.27 + app.kubernetes.io/instance: test + app.kubernetes.io/managed-by: Helm + annotations: + zone: "zone1,zone2" + spec: + + automountServiceAccountToken: false + shareProcessNamespace: false + serviceAccountName: default + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: nginx + app.kubernetes.io/instance: test + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + hostNetwork: false + hostIPC: false + initContainers: + containers: + - name: nginx + image: docker.io/bitnami/nginx:1.23.3 + imagePullPolicy: "IfNotPresent" + env: + - name: BITNAMI_DEBUG + value: "false" + - name: NGINX_HTTP_PORT_NUMBER + value: "8080" + envFrom: + ports: + - name: http + containerPort: 8080 + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + tcpSocket: + port: http + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 5 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 3 + tcpSocket: + port: http + resources: + limits: {} + requests: {} + volumeMounts: + volumes: + diff --git a/test/integration/test-cases/happypath.sh b/test/integration/test-cases/happypath.sh index 2968a554..a9778a1d 100644 --- a/test/integration/test-cases/happypath.sh +++ b/test/integration/test-cases/happypath.sh @@ -2,7 +2,14 @@ test_start "happypath - simple rollout of httpbin chart" happypath_case_input_dir="${cases_dir}/happypath/input" happypath_case_output_dir="${cases_dir}/happypath/output" -config_file="happypath.yaml.gotmpl" +config_file="happypath.yaml" + +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${happypath_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi info "Diffing ${happypath_case_input_dir}/${config_file}" bash -c "${helmfile} -f ${happypath_case_input_dir}/${config_file} diff --detailed-exitcode; code="'$?'"; [ "'${code}'" -eq 2 ]" || fail "unexpected exit code returned by helmfile diff" diff --git a/test/integration/test-cases/happypath/input/happypath.yaml.gotmpl b/test/integration/test-cases/happypath/input/happypath.yaml similarity index 100% rename from test/integration/test-cases/happypath/input/happypath.yaml.gotmpl rename to test/integration/test-cases/happypath/input/happypath.yaml diff --git a/test/integration/test-cases/postrender.sh b/test/integration/test-cases/postrender.sh index dfeab508..5a1a2aee 100644 --- a/test/integration/test-cases/postrender.sh +++ b/test/integration/test-cases/postrender.sh @@ -1,7 +1,14 @@ postrender_case_input_dir="${cases_dir}/postrender/input" postrender_case_output_dir="${cases_dir}/postrender/output" -config_file="helmfile.yaml.gotmpl" +config_file="helmfile.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${postrender_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi + postrender_diff_out_file=${postrender_case_output_dir}/diff-result if [[ $EXTRA_HELMFILE_FLAGS == *--enable-live-output* ]]; then postrender_diff_out_file=${postrender_case_output_dir}/diff-result-live diff --git a/test/integration/test-cases/postrender/input/helmfile.yaml.gotmpl b/test/integration/test-cases/postrender/input/helmfile.yaml similarity index 100% rename from test/integration/test-cases/postrender/input/helmfile.yaml.gotmpl rename to test/integration/test-cases/postrender/input/helmfile.yaml diff --git a/test/integration/test-cases/regression.sh b/test/integration/test-cases/regression.sh index bc2ea412..8a68d491 100644 --- a/test/integration/test-cases/regression.sh +++ b/test/integration/test-cases/regression.sh @@ -4,20 +4,44 @@ test_start "regression tests" regression_case_input_dir="${cases_dir}/regression/input" info "https://github.com/roboll/helmfile/issues/1857" -config_file="issue.1857.yaml.gotmpl" +config_file="issue.1857.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${regression_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi (${helmfile} -f ${regression_case_input_dir}/${config_file} --state-values-set grafanaEnabled=true template | grep grafana 1>/dev/null) || fail "\"helmfile template\" shouldn't include grafana" ! (${helmfile} -f ${regression_case_input_dir}/${config_file} --state-values-set grafanaEnabled=false template | grep grafana) || fail "\"helmfile template\" shouldn't include grafana" info "https://github.com/roboll/helmfile/issues/1867" -config_file="issue.1867.yaml.gotmpl" +config_file="issue.1867.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${regression_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi (${helmfile} -f ${regression_case_input_dir}/${config_file} template 1>/dev/null) || fail "\"helmfile template\" shouldn't fail" info "https://github.com/roboll/helmfile/issues/2118" -config_file="issue.2118.yaml.gotmpl" +config_file="issue.2118.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${regression_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi (${helmfile} -f ${regression_case_input_dir}/${config_file} template 1>/dev/null) || fail "\"helmfile template\" shouldn't fail" info "https://github.com/helmfile/helmfile/issues/1682" -config_file="issue.1682.yaml.gotmpl" +config_file="issue.1682.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${regression_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi (${helmfile} -f ${regression_case_input_dir}/${config_file} deps 1>/dev/null) || fail "\"helmfile deps\" shouldn't fail" test_pass "regression tests" \ No newline at end of file diff --git a/test/integration/test-cases/regression/input/issue.1682.yaml.gotmpl b/test/integration/test-cases/regression/input/issue.1682.yaml similarity index 100% rename from test/integration/test-cases/regression/input/issue.1682.yaml.gotmpl rename to test/integration/test-cases/regression/input/issue.1682.yaml diff --git a/test/integration/test-cases/regression/input/issue.1857.yaml.gotmpl b/test/integration/test-cases/regression/input/issue.1857.yaml similarity index 100% rename from test/integration/test-cases/regression/input/issue.1857.yaml.gotmpl rename to test/integration/test-cases/regression/input/issue.1857.yaml diff --git a/test/integration/test-cases/regression/input/issue.1867.yaml.gotmpl b/test/integration/test-cases/regression/input/issue.1867.yaml similarity index 100% rename from test/integration/test-cases/regression/input/issue.1867.yaml.gotmpl rename to test/integration/test-cases/regression/input/issue.1867.yaml diff --git a/test/integration/test-cases/regression/input/issue.2118.yaml.gotmpl b/test/integration/test-cases/regression/input/issue.2118.yaml similarity index 100% rename from test/integration/test-cases/regression/input/issue.2118.yaml.gotmpl rename to test/integration/test-cases/regression/input/issue.2118.yaml diff --git a/test/integration/test-cases/secretssops.sh b/test/integration/test-cases/secretssops.sh index b5085275..b4c53f79 100644 --- a/test/integration/test-cases/secretssops.sh +++ b/test/integration/test-cases/secretssops.sh @@ -4,7 +4,13 @@ sops="sops --hc-vault-transit $VAULT_ADDR/v1/sops/keys/key" secretssops_case_input_dir="${cases_dir}/secretssops/input" secretssops_case_output_dir="${cases_dir}/secretssops/output" -config_file="secretssops.yaml.gotmpl" +config_file="secretssops.yaml" +if [[ ${HELMFILE_V1MODE} = true ]]; then + pushd "${secretssops_case_input_dir}" + mv "${config_file}" "${config_file}.gotmpl" + config_file="${config_file}.gotmpl" + popd +fi mkdir -p ${secretssops_case_input_dir}/tmp diff --git a/test/integration/test-cases/secretssops/input/secretssops.yaml.gotmpl b/test/integration/test-cases/secretssops/input/secretssops.yaml similarity index 100% rename from test/integration/test-cases/secretssops/input/secretssops.yaml.gotmpl rename to test/integration/test-cases/secretssops/input/secretssops.yaml diff --git a/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values.sh b/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values.sh index 113f45fa..a234fb19 100644 --- a/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values.sh +++ b/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values.sh @@ -1,20 +1,19 @@ -v1_subhelmfile_multi_bases_with_array_values_input_dir="${cases_dir}/v1-subhelmfile-multi-bases-with-array-values/input" -v1_subhelmfile_multi_bases_with_array_values_output_dir="${cases_dir}/v1-subhelmfile-multi-bases-with-array-values/output" +if [[ ${HELMFILE_V1MODE} = true ]]; then + v1_subhelmfile_multi_bases_with_array_values_input_dir="${cases_dir}/v1-subhelmfile-multi-bases-with-array-values/input" + v1_subhelmfile_multi_bases_with_array_values_output_dir="${cases_dir}/v1-subhelmfile-multi-bases-with-array-values/output" -yaml_overwrite_tmp=$(mktemp -d) -yaml_overwrite_reverse=${yaml_overwrite_tmp}/helmfile_template_result + yaml_overwrite_tmp=$(mktemp -d) + yaml_overwrite_reverse=${yaml_overwrite_tmp}/helmfile_template_result -v1_subhelmfile_multi_bases_with_array_values_output_file=${v1_subhelmfile_multi_bases_with_array_values_output_dir}/result -if [[ $EXTRA_HELMFILE_FLAGS == *--enable-live-output* ]]; then - v1_subhelmfile_multi_bases_with_array_values_output_file=${v1_subhelmfile_multi_bases_with_array_values_output_dir}/result-live -fi - -test_start "v1 subhelmfile multi bases with array values" -info "Comparing v1 subhelmfile multi bases with array values output ${yaml_overwrite_reverse} with ${v1_subhelmfile_multi_bases_with_array_values_output_file}" -for i in $(seq 10); do - info "Comparing build/v1-subhelmfile-multi-bases-with-array-values #$i" - ${helmfile} -f ${v1_subhelmfile_multi_bases_with_array_values_input_dir}/helmfile.yaml.gotmpl template -e dev &> ${yaml_overwrite_reverse} || fail "\"helmfile template\" shouldn't fail" - diff -u ${v1_subhelmfile_multi_bases_with_array_values_output_file} ${yaml_overwrite_reverse} || fail "\"helmfile template\" should be consistent" - echo code=$? -done -test_pass "v1 subhelmfile multi bases with array values" \ No newline at end of file + test_start "v1 subhelmfile multi bases with array values" + info "Comparing v1 subhelmfile multi bases with array values output ${yaml_overwrite_reverse} with ${v1_subhelmfile_multi_bases_with_array_values_output_dir}/result" + for i in $(seq 10); do + info "Comparing build/v1-subhelmfile-multi-bases-with-array-values #$i" + ${helmfile} -f ${v1_subhelmfile_multi_bases_with_array_values_input_dir}/helmfile.yaml.gotmpl template -e dev &> ${yaml_overwrite_reverse} || fail "\"helmfile template\" shouldn't fail" + diff -u ${v1_subhelmfile_multi_bases_with_array_values_output_dir}/result ${yaml_overwrite_reverse} || fail "\"helmfile template\" should be consistent" + echo code=$? + done + test_pass "v1 subhelmfile multi bases with array values" +else + test_pass "[skipped] v1 subhelmfile multi bases with array values" +fi \ No newline at end of file diff --git a/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values/output/result-live b/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values/output/result-live deleted file mode 100644 index ba42d6c6..00000000 --- a/test/integration/test-cases/v1-subhelmfile-multi-bases-with-array-values/output/result-live +++ /dev/null @@ -1,25 +0,0 @@ -Live output is enabled -Adding repo incubator https://charts.helm.sh/incubator/ -"incubator" has been added to your repositories - -Templating release=helmfile-test, chart=incubator/raw ---- -# Source: raw/templates/resources.yaml -apiVersion: v1 -kind: Pod -metadata: - labels: - app: raw - chart: raw-0.1.0 - heritage: Helm - release: helmfile-test - name: test -spec: - containers: - - command: - - /bin/sh - - -c - - env - image: registry.k8s.io/busybox - name: test-container - diff --git a/test/integration/test-cases/yaml-overwrite.sh b/test/integration/test-cases/yaml-overwrite.sh index 617d8f97..a4a45825 100644 --- a/test/integration/test-cases/yaml-overwrite.sh +++ b/test/integration/test-cases/yaml-overwrite.sh @@ -1,15 +1,19 @@ -yaml_overwrite_case_input_dir="${cases_dir}/yaml-overwrite/input" -yaml_overwrite_case_output_dir="${cases_dir}/yaml-overwrite/output" +if [[ ${HELMFILE_V1MODE} = true ]]; then + yaml_overwrite_case_input_dir="${cases_dir}/yaml-overwrite/input" + yaml_overwrite_case_output_dir="${cases_dir}/yaml-overwrite/output" -yaml_overwrite_tmp=$(mktemp -d) -yaml_overwrite_reverse=${yaml_overwrite_tmp}/yaml.override.build.yaml + yaml_overwrite_tmp=$(mktemp -d) + yaml_overwrite_reverse=${yaml_overwrite_tmp}/yaml.override.build.yaml -test_start "yaml overwrite feature" -info "Comparing yaml overwrite feature output ${yaml_overwrite_reverse} with ${yaml_overwrite_case_output_dir}/overwritten.yaml" -for i in $(seq 10); do - info "Comparing build/yaml-overwrite #$i" - ${helmfile} -f ${yaml_overwrite_case_input_dir}/issue.657.yaml.gotmpl template --skip-deps > ${yaml_overwrite_reverse} || fail "\"helmfile template\" shouldn't fail" - ./dyff between -bs ${yaml_overwrite_case_output_dir}/overwritten.yaml ${yaml_overwrite_reverse} || fail "\"helmfile template\" should be consistent" - echo code=$? -done -test_pass "yaml overwrite feature" \ No newline at end of file + test_start "yaml overwrite feature" + info "Comparing yaml overwrite feature output ${yaml_overwrite_reverse} with ${yaml_overwrite_case_output_dir}/overwritten.yaml" + for i in $(seq 10); do + info "Comparing build/yaml-overwrite #$i" + ${helmfile} -f ${yaml_overwrite_case_input_dir}/issue.657.yaml.gotmpl template --skip-deps > ${yaml_overwrite_reverse} || fail "\"helmfile template\" shouldn't fail" + ./dyff between -bs ${yaml_overwrite_case_output_dir}/overwritten.yaml ${yaml_overwrite_reverse} || fail "\"helmfile template\" should be consistent" + echo code=$? + done + test_pass "yaml overwrite feature" +else + test_pass "[skipped] yaml overwrite feature" +fi \ No newline at end of file