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:
parent
eeb61e6174
commit
d71ac15748
|
|
@ -1639,10 +1639,14 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
|
||||||
flags = append(flags, "--cleanup-on-fail")
|
flags = append(flags, "--cleanup-on-fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
if helm.IsVersionAtLeast(3, 2) &&
|
if release.CreateNamespace != nil && *release.CreateNamespace ||
|
||||||
(release.CreateNamespace != nil && *release.CreateNamespace ||
|
release.CreateNamespace == nil && (st.HelmDefaults.CreateNamespace == nil || *st.HelmDefaults.CreateNamespace) {
|
||||||
release.CreateNamespace == nil && (st.HelmDefaults.CreateNamespace == nil || *st.HelmDefaults.CreateNamespace)) {
|
if helm.IsVersionAtLeast(3, 2) {
|
||||||
flags = append(flags, "--create-namespace")
|
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)
|
flags = st.appendConnectionFlags(flags, release)
|
||||||
|
|
|
||||||
|
|
@ -167,6 +167,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||||
defaults HelmSpec
|
defaults HelmSpec
|
||||||
release *ReleaseSpec
|
release *ReleaseSpec
|
||||||
want []string
|
want []string
|
||||||
|
wantErr string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "no-options",
|
name: "no-options",
|
||||||
|
|
@ -669,6 +670,26 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||||
"--namespace", "test-namespace",
|
"--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 {
|
for i := range tests {
|
||||||
tt := tests[i]
|
tt := tests[i]
|
||||||
|
|
@ -685,9 +706,12 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args, err := state.flagsForUpgrade(helm, tt.release, 0)
|
args, err := state.flagsForUpgrade(helm, tt.release, 0)
|
||||||
if err != nil {
|
if err != nil && tt.wantErr == "" {
|
||||||
t.Errorf("unexpected error flagsForUpgrade: %v", err)
|
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) {
|
if !reflect.DeepEqual(args, tt.want) {
|
||||||
t.Errorf("flagsForUpgrade returned = %v, want %v", args, tt.want)
|
t.Errorf("flagsForUpgrade returned = %v, want %v", args, tt.want)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue