mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-22 10:09:07 +02:00
Support for createNamespace (#1226)
- createNamespace is a new attribute that can be added to helmDefaults or an individual release to enforce the creation of a release namespace during sync if the namespace does not exist. This leverages helm's (3.2+) --create-namespace flag for the install/upgrade command. If running helm < 3.2, the createNamespace attribute has no effect. Resolves #891 Resolves #1140
This commit is contained in:
+101
-2
@@ -163,6 +163,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
version *helmexec.Version
|
||||
defaults HelmSpec
|
||||
release *ReleaseSpec
|
||||
want []string
|
||||
@@ -573,6 +574,101 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
"--tls-ca-cert", "ca.pem",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "create-namespace-default-helm3.2",
|
||||
defaults: HelmSpec{
|
||||
Verify: false,
|
||||
},
|
||||
version: &helmexec.Version{
|
||||
Major: 3,
|
||||
Minor: 2,
|
||||
Patch: 0,
|
||||
},
|
||||
release: &ReleaseSpec{
|
||||
Chart: "test/chart",
|
||||
Version: "0.1",
|
||||
Verify: &disable,
|
||||
Name: "test-charts",
|
||||
Namespace: "test-namespace",
|
||||
},
|
||||
want: []string{
|
||||
"--version", "0.1",
|
||||
"--create-namespace",
|
||||
"--namespace", "test-namespace",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "create-namespace-disabled-helm3.2",
|
||||
defaults: HelmSpec{
|
||||
Verify: false,
|
||||
CreateNamespace: &disable,
|
||||
},
|
||||
version: &helmexec.Version{
|
||||
Major: 3,
|
||||
Minor: 2,
|
||||
Patch: 0,
|
||||
},
|
||||
release: &ReleaseSpec{
|
||||
Chart: "test/chart",
|
||||
Version: "0.1",
|
||||
Verify: &disable,
|
||||
Name: "test-charts",
|
||||
Namespace: "test-namespace",
|
||||
},
|
||||
want: []string{
|
||||
"--version", "0.1",
|
||||
"--namespace", "test-namespace",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "create-namespace-release-override-enabled-helm3.2",
|
||||
defaults: HelmSpec{
|
||||
Verify: false,
|
||||
CreateNamespace: &disable,
|
||||
},
|
||||
version: &helmexec.Version{
|
||||
Major: 3,
|
||||
Minor: 2,
|
||||
Patch: 0,
|
||||
},
|
||||
release: &ReleaseSpec{
|
||||
Chart: "test/chart",
|
||||
Version: "0.1",
|
||||
Verify: &disable,
|
||||
Name: "test-charts",
|
||||
Namespace: "test-namespace",
|
||||
CreateNamespace: &enable,
|
||||
},
|
||||
want: []string{
|
||||
"--version", "0.1",
|
||||
"--create-namespace",
|
||||
"--namespace", "test-namespace",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "create-namespace-release-override-disabled-helm3.2",
|
||||
defaults: HelmSpec{
|
||||
Verify: false,
|
||||
CreateNamespace: &enable,
|
||||
},
|
||||
version: &helmexec.Version{
|
||||
Major: 3,
|
||||
Minor: 2,
|
||||
Patch: 0,
|
||||
},
|
||||
release: &ReleaseSpec{
|
||||
Chart: "test/chart",
|
||||
Version: "0.1",
|
||||
Verify: &disable,
|
||||
Name: "test-charts",
|
||||
Namespace: "test-namespace",
|
||||
CreateNamespace: &disable,
|
||||
},
|
||||
want: []string{
|
||||
"--version", "0.1",
|
||||
"--namespace", "test-namespace",
|
||||
},
|
||||
},
|
||||
}
|
||||
for i := range tests {
|
||||
tt := tests[i]
|
||||
@@ -584,10 +680,13 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
HelmDefaults: tt.defaults,
|
||||
valsRuntime: valsRuntime,
|
||||
}
|
||||
helm := helmexec.New("helm", logger, "default", &mockRunner{})
|
||||
helm := &exectest.Helm{
|
||||
Version: tt.version,
|
||||
}
|
||||
|
||||
args, err := state.flagsForUpgrade(helm, tt.release, 0)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error flagsForUpgade: %v", err)
|
||||
t.Errorf("unexpected error flagsForUpgrade: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(args, tt.want) {
|
||||
t.Errorf("flagsForUpgrade returned = %v, want %v", args, tt.want)
|
||||
|
||||
Reference in New Issue
Block a user