Run executes 'helm rollback' against the given release.
(name string)
| 72 | |
| 73 | // Run executes 'helm rollback' against the given release. |
| 74 | func (r *Rollback) Run(name string) error { |
| 75 | if err := r.cfg.KubeClient.IsReachable(); err != nil { |
| 76 | return err |
| 77 | } |
| 78 | |
| 79 | r.cfg.Releases.MaxHistory = r.MaxHistory |
| 80 | |
| 81 | r.cfg.Logger().Debug("preparing rollback", "name", name) |
| 82 | currentRelease, targetRelease, serverSideApply, err := r.prepareRollback(name) |
| 83 | if err != nil { |
| 84 | return err |
| 85 | } |
| 86 | |
| 87 | if !isDryRun(r.DryRunStrategy) { |
| 88 | r.cfg.Logger().Debug("creating rolled back release", "name", name) |
| 89 | if err := r.cfg.Releases.Create(targetRelease); err != nil { |
| 90 | return err |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | r.cfg.Logger().Debug("performing rollback", "name", name) |
| 95 | if _, err := r.performRollback(currentRelease, targetRelease, serverSideApply); err != nil { |
| 96 | return err |
| 97 | } |
| 98 | |
| 99 | if !isDryRun(r.DryRunStrategy) { |
| 100 | r.cfg.Logger().Debug("updating status for rolled back release", "name", name) |
| 101 | if err := r.cfg.Releases.Update(targetRelease); err != nil { |
| 102 | return err |
| 103 | } |
| 104 | } |
| 105 | return nil |
| 106 | } |
| 107 | |
| 108 | // prepareRollback finds the previous release and prepares a new release object with |
| 109 | // the previous release's configuration |