diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 05321f1f7..91a2c14c1 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -291,7 +291,7 @@ func (i *installCmd) run() error { return fmt.Errorf("cannot load requirements: %v", err) } - res, err := i.client.InstallReleaseFromChart( + resp, err := i.client.InstallReleaseFromChart( chartRequested, i.namespace, helm.ValueOverrides(rawVals), @@ -303,15 +303,25 @@ func (i *installCmd) run() error { helm.InstallTimeout(i.timeout), helm.InstallWait(i.wait), helm.InstallDescription(i.description)) - if err != nil { - return prettyError(err) + + // If there is an error while waiting, display the release content + if (resp == nil || resp.Release == nil) && i.wait { + if res, e := i.client.ReleaseContent(i.name); e != nil { + fmt.Fprintf(i.out, "Error reading release content: %v", prettyError(e)) + } else { + i.printRelease(res.Release) + } + } else { + rel := resp.GetRelease() + if rel == nil { + return nil + } + i.printRelease(rel) } - rel := res.GetRelease() - if rel == nil { - return nil + if err != nil { + return prettyError(err) } - i.printRelease(rel) // If this is a dry run, we can't display status. if i.dryRun { diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go index 0c46fa818..349d71ba3 100644 --- a/cmd/helm/rollback.go +++ b/cmd/helm/rollback.go @@ -104,6 +104,24 @@ func (r *rollbackCmd) run() error { helm.RollbackTimeout(r.timeout), helm.RollbackWait(r.wait), helm.RollbackDescription(r.description)) + + if settings.Debug { + // If there is an error while waiting, make a call without waiting to get the release content + if (resp == nil || resp.Release == nil) && r.wait { + if res, e := r.client.ReleaseContent(r.name); e != nil { + fmt.Fprintf(r.out, "Error reading release content: %v", prettyError(e)) + } else { + printRelease(r.out, res.Release) + } + } else { + rel := resp.GetRelease() + if rel == nil { + return nil + } + printRelease(r.out, rel) + } + } + if err != nil { return prettyError(err) } diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index d05987b8a..a539afaf1 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -266,12 +266,22 @@ func (u *upgradeCmd) run() error { helm.ReuseValues(u.reuseValues), helm.UpgradeWait(u.wait), helm.UpgradeDescription(u.description)) - if err != nil { - return fmt.Errorf("UPGRADE FAILED: %v", prettyError(err)) - } if settings.Debug { - printRelease(u.out, resp.Release) + // If there is an error while waiting, make a call without waiting to get the updated release content + if (resp == nil || resp.Release == nil) && u.wait { + if res, e := u.client.ReleaseContent(u.release); e != nil { + fmt.Fprintf(u.out, "Error reading release content: %v", prettyError(e)) + } else { + printRelease(u.out, res.Release) + } + } else { + printRelease(u.out, resp.Release) + } + } + + if err != nil { + return fmt.Errorf("UPGRADE FAILED: %v", prettyError(err)) } fmt.Fprintf(u.out, "Release %q has been upgraded. Happy Helming!\n", u.release)