diff --git a/cmd/DigitalOceanSnapshotter/main.go b/cmd/DigitalOceanSnapshotter/main.go index bb758fe..611debe 100644 --- a/cmd/DigitalOceanSnapshotter/main.go +++ b/cmd/DigitalOceanSnapshotter/main.go @@ -11,14 +11,12 @@ import ( "github.com/digitalocean/godo" log "github.com/sirupsen/logrus" - "github.com/slack-go/slack" ) const createdAtFormat = "2006-01-02T15:04:05Z" type snapshotterContext struct { - DoContext *DigitalOceanContext - SlackContext *SlackContext + DoContext *DigitalOceanContext } func initLogging() { @@ -36,19 +34,19 @@ func main() { DOToken, present := os.LookupEnv("DO_TOKEN") - if present == false { + if !present { log.Fatal("Missing enviroment variable \"DO_TOKEN\"") } volumesEnv, present := os.LookupEnv("DO_VOLUMES") - if present == false { + if !present { log.Fatal("Missing enviroment variable \"DO_VOLUMES\"") } snapshotCountEnv, present := os.LookupEnv("DO_SNAPSHOT_COUNT") - if present == false { + if !present { log.Fatal("Missing enviroment variable \"DO_SNAPSHOT_COUNT\"") } @@ -58,29 +56,11 @@ func main() { log.Fatal("Enviroment variable \"DO_SNAPSHOT_COUNT\" is not an integer") } - slackEnv := os.Getenv("SLACK_TOKEN") - - var slackContext *SlackContext = nil - - if slackEnv != "" { - channelID, present := os.LookupEnv("SLACK_CHANNEL_ID") - - if present == false { - log.Fatal("Missing enviroment variable \"SLACK_CHANNEL_ID\"") - } - - slackContext = &SlackContext{ - client: slack.New(slackEnv), - channelID: channelID, - } - } - ctx := snapshotterContext{ DoContext: &DigitalOceanContext{ client: godo.NewFromToken(DOToken), ctx: context.TODO(), }, - SlackContext: slackContext, } volumeIDs := strings.Split(volumesEnv, ",") @@ -95,6 +75,7 @@ func main() { VolumeID: volume.ID, Name: time.Now().Format("2006-01-02T15:04:05"), }) + if err != nil { handleError(ctx, err, true) } @@ -103,6 +84,10 @@ func main() { snapshots, _, err := ctx.DoContext.ListSnapshots(volume.ID, nil) + if err != nil { + handleError(ctx, err, true) + } + snapshotLength := len(snapshots) if snapshotLength > snapshotCount { @@ -135,24 +120,11 @@ func main() { } } - if ctx.SlackContext != nil { - err = ctx.SlackContext.SendEvent(fmt.Sprintf("Successfully created Backup for %d Volumes", len(volumeIDs)), log.InfoLevel) - if err != nil { - handleError(ctx, err, false) - } - } } func handleError(ctx snapshotterContext, err error, fatal bool) { errString := err.Error() - if ctx.SlackContext != nil { - err = ctx.SlackContext.SendEvent(errString, log.ErrorLevel) - if err != nil { - log.Error(fmt.Sprintf("Error while trying to send error to Slack: %s", err.Error())) - } - } - if fatal { log.Fatal(errString) } diff --git a/cmd/DigitalOceanSnapshotter/outputSource.go b/cmd/DigitalOceanSnapshotter/outputSource.go deleted file mode 100644 index 44396d0..0000000 --- a/cmd/DigitalOceanSnapshotter/outputSource.go +++ /dev/null @@ -1,30 +0,0 @@ -package main - -import ( - log "github.com/sirupsen/logrus" - "github.com/slack-go/slack" -) - -// OutputSource is an abstraction for outputting specific events to other services (e.g. Discord, Slack or Whatsapp) -type OutputSource interface { - SendEvent(string, log.Level) error -} - -// SendEvent forwards event to Slack -func (s SlackContext) SendEvent(content string, level log.Level) error { - - color := "#00FF00" - - if level == log.ErrorLevel { - color = "#FF0000" - } - - return s.SendMessageWithEmbed(slack.Attachment{ - Color: color, - AuthorName: "DigitalOceanSnapshotter", - AuthorIcon: "https://cdn.top.gg/icons/DO_Logo_icon_blue.png", - Text: content, - Title: "DigitalOceanSnapshotter", - TitleLink: "https://github.com/top-gg/DigitalOceanSnapshotter", - }) -} diff --git a/cmd/DigitalOceanSnapshotter/slackContext.go b/cmd/DigitalOceanSnapshotter/slackContext.go deleted file mode 100644 index 4364c28..0000000 --- a/cmd/DigitalOceanSnapshotter/slackContext.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import "github.com/slack-go/slack" - -// SlackContext is an helper struct to acess slack actions -type SlackContext struct { - client *slack.Client - channelID string -} - -// SendMessageWithContent sends a message with content to the pre defined channel -func (s SlackContext) SendMessageWithContent(content string) error { - _, _, _, err := s.client.SendMessage(s.channelID, slack.MsgOptionText(content, true)) - return err -} - -// SendMessageWithEmbed sends a message with a Rich Embed to the pre defined channel -func (s SlackContext) SendMessageWithEmbed(attachment slack.Attachment) error { - _, _, _, err := s.client.SendMessage(s.channelID, slack.MsgOptionAttachments(attachment)) - return err -} diff --git a/go.mod b/go.mod index 7a3c7a1..4ccce54 100644 --- a/go.mod +++ b/go.mod @@ -5,5 +5,4 @@ go 1.15 require ( github.com/digitalocean/godo v1.57.0 github.com/sirupsen/logrus v1.7.0 - github.com/slack-go/slack v0.8.0 ) diff --git a/go.sum b/go.sum index e694b0d..1e75e2e 100644 --- a/go.sum +++ b/go.sum @@ -1,28 +1,19 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/digitalocean/godo v1.57.0 h1:uCpe0sRIZ/sJWxWDsJyBPBjUfSvxop+WHkHiSf+tjjM= github.com/digitalocean/godo v1.57.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= -github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= -github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/slack-go/slack v0.8.0 h1:ANyLY5KHLV+MxLJDQum2IuHTLwbCbDtaWY405X1EU9U= -github.com/slack-go/slack v0.8.0/go.mod h1:FGqNzJBmxIsZURAxh2a8D21AnOVvvXZvGligs4npPUM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=