From 5ea004a3ff41839104eca4075841cd950808f5bf Mon Sep 17 00:00:00 2001 From: John Bonham Date: Mon, 28 Aug 2017 14:52:27 -0700 Subject: [PATCH] feature(helm) delete command continues after failed release deletions - Updates the error message returned from FakeClient DeleteRelease to be consistent with other FakeClient methods. - Prevents Helm delete command from immediatley failing if any releases throw an error, instead trying to delete each release. Closes #1665 --- cmd/helm/delete.go | 15 ++++++++++----- cmd/helm/delete_test.go | 7 +++++++ pkg/helm/fake.go | 3 +++ 3 files changed, 20 insertions(+), 5 deletions(-) mode change 100755 => 100644 cmd/helm/delete.go diff --git a/cmd/helm/delete.go b/cmd/helm/delete.go old mode 100755 new mode 100644 index 05c845344..d6a1feaef --- a/cmd/helm/delete.go +++ b/cmd/helm/delete.go @@ -64,15 +64,20 @@ func newDeleteCmd(c helm.Interface, out io.Writer) *cobra.Command { } del.client = ensureHelmClient(del.client) + var err error = nil for i := 0; i < len(args); i++ { del.name = args[i] - if err := del.run(); err != nil { - return err + if relErr := del.run(); relErr != nil { + if err != nil { + err = fmt.Errorf("%s, %s", err, relErr) + } else { + err = fmt.Errorf("%s", relErr) + } + } else { + fmt.Fprintf(out, "release \"%s\" deleted\n", del.name) } - - fmt.Fprintf(out, "release \"%s\" deleted\n", del.name) } - return nil + return err }, } diff --git a/cmd/helm/delete_test.go b/cmd/helm/delete_test.go index 4f1bd29a6..fc044a662 100644 --- a/cmd/helm/delete_test.go +++ b/cmd/helm/delete_test.go @@ -61,6 +61,13 @@ func TestDelete(t *testing.T) { args: []string{}, err: true, }, + { + name: "delete after failure", + args: []string{"return-error", "aeneas"}, + flags: []string{}, + expected: "release \"aeneas\" deleted\n", + err: true, + }, } runReleaseCases(t, tests, func(c *helm.FakeClient, out io.Writer) *cobra.Command { return newDeleteCmd(c, out) diff --git a/pkg/helm/fake.go b/pkg/helm/fake.go index c66777673..2676fd5d6 100644 --- a/pkg/helm/fake.go +++ b/pkg/helm/fake.go @@ -61,6 +61,9 @@ func (c *FakeClient) InstallReleaseFromChart(chart *chart.Chart, ns string, opts // DeleteRelease returns nil, nil func (c *FakeClient) DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error) { + if rlsName == "return-error" { + return nil, fmt.Errorf("No such release: %s", rlsName) + } return nil, nil }