From d77c72f82e771659153746bf1d764889d54c90fb Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Sun, 22 Oct 2023 13:57:08 -0300 Subject: [PATCH] fix: cleanup hooks not receiving error signal Closes #1041 Signed-off-by: Felipe Santos --- pkg/app/app.go | 12 +++++++++--- pkg/state/state.go | 26 ++++++++++++++++++-------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/pkg/app/app.go b/pkg/app/app.go index eaab62b7..634e380a 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -1552,7 +1552,13 @@ Do you really want to apply? for id := range releasesWithNoChange { r := releasesWithNoChange[id] - if _, err := st.TriggerCleanupEvent(&r, "apply"); err != nil { + + var firstErr error = nil + if len(errs) > 0 { + firstErr = errs[0] + } + + if _, err := st.TriggerCleanupEvent(&r, firstErr, "apply"); err != nil { a.Logger.Warnf("warn: %v\n", err) } } @@ -1601,7 +1607,7 @@ func (a *App) delete(r *Run, purge bool, c DestroyConfigProvider) (bool, []error for id := range releasesWithNoChange { r := releasesWithNoChange[id] - if _, err := st.TriggerCleanupEvent(&r, "delete"); err != nil { + if _, err := st.TriggerCleanupEvent(&r, nil, "delete"); err != nil { a.Logger.Warnf("warn: %v\n", err) } } @@ -1847,7 +1853,7 @@ func (a *App) sync(r *Run, c SyncConfigProvider) (bool, []error) { for id := range releasesWithNoChange { r := releasesWithNoChange[id] - if _, err := st.TriggerCleanupEvent(&r, "sync"); err != nil { + if _, err := st.TriggerCleanupEvent(&r, nil, "sync"); err != nil { a.Logger.Warnf("warn: %v\n", err) } } diff --git a/pkg/state/state.go b/pkg/state/state.go index 0fbff129..11e19522 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -892,7 +892,7 @@ func (st *HelmState) DeleteReleasesForSync(affectedReleases *AffectedReleases, h st.logger.Warnf("warn: %v\n", err) } - if _, err := st.TriggerCleanupEvent(release, "sync"); err != nil { + if _, err := st.TriggerCleanupEvent(release, relErr, "sync"); err != nil { st.logger.Warnf("warn: %v\n", err) } @@ -1018,7 +1018,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme } } - if _, err := st.TriggerCleanupEvent(release, "sync"); err != nil { + if _, err := st.TriggerCleanupEvent(release, relErr, "sync"); err != nil { if relErr == nil { relErr = newReleaseFailedError(release, err) } else { @@ -1548,7 +1548,12 @@ func (st *HelmState) TemplateReleases(helm helmexec.Interface, outputDir string, } } - if _, err := st.TriggerCleanupEvent(release, "template"); err != nil { + var firstErr error = nil + if len(errs) > 0 { + firstErr = errs[0] + } + + if _, err := st.TriggerCleanupEvent(release, firstErr, "template"); err != nil { st.logger.Warnf("warn: %v\n", err) } } @@ -1649,7 +1654,7 @@ func (st *HelmState) WriteReleasesValues(helm helmexec.Interface, additionalValu return []error{fmt.Errorf("writing values file %s: %w", outputValuesFile, err)} } - if _, err := st.TriggerCleanupEvent(release, "write-values"); err != nil { + if _, err := st.TriggerCleanupEvent(release, nil, "write-values"); err != nil { st.logger.Warnf("warn: %v\n", err) } } @@ -1724,7 +1729,12 @@ func (st *HelmState) LintReleases(helm helmexec.Interface, additionalValues []st } } - if _, err := st.TriggerCleanupEvent(&release, "lint"); err != nil { + var firstErr error = nil + if len(errs) > 0 { + firstErr = errs[0] + } + + if _, err := st.TriggerCleanupEvent(&release, firstErr, "lint"); err != nil { st.logger.Warnf("warn: %v\n", err) } } @@ -2071,7 +2081,7 @@ func (st *HelmState) DiffReleases(helm helmexec.Interface, additionalValues []st } if triggerCleanupEvents { - if _, err := st.TriggerCleanupEvent(prep.release, "diff"); err != nil { + if _, err := st.TriggerCleanupEvent(prep.release, nil, "diff"); err != nil { st.logger.Warnf("warn: %v\n", err) } } @@ -2425,8 +2435,8 @@ func (st *HelmState) triggerPrepareEvent(r *ReleaseSpec, helmfileCommand string) return st.triggerReleaseEvent("prepare", nil, r, helmfileCommand) } -func (st *HelmState) TriggerCleanupEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) { - return st.triggerReleaseEvent("cleanup", nil, r, helmfileCommand) +func (st *HelmState) TriggerCleanupEvent(r *ReleaseSpec, evtErr error, helmfileCommand string) (bool, error) { + return st.triggerReleaseEvent("cleanup", evtErr, r, helmfileCommand) } func (st *HelmState) triggerPresyncEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) {