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
This commit is contained in:
Mike Eves 2019-03-20 02:22:26 +00:00 committed by KUOKA Yusuke
parent f2996e2452
commit c4eb95f3ec
2 changed files with 22 additions and 10 deletions

View File

@ -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")
}

View File

@ -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",