From 3d0f0afe3a3b4eae206f1db6eccd501ff0ae2ac4 Mon Sep 17 00:00:00 2001 From: Vincent Stchu <24803055+vincentstchu@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:27:09 +0800 Subject: [PATCH] Feat: support helm flag --enable-dns (#830) * Support helm flag --enable-dns Signed-off-by: vincent_stchu <24803055+vincentstchu@users.noreply.github.com> --- pkg/state/state.go | 8 ++++++++ pkg/state/state_test.go | 35 +++++++++++++++++++++++++++++++++++ pkg/state/temp_test.go | 12 ++++++------ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/pkg/state/state.go b/pkg/state/state.go index 9404c827..cdf4aaf4 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -157,6 +157,8 @@ type HelmSpec struct { KubeContext string `yaml:"kubeContext,omitempty"` Args []string `yaml:"args,omitempty"` Verify bool `yaml:"verify"` + // EnableDNS, when set to true, enable DNS lookups when rendering templates + EnableDNS bool `yaml:"enableDNS"` // Devel, when set to true, use development versions, too. Equivalent to version '>0.0.0-0' Devel bool `yaml:"devel"` // Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful @@ -233,6 +235,8 @@ type ReleaseSpec struct { // Verify enables signature verification on fetched chart. // Beware some (or many?) chart repositories and charts don't seem to support it. Verify *bool `yaml:"verify,omitempty"` + // EnableDNS, when set to true, enable DNS lookups when rendering templates + EnableDNS *bool `yaml:"enableDNS,omitempty"` // Devel, when set to true, use development versions, too. Equivalent to version '>0.0.0-0' Devel *bool `yaml:"devel,omitempty"` // Wait, if set to true, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful @@ -2477,6 +2481,10 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp flags = append(flags, "--verify") } + if release.EnableDNS != nil && *release.EnableDNS || release.EnableDNS == nil && st.HelmDefaults.EnableDNS { + flags = append(flags, "--enable-dns") + } + if release.Wait != nil && *release.Wait || release.Wait == nil && st.HelmDefaults.Wait { flags = append(flags, "--wait") } diff --git a/pkg/state/state_test.go b/pkg/state/state_test.go index b23ad9a0..577effcc 100644 --- a/pkg/state/state_test.go +++ b/pkg/state/state_test.go @@ -235,6 +235,41 @@ func TestHelmState_flagsForUpgrade(t *testing.T) { "--namespace", "test-namespace", }, }, + { + name: "enable-dns", + defaults: HelmSpec{ + EnableDNS: false, + }, + release: &ReleaseSpec{ + Chart: "test/chart", + Version: "0.1", + EnableDNS: &enable, + Name: "test-charts", + Namespace: "test-namespace", + }, + want: []string{ + "--version", "0.1", + "--enable-dns", + "--namespace", "test-namespace", + }, + }, + { + name: "enable-dns-from-default", + defaults: HelmSpec{ + EnableDNS: true, + }, + release: &ReleaseSpec{ + Chart: "test/chart", + Version: "0.1", + EnableDNS: &disable, + Name: "test-charts", + Namespace: "test-namespace", + }, + want: []string{ + "--version", "0.1", + "--namespace", "test-namespace", + }, + }, { name: "force", defaults: HelmSpec{ diff --git a/pkg/state/temp_test.go b/pkg/state/temp_test.go index 1ed95691..1bc4da3d 100644 --- a/pkg/state/temp_test.go +++ b/pkg/state/temp_test.go @@ -38,39 +38,39 @@ func TestGenerateID(t *testing.T) { run(testcase{ subject: "baseline", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, - want: "foo-values-77cb4d7f9b", + want: "foo-values-76d4857b56", }) run(testcase{ subject: "different bytes content", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, data: []byte(`{"k":"v"}`), - want: "foo-values-6f6bc74b55", + want: "foo-values-55d59fb487", }) run(testcase{ subject: "different map content", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, data: map[string]interface{}{"k": "v"}, - want: "foo-values-57dfc6cb8f", + want: "foo-values-7c8d99f9f7", }) run(testcase{ subject: "different chart", release: ReleaseSpec{Name: "foo", Chart: "stable/envoy"}, - want: "foo-values-74594bb67", + want: "foo-values-7467f76549", }) run(testcase{ subject: "different name", release: ReleaseSpec{Name: "bar", Chart: "incubator/raw"}, - want: "bar-values-bdbb54d7", + want: "bar-values-dbdf465b7", }) run(testcase{ subject: "specific ns", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw", Namespace: "myns"}, - want: "myns-foo-values-677dcd477", + want: "myns-foo-values-6d4874d757", }) for id, n := range ids {