From 2bb34045686b16611472aaa829eb9ea4e3445277 Mon Sep 17 00:00:00 2001 From: jgesenhu Date: Tue, 12 Nov 2019 06:38:07 +0100 Subject: [PATCH] fix for #6378 and #5595 only run replace after patch failed Signed-off-by: Johannes Gesenhues Signed-off-by: jgesenhu --- pkg/kube/client.go | 24 +++++++++++------------- pkg/storage/storage.go | 5 ++--- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/pkg/kube/client.go b/pkg/kube/client.go index ab1f600ff..349711639 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -389,22 +389,20 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, } return nil } - - // if --force is applied, attempt to replace the existing resource with the new object. - if force { - obj, err = helper.Replace(target.Namespace, target.Name, true, target.Object) - if err != nil { - return errors.Wrap(err, "failed to replace object") - } - log.Printf("Replaced %q with kind %s for kind %s\n", target.Name, currentObj.GetObjectKind().GroupVersionKind().Kind, kind) - } else { - // send patch to server - obj, err = helper.Patch(target.Namespace, target.Name, patchType, patch, nil) - if err != nil { + // send patch to server + obj, err = helper.Patch(target.Namespace, target.Name, patchType, patch, nil) + if err != nil { + // if --force is applied, attempt to replace the existing resource, that is not patchable with the new object. + if force { + obj, err = helper.Replace(target.Namespace, target.Name, true, target.Object) + if err != nil { + return errors.Wrap(err, "failed to replace object") + } + log.Printf("Replaced %q with kind %s for kind %s\n", target.Name, currentObj.GetObjectKind().GroupVersionKind().Kind, kind) + } else { return errors.Wrapf(err, "cannot patch %q with kind %s", target.Name, kind) } } - target.Refresh(obj, true) return nil } diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 58a7eb06f..82d99b3c7 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -131,9 +131,8 @@ func (s *Storage) DeployedAll(name string) ([]*rspb.Release, error) { s.Log("getting deployed releases from %q history", name) ls, err := s.Driver.Query(map[string]string{ - "name": name, - "owner": "helm", - "status": "deployed", + "name": name, + "owner": "helm", }) if err == nil { return ls, nil