fix(helm): Display debug release info when upgrade failed because of timeout. Closes #3020

pull/4207/head^2
Sebastien Plisson 7 years ago
parent d5e25db559
commit bfb8dea4d6

@ -50,8 +50,8 @@ func runReleaseCases(t *testing.T, tests []releaseCase, rcmd releaseCmd) {
cmd := rcmd(c, &buf)
cmd.ParseFlags(tt.flags)
err := cmd.RunE(cmd, tt.args)
if (err != nil) != tt.err {
t.Errorf("expected error, got '%v'", err)
if (err == nil) && tt.err {
t.Errorf("expected error, got no error")
}
re := regexp.MustCompile(tt.expected)
if !re.Match(buf.Bytes()) {

@ -269,7 +269,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),
@ -281,27 +281,37 @@ 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, 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 {
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 {
// This is special casing to avoid breaking backward compatibility:
if res.Release.Info.Description != "Dry run complete" {
fmt.Fprintf(os.Stdout, "WARNING: %s\n", res.Release.Info.Description)
if resp.Release.Info.Description != "Dry run complete" {
fmt.Fprintf(os.Stdout, "WARNING: %s\n", resp.Release.Info.Description)
}
return nil
}
// 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)
}

@ -90,7 +90,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),
@ -100,6 +100,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)
}

@ -229,12 +229,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)

Loading…
Cancel
Save