| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package notifier
- import "github.com/porter-dev/porter/api/types"
- type IncidentNotifier interface {
- NotifyNew(incident *types.Incident, url string) error
- NotifyResolved(incident *types.Incident, url string) error
- }
- type MultiIncidentNotifier struct {
- notifConf *types.NotificationConfig
- notifiers []IncidentNotifier
- }
- func NewMultiIncidentNotifier(notifConf *types.NotificationConfig, notifiers ...IncidentNotifier) IncidentNotifier {
- return &MultiIncidentNotifier{notifConf, notifiers}
- }
- func (m *MultiIncidentNotifier) NotifyNew(incident *types.Incident, url string) error {
- // if notification config exists and notifs are disabled for this release, or failure notifications
- // are disabled, do not alert
- if m.notifConf != nil && (!m.notifConf.Enabled || !m.notifConf.Failure) {
- return nil
- }
- for _, n := range m.notifiers {
- if err := n.NotifyNew(incident, url); err != nil {
- return err
- }
- }
- return nil
- }
- func (m *MultiIncidentNotifier) NotifyResolved(incident *types.Incident, url string) error {
- // if notification config exists and notifs are disabled for this release, or failure notifications
- // are disabled, do not alert
- if m.notifConf != nil && (!m.notifConf.Enabled || !m.notifConf.Failure) {
- return nil
- }
- for _, n := range m.notifiers {
- if err := n.NotifyResolved(incident, url); err != nil {
- return err
- }
- }
- return nil
- }
|