diff --git a/pkg/tiller/release_modules.go b/pkg/tiller/release_modules.go index 876e1ba37..82260e8d3 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" @@ -173,8 +172,9 @@ func DeleteRelease(rel *release.Release, vs chartutil.VersionSet, kubeClient env if err := kubeClient.Delete(rel.Namespace, b); err != nil { 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") + // Rewrite the message from "no objects visited" + log.Printf("object = %q not found, skipping delete.", rel.Name) + continue } errs = append(errs, err) } diff --git a/pkg/tiller/release_uninstall.go b/pkg/tiller/release_uninstall.go index 423b6e7ef..d38793962 100644 --- a/pkg/tiller/release_uninstall.go +++ b/pkg/tiller/release_uninstall.go @@ -96,9 +96,24 @@ func (s *ReleaseServer) UninstallRelease(c ctx.Context, req *services.UninstallR } } + // if some resources delete failed, set status to UNKNOWN and return. + if len(es) > 0 { + rel.Info.Status.Code = release.Status_UNKNOWN + rel.Info.Description = "Deletion some resources failed" + if err := s.env.Releases.Update(rel); err != nil { + s.Log("uninstall: Failed to store updated release: %s", err) + } + return res, fmt.Errorf("Deletion failed! Because of %d error(s): %s", len(es), strings.Join(es, "; ")) + } + rel.Info.Status.Code = release.Status_DELETED rel.Info.Description = "Deletion complete" + if err := s.env.Releases.Update(rel); err != nil { + s.Log("uninstall: Failed to store updated release: %s", err) + return res, err + } + if req.Purge { s.Log("purge requested for %s", req.Name) err := s.purgeReleases(rels...) @@ -108,13 +123,6 @@ func (s *ReleaseServer) UninstallRelease(c ctx.Context, req *services.UninstallR return res, err } - if err := s.env.Releases.Update(rel); err != nil { - s.Log("uninstall: Failed to store updated release: %s", err) - } - - if len(es) > 0 { - return res, fmt.Errorf("deletion completed with %d error(s): %s", len(es), strings.Join(es, "; ")) - } return res, nil }