diff --git a/CHANGELOG.md b/CHANGELOG.md index bba3a7c612..9e0a0c908f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## Unreleased - Pass provider options to helm invokes in Python, Go and TS (https://github.com/pulumi/pulumi-kubernetes/pull/1919) +- Fix panic in helm release update() (https://github.com/pulumi/pulumi-kubernetes/pull/1948) ## 3.17.0 (March 14, 2022) - Make ConfigMaps mutable unless marked explicitly (enabled with provider config option) (https://github.com/pulumi/pulumi-kubernetes/pull/1926) diff --git a/provider/pkg/provider/helm_release.go b/provider/pkg/provider/helm_release.go index a8c487d122..6bb7938a33 100644 --- a/provider/pkg/provider/helm_release.go +++ b/provider/pkg/provider/helm_release.go @@ -26,9 +26,6 @@ import ( "strings" "time" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" - jsonpatch "github.com/evanphx/json-patch" "github.com/golang/protobuf/ptypes/empty" pbempty "github.com/golang/protobuf/ptypes/empty" @@ -52,7 +49,10 @@ import ( "helm.sh/helm/v3/pkg/downloader" "helm.sh/helm/v3/pkg/getter" "helm.sh/helm/v3/pkg/postrender" + "helm.sh/helm/v3/pkg/registry" "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v3/pkg/storage/driver" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd/api" @@ -580,11 +580,14 @@ func (r *helmReleaseProvider) helmUpdate(newRelease, oldRelease *Release) error } rel, err := client.Run(newRelease.Name, chart, values) - if err != nil && strings.Contains(err.Error(), "has no deployed releases") { + if err != nil && rel == nil { + return err + } + if err != nil && errors.Is(err, driver.ErrNoDeployedReleases) { logger.V(9).Infof("No existing release found.") return err - } else if err != nil { - // Don't expect this to fail + } + if err != nil { if err := setReleaseAttributes(newRelease, rel, false); err != nil { return err }