Enhance createNamespace error handling (#1227)

- An error is raised if createNamespace is set explicitly and the
  helm version being used is not 3.2+
This commit is contained in:
Craig Dunford 2020-04-26 19:59:44 -04:00 committed by GitHub
parent eeb61e6174
commit d71ac15748
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 5 deletions

View File

@ -1639,10 +1639,14 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
flags = append(flags, "--cleanup-on-fail")
}
if helm.IsVersionAtLeast(3, 2) &&
(release.CreateNamespace != nil && *release.CreateNamespace ||
release.CreateNamespace == nil && (st.HelmDefaults.CreateNamespace == nil || *st.HelmDefaults.CreateNamespace)) {
if release.CreateNamespace != nil && *release.CreateNamespace ||
release.CreateNamespace == nil && (st.HelmDefaults.CreateNamespace == nil || *st.HelmDefaults.CreateNamespace) {
if helm.IsVersionAtLeast(3, 2) {
flags = append(flags, "--create-namespace")
} else if release.CreateNamespace != nil || st.HelmDefaults.CreateNamespace != nil {
// createNamespace was set explicitly, but not running supported version of helm - error
return nil, fmt.Errorf("releases[].createNamespace requires Helm 3.2.0 or greater")
}
}
flags = st.appendConnectionFlags(flags, release)

View File

@ -167,6 +167,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
defaults HelmSpec
release *ReleaseSpec
want []string
wantErr string
}{
{
name: "no-options",
@ -669,6 +670,26 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
"--namespace", "test-namespace",
},
},
{
name: "create-namespace-unsupported",
defaults: HelmSpec{
Verify: false,
CreateNamespace: &enable,
},
version: &helmexec.Version{
Major: 2,
Minor: 16,
Patch: 0,
},
release: &ReleaseSpec{
Chart: "test/chart",
Version: "0.1",
Verify: &disable,
Name: "test-charts",
Namespace: "test-namespace",
},
wantErr: "releases[].createNamespace requires Helm 3.2.0 or greater",
},
}
for i := range tests {
tt := tests[i]
@ -685,9 +706,12 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
}
args, err := state.flagsForUpgrade(helm, tt.release, 0)
if err != nil {
if err != nil && tt.wantErr == "" {
t.Errorf("unexpected error flagsForUpgrade: %v", err)
}
if tt.wantErr != "" && (err == nil || err.Error() != tt.wantErr) {
t.Errorf("expected error '%v'; got '%v'", err, tt.wantErr)
}
if !reflect.DeepEqual(args, tt.want) {
t.Errorf("flagsForUpgrade returned = %v, want %v", args, tt.want)
}