github.com/kubeshop/testkube@v1.17.23/pkg/event/kind/slack/loader.go (about) 1 package slack 2 3 import ( 4 "encoding/json" 5 6 "go.uber.org/zap" 7 8 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 9 "github.com/kubeshop/testkube/pkg/event/kind/common" 10 "github.com/kubeshop/testkube/pkg/log" 11 "github.com/kubeshop/testkube/pkg/slack" 12 ) 13 14 var _ common.ListenerLoader = (*SlackLoader)(nil) 15 16 func NewSlackLoader(messageTemplate, configString, clusterName, dashboardURI string, 17 events []testkube.EventType, envs map[string]string) *SlackLoader { 18 var config []slack.NotificationsConfig 19 if err := json.Unmarshal([]byte(configString), &config); err != nil { 20 log.DefaultLogger.Errorw("error unmarshalling slack config", "error", err) 21 } 22 slackNotifier := slack.NewNotifier(messageTemplate, clusterName, dashboardURI, config, envs) 23 return &SlackLoader{ 24 Log: log.DefaultLogger, 25 events: events, 26 slackNotifier: slackNotifier, 27 } 28 } 29 30 // SlackLoader is a reconciler for slack events for now it returns single listener for slack 31 type SlackLoader struct { 32 Log *zap.SugaredLogger 33 events []testkube.EventType 34 slackNotifier *slack.Notifier 35 } 36 37 func (r *SlackLoader) Kind() string { 38 return "slack" 39 } 40 41 // Load returns single listener for slack (as we don't have any sophisticated config yet) 42 func (r *SlackLoader) Load() (listeners common.Listeners, err error) { 43 44 if r.slackNotifier.Ready { 45 return common.Listeners{NewSlackListener("slack", "", r.events, r.slackNotifier)}, nil 46 } 47 r.Log.Debugw("Slack notifier is not ready or not configured properly, omiting", "kind", r.Kind()) 48 return common.Listeners{}, nil 49 }