diff --git a/engine/graph/actions.go b/engine/graph/actions.go index f764392d..a9e17d23 100644 --- a/engine/graph/actions.go +++ b/engine/graph/actions.go @@ -24,6 +24,7 @@ import ( "time" "github.com/purpleidea/mgmt/engine" + engineUtil "github.com/purpleidea/mgmt/engine/util" "github.com/purpleidea/mgmt/pgraph" "github.com/purpleidea/mgmt/util/errwrap" @@ -155,7 +156,7 @@ func (obj *Engine) Process(vertex pgraph.Vertex) error { obj.Logf("%s: CheckApply(%t)", res, !noop) // if this fails, don't UpdateTimestamp() checkOK, err = res.CheckApply(!noop) - obj.Logf("%s: CheckApply(%t): Return(%t, %+v)", res, !noop, checkOK, err) + obj.Logf("%s: CheckApply(%t): Return(%t, %s)", res, !noop, checkOK, engineUtil.CleanError(err)) } if checkOK && err != nil { // should never return this way @@ -325,7 +326,7 @@ func (obj *Engine) Worker(vertex pgraph.Vertex) error { obj.state[vertex].cuid.StartTimer() obj.Logf("Watch(%s)", vertex) err = res.Watch(obj.state[vertex].doneCtx) // run the watch normally - obj.Logf("Watch(%s): Exited(%+v)", vertex, err) + obj.Logf("Watch(%s): Exited(%s)", vertex, engineUtil.CleanError(err)) obj.state[vertex].cuid.StopTimer() // clean up nicely } if err == nil { // || err == engine.ErrClosed @@ -534,7 +535,7 @@ Loop: } err = obj.Process(vertex) if obj.Debug { - obj.Logf("Process(%s): Return(%+v)", vertex, err) + obj.Logf("Process(%s): Return(%s)", vertex, engineUtil.CleanError(err)) } if err == nil { break RetryLoop diff --git a/engine/graph/engine.go b/engine/graph/engine.go index 291bdcb0..a84c47f2 100644 --- a/engine/graph/engine.go +++ b/engine/graph/engine.go @@ -183,7 +183,7 @@ func (obj *Engine) Commit() error { } err := engine.Validate(res) if obj.Debug { - obj.Logf("Validate(%s): Return(%+v)", res, err) + obj.Logf("Validate(%s): Return(%s)", res, engineUtil.CleanError(err)) } if err != nil { return errwrap.Wrapf(err, "the Res did not Validate") @@ -239,7 +239,7 @@ func (obj *Engine) Commit() error { obj.Logf("Worker(%s)", v) // contains the Watch and CheckApply loops err := obj.Worker(v) - obj.Logf("Worker(%s): Exited(%+v)", v, err) + obj.Logf("Worker(%s): Exited(%s)", v, engineUtil.CleanError(err)) obj.state[v].workerErr = err // store the error // If the Rewatch metaparam is true, then this will get // restarted if we do a graph cmp swap. This is why the diff --git a/engine/graph/state.go b/engine/graph/state.go index 9f682213..1b9321a2 100644 --- a/engine/graph/state.go +++ b/engine/graph/state.go @@ -25,6 +25,7 @@ import ( "github.com/purpleidea/mgmt/converger" "github.com/purpleidea/mgmt/engine" + engineUtil "github.com/purpleidea/mgmt/engine/util" "github.com/purpleidea/mgmt/pgraph" "github.com/purpleidea/mgmt/util/errwrap" ) @@ -253,7 +254,7 @@ func (obj *State) Init() error { err := res.Init(obj.init) if obj.Debug { - obj.Logf("Init(%s): Return(%+v)", res, err) + obj.Logf("Init(%s): Return(%s)", res, engineUtil.CleanError(err)) } if err != nil { return errwrap.Wrapf(err, "could not Init() resource") @@ -295,7 +296,7 @@ func (obj *State) Cleanup() error { reterr := res.Cleanup() if obj.Debug { - obj.Logf("Close(%s): Return(%+v)", res, reterr) + obj.Logf("Close(%s): Return(%s)", res, engineUtil.CleanError(reterr)) } reterr = errwrap.Append(reterr, reverr) diff --git a/engine/util/util.go b/engine/util/util.go index c6c57fbd..b8f9a76e 100644 --- a/engine/util/util.go +++ b/engine/util/util.go @@ -400,3 +400,12 @@ func AutoEdgeCombiner(ae ...engine.AutoEdge) (engine.AutoEdge, error) { ae: ae, }, nil } + +// CleanError takes the engine errors and prints them on a single line. +// TODO: maybe we can improve this here, it's a bit ugly. +func CleanError(err error) string { + if err == nil { + return fmt.Sprintf("%v", err) + } + return strings.ReplaceAll(err.Error(), "\n", " ") +}