From 4294a5de0604226e3434b19c850df3db95a8dacf Mon Sep 17 00:00:00 2001 From: Jarryd Tilbrook Date: Thu, 17 Oct 2019 07:27:12 +0800 Subject: [PATCH] feat: Enhance postsync event to include `.Error` (#882) * Refactor postsync event to include success flag * Change success boolean to error Fixes #826 --- pkg/event/bus.go | 8 +++++--- pkg/event/bus_test.go | 2 +- pkg/state/state.go | 16 ++++++++-------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/pkg/event/bus.go b/pkg/event/bus.go index 398d3d18..044325d5 100644 --- a/pkg/event/bus.go +++ b/pkg/event/bus.go @@ -20,7 +20,8 @@ type Hook struct { } type event struct { - Name string + Name string + Error error } type Bus struct { @@ -37,7 +38,7 @@ type Bus struct { Logger *zap.SugaredLogger } -func (bus *Bus) Trigger(evt string, context map[string]interface{}) (bool, error) { +func (bus *Bus) Trigger(evt string, evtErr error, context map[string]interface{}) (bool, error) { if bus.Runner == nil { bus.Runner = helmexec.ShellRunner{ Dir: bus.BasePath, @@ -68,7 +69,8 @@ func (bus *Bus) Trigger(evt string, context map[string]interface{}) (bool, error "Environment": bus.Env, "Namespace": bus.Namespace, "Event": event{ - Name: evt, + Name: evt, + Error: evtErr, }, } for k, v := range context { diff --git a/pkg/event/bus_test.go b/pkg/event/bus_test.go index 6dfaf2d0..9363f904 100644 --- a/pkg/event/bus_test.go +++ b/pkg/event/bus_test.go @@ -104,7 +104,7 @@ func TestTrigger(t *testing.T) { "Release": "myrel", "HelmfileCommand": "mycmd", } - ok, err := bus.Trigger(c.triggeredEvt, data) + ok, err := bus.Trigger(c.triggeredEvt, nil, data) if ok != c.expectedResult { t.Errorf("unexpected result for case \"%s\": expected=%v, actual=%v", c.name, c.expectedResult, ok) diff --git a/pkg/state/state.go b/pkg/state/state.go index 79e087d6..d8cbb620 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -467,7 +467,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme results <- syncResult{errors: []*ReleaseError{relErr}} } - if _, err := st.triggerPostsyncEvent(release, "sync"); err != nil { + if _, err := st.triggerPostsyncEvent(release, relErr, "sync"); err != nil { st.logger.Warnf("warn: %v\n", err) } @@ -1154,22 +1154,22 @@ func (st *HelmState) PrepareReleases(helm helmexec.Interface, helmfileCommand st } func (st *HelmState) triggerPrepareEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) { - return st.triggerReleaseEvent("prepare", r, helmfileCommand) + return st.triggerReleaseEvent("prepare", nil, r, helmfileCommand) } func (st *HelmState) triggerCleanupEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) { - return st.triggerReleaseEvent("cleanup", r, helmfileCommand) + return st.triggerReleaseEvent("cleanup", nil, r, helmfileCommand) } func (st *HelmState) triggerPresyncEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) { - return st.triggerReleaseEvent("presync", r, helmfileCommand) + return st.triggerReleaseEvent("presync", nil, r, helmfileCommand) } -func (st *HelmState) triggerPostsyncEvent(r *ReleaseSpec, helmfileCommand string) (bool, error) { - return st.triggerReleaseEvent("postsync", r, helmfileCommand) +func (st *HelmState) triggerPostsyncEvent(r *ReleaseSpec, evtErr error, helmfileCommand string) (bool, error) { + return st.triggerReleaseEvent("postsync", evtErr, r, helmfileCommand) } -func (st *HelmState) triggerReleaseEvent(evt string, r *ReleaseSpec, helmfileCmd string) (bool, error) { +func (st *HelmState) triggerReleaseEvent(evt string, evtErr error, r *ReleaseSpec, helmfileCmd string) (bool, error) { bus := &event.Bus{ Hooks: r.Hooks, StateFilePath: st.FilePath, @@ -1183,7 +1183,7 @@ func (st *HelmState) triggerReleaseEvent(evt string, r *ReleaseSpec, helmfileCmd "Release": r, "HelmfileCommand": helmfileCmd, } - return bus.Trigger(evt, data) + return bus.Trigger(evt, evtErr, data) } // ResolveDeps returns a copy of this helmfile state with the concrete chart version numbers filled in for remote chart dependencies