From 0de1fd927722707fb8f53b98d2244cba5694fded Mon Sep 17 00:00:00 2001 From: Yukine Date: Thu, 4 Feb 2021 02:45:11 +0100 Subject: [PATCH] feat(errorHandling): allow error to be fatal --- cmd/DigitalOceanSnapshotter/main.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/cmd/DigitalOceanSnapshotter/main.go b/cmd/DigitalOceanSnapshotter/main.go index a0bb7b4..556b2d1 100644 --- a/cmd/DigitalOceanSnapshotter/main.go +++ b/cmd/DigitalOceanSnapshotter/main.go @@ -88,7 +88,7 @@ func main() { for _, volumeID := range volumeIDs { volume, _, err := ctx.DoContext.GetVolume(volumeID) if err != nil { - errorHandling(err, ctx) + errorHandling(ctx, err, true) return } @@ -97,7 +97,7 @@ func main() { Name: fmt.Sprintf("%s-%s", volume.Name, time.Now().Format("2006-01-02 15:04:05")), }) if err != nil { - errorHandling(err, ctx) + errorHandling(ctx, err, true) return } @@ -109,12 +109,12 @@ func main() { sort.SliceStable(snapshots, func(firstIndex, secondIndex int) bool { firstTime, err := time.Parse(snapshots[firstIndex].Created, createdAtFormat) if err != nil { - errorHandling(err, ctx) + errorHandling(ctx, err, true) } secondTime, err := time.Parse(snapshots[firstIndex].Created, createdAtFormat) if err != nil { - errorHandling(err, ctx) + errorHandling(ctx, err, true) } return firstTime.Before(secondTime) @@ -126,7 +126,7 @@ func main() { _, err := ctx.DoContext.DeleteSnapshot(snapshots[i].ID) if err != nil { - errorHandling(err, ctx) + errorHandling(ctx, err, false) return } } @@ -134,13 +134,19 @@ func main() { } } -func errorHandling(err error, ctx snapshotterContext) { - log.Error(err.Error()) +func errorHandling(ctx snapshotterContext, err error, fatal bool) { + errString := err.Error() if ctx.SlackContext != nil { - err = ctx.SlackContext.SendEvent(err.Error(), log.ErrorLevel) + err = ctx.SlackContext.SendEvent(errString, log.ErrorLevel) if err != nil { - log.Error(err.Error()) + log.Error(fmt.Sprintf("Error while trying to send error to Slack %s", err.Error())) } } + + if fatal { + log.Fatal(errString) + } + + log.Error(errString) }