From ef63a055139b9d07c57983247502fbb965d82fd3 Mon Sep 17 00:00:00 2001 From: KUOKA Yusuke Date: Sat, 14 Sep 2019 06:23:22 +0200 Subject: [PATCH] fix(helm3): delete/destroy/apply/sync unable to detect releases to be deleted (#857) Fixes #853 --- pkg/state/state.go | 12 ++++++++++-- pkg/state/state_test.go | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/state/state.go b/pkg/state/state.go index 8f7dc0be..4ad7aae2 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -355,7 +355,7 @@ func (st *HelmState) prepareSyncReleases(helm helmexec.Interface, additionalValu } func (st *HelmState) isReleaseInstalled(context helmexec.HelmContext, helm helmexec.Interface, release ReleaseSpec) (bool, error) { - out, err := helm.List(context, "^"+release.Name+"$", st.connectionFlags(&release)...) + out, err := st.listReleases(context, helm, &release) if err != nil { return false, err } else if out != "" { @@ -489,9 +489,17 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme return nil } +func (st *HelmState) listReleases(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error) { + flags := st.connectionFlags(release) + if isHelm3() && release.Namespace != "" { + flags = append(flags, "--namespace", release.Namespace) + } + return helm.List(context, "^"+release.Name+"$", flags...) +} + func (st *HelmState) getDeployedVersion(context helmexec.HelmContext, helm helmexec.Interface, release *ReleaseSpec) (string, error) { //retrieve the version - if out, err := helm.List(context, "^"+release.Name+"$", st.connectionFlags(release)...); err == nil { + if out, err := st.listReleases(context, helm, release); err == nil { chartName := filepath.Base(release.Chart) //the regexp without escapes : .*\s.*\s.*\s.*\schartName-(.*?)\s pat := regexp.MustCompile(".*\\s.*\\s.*\\s.*\\s" + chartName + "-(.*?)\\s") diff --git a/pkg/state/state_test.go b/pkg/state/state_test.go index ae924a6a..78233871 100644 --- a/pkg/state/state_test.go +++ b/pkg/state/state_test.go @@ -2082,7 +2082,7 @@ func TestHelmState_Delete(t *testing.T) { return } } else if !(reflect.DeepEqual(tt.deleted, helm.deleted) && (len(affectedReleases.Deleted) == len(tt.deleted))) { - t.Errorf("unexpected deletions happened: expected %v, got %v", tt.deleted, &affectedReleases.Deleted) + t.Errorf("unexpected deletions happened: expected %v, got %v", tt.deleted, helm.deleted) } } t.Run(tt.name, f)