From 6a8fdfb960c30fa18ff8a18f320dcab01583a487 Mon Sep 17 00:00:00 2001 From: Sebastien Plisson Date: Thu, 10 May 2018 16:00:35 -0700 Subject: [PATCH] Show release content when timeout occur for install and rollback. For rollback show it only when debug flag is set. --- cmd/helm/install.go | 40 +++++++++++++++++++++++++--------------- cmd/helm/rollback.go | 20 +++++++++++++++++++- 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 867c645bb..75b0d9073 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -254,7 +254,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), @@ -264,15 +264,25 @@ func (i *installCmd) run() error { helm.InstallDisableHooks(i.disableHooks), helm.InstallTimeout(i.timeout), helm.InstallWait(i.wait)) - if err != nil { - return prettyError(err) + + // If there is an error while waiting, make a call without waiting to get 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 { + printRelease(i.out, res.Release) + } + } else { + rel := resp.GetRelease() + if rel == nil { + return nil + } + printRelease(i.out, 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 { @@ -280,7 +290,7 @@ func (i *installCmd) run() error { } // Print the status like status command does - status, err := i.client.ReleaseStatus(rel.Name) + status, err := i.client.ReleaseStatus(i.name) if err != nil { return prettyError(err) } @@ -499,12 +509,12 @@ func readFile(filePath string) ([]byte, error) { if err != nil { return ioutil.ReadFile(filePath) - } else { - getter, err := getterConstructor(filePath, "", "", "") - if err != nil { - return []byte{}, err - } - data, err := getter.Get(filePath) - return data.Bytes(), err } + + getter, err := getterConstructor(filePath, "", "", "") + if err != nil { + return []byte{}, err + } + data, err := getter.Get(filePath) + return data.Bytes(), err } diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go index c55707f7c..36886e20e 100644 --- a/cmd/helm/rollback.go +++ b/cmd/helm/rollback.go @@ -88,7 +88,7 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command { } func (r *rollbackCmd) run() error { - _, err := r.client.RollbackRelease( + resp, err := r.client.RollbackRelease( r.name, helm.RollbackDryRun(r.dryRun), helm.RollbackRecreate(r.recreate), @@ -97,6 +97,24 @@ func (r *rollbackCmd) run() error { helm.RollbackVersion(r.revision), helm.RollbackTimeout(r.timeout), helm.RollbackWait(r.wait)) + + 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) }