diff --git a/pkg/tiller/release_modules.go b/pkg/tiller/release_modules.go index a587581ed..f6344ddbe 100644 --- a/pkg/tiller/release_modules.go +++ b/pkg/tiller/release_modules.go @@ -18,7 +18,6 @@ package tiller import ( "bytes" - "errors" "fmt" "log" "strings" @@ -174,7 +173,11 @@ func DeleteRelease(rel *release.Release, vs chartutil.VersionSet, kubeClient env log.Printf("uninstall: Failed deletion of %q: %s", rel.Name, err) if err == kube.ErrNoObjectsVisited { // Rewrite the message from "no objects visited" - err = errors.New("object not found, skipping delete") + obj := "" + if file.Head != nil && file.Head.Metadata != nil { + obj = "[" + file.Head.Kind + "] " + file.Head.Metadata.Name + } + err = fmt.Errorf("release %q: object %q not found, skipping delete", rel.Name, obj) } errs = append(errs, err) } diff --git a/pkg/tiller/release_uninstall_test.go b/pkg/tiller/release_uninstall_test.go index d33e9c2a6..cb59b6bf5 100644 --- a/pkg/tiller/release_uninstall_test.go +++ b/pkg/tiller/release_uninstall_test.go @@ -197,3 +197,31 @@ func TestUninstallReleaseCustomDescription(t *testing.T) { t.Errorf("Expected description to be %q, got %q", customDescription, res.Release.Info.Description) } } + +func TestUninstallReleaseObjectNotFoundError(t *testing.T) { + c := helm.NewContext() + rs := rsFixture() + rel := releaseStub() + manifest := `kind: ConfigMap +metadata: + name: configmap-foo +data: + name: value +` + + rel.Manifest = manifest + rs.env.Releases.Create(rel) + rs.env.KubeClient = newDeleteFailingKubeClient() + + req := &services.UninstallReleaseRequest{ + Name: "angry-panda", + } + + _, err := rs.UninstallRelease(c, req) + if err == nil { + t.Fatalf("Expected failure to delete") + } + if !strings.Contains(err.Error(), "configmap-foo") { + t.Errorf("Expected delete error message to contain object name, got:" + err.Error()) + } +}