From c4eb95f3ec5909f90c4516d83543da7b5df9fb30 Mon Sep 17 00:00:00 2001 From: Mike Eves Date: Wed, 20 Mar 2019 02:22:26 +0000 Subject: [PATCH] Fix: Release options should override helm defaults (#497) Options specified in releases (e.g. `recreatePods`) should override the respective options set in `helmDefaults`. Currently, `helmDefaults` takes precedence. In the below example, `--force` should not be passed as an additional deployment argument: ``` helmDefaults: force: true releases: - name: example namespace: example chart: some/repo version: ~1.24.1 force: false ``` Fixes #492 --- state/state.go | 10 +++++----- state/state_test.go | 22 +++++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/state/state.go b/state/state.go index affac2fd..d92dada6 100644 --- a/state/state.go +++ b/state/state.go @@ -928,11 +928,11 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp flags = append(flags, "--devel") } - if release.Verify != nil && *release.Verify || st.HelmDefaults.Verify { + if release.Verify != nil && *release.Verify || release.Verify == nil && st.HelmDefaults.Verify { flags = append(flags, "--verify") } - if release.Wait != nil && *release.Wait || st.HelmDefaults.Wait { + if release.Wait != nil && *release.Wait || release.Wait == nil && st.HelmDefaults.Wait { flags = append(flags, "--wait") } @@ -944,15 +944,15 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp flags = append(flags, "--timeout", fmt.Sprintf("%d", timeout)) } - if release.Force != nil && *release.Force || st.HelmDefaults.Force { + if release.Force != nil && *release.Force || release.Force == nil && st.HelmDefaults.Force { flags = append(flags, "--force") } - if release.RecreatePods != nil && *release.RecreatePods || st.HelmDefaults.RecreatePods { + if release.RecreatePods != nil && *release.RecreatePods || release.RecreatePods == nil && st.HelmDefaults.RecreatePods { flags = append(flags, "--recreate-pods") } - if release.Atomic != nil && *release.Atomic || st.HelmDefaults.Atomic { + if release.Atomic != nil && *release.Atomic || release.Atomic == nil && st.HelmDefaults.Atomic { flags = append(flags, "--atomic") } diff --git a/state/state_test.go b/state/state_test.go index 367402f1..7be4afeb 100644 --- a/state/state_test.go +++ b/state/state_test.go @@ -192,7 +192,6 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { }, want: []string{ "--version", "0.1", - "--verify", "--namespace", "test-namespace", }, }, @@ -228,7 +227,6 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { }, want: []string{ "--version", "0.1", - "--force", "--namespace", "test-namespace", }, }, @@ -264,7 +262,6 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { }, want: []string{ "--version", "0.1", - "--recreate-pods", "--namespace", "test-namespace", }, }, @@ -336,7 +333,6 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { }, want: []string{ "--version", "0.1", - "--wait", "--namespace", "test-namespace", }, }, @@ -395,7 +391,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { }, }, { - name: "atomic-from-default", + name: "atomic-override-default", defaults: HelmSpec{ Atomic: true, }, @@ -406,6 +402,22 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { Name: "test-charts", Namespace: "test-namespace", }, + want: []string{ + "--version", "0.1", + "--namespace", "test-namespace", + }, + }, + { + name: "atomic-from-default", + defaults: HelmSpec{ + Atomic: true, + }, + release: &ReleaseSpec{ + Chart: "test/chart", + Version: "0.1", + Name: "test-charts", + Namespace: "test-namespace", + }, want: []string{ "--version", "0.1", "--atomic",