mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-18 16:07:10 +00:00
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
|
|
package alertmanagernotify
|
||
|
|
|
||
|
|
import (
|
||
|
|
"log/slog"
|
||
|
|
|
||
|
|
"github.com/SigNoz/signoz/pkg/alertmanager/alertmanagernotify/msteamsv2"
|
||
|
|
"github.com/SigNoz/signoz/pkg/types/alertmanagertypes"
|
||
|
|
"github.com/prometheus/alertmanager/config/receiver"
|
||
|
|
"github.com/prometheus/alertmanager/notify"
|
||
|
|
"github.com/prometheus/alertmanager/template"
|
||
|
|
"github.com/prometheus/alertmanager/types"
|
||
|
|
)
|
||
|
|
|
||
|
|
func NewReceiverIntegrations(nc alertmanagertypes.Receiver, tmpl *template.Template, logger *slog.Logger) ([]notify.Integration, error) {
|
||
|
|
upstreamIntegrations, err := receiver.BuildReceiverIntegrations(nc, tmpl, logger)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
var (
|
||
|
|
errs types.MultiError
|
||
|
|
integrations []notify.Integration
|
||
|
|
add = func(name string, i int, rs notify.ResolvedSender, f func(l *slog.Logger) (notify.Notifier, error)) {
|
||
|
|
n, err := f(logger.With("integration", name))
|
||
|
|
if err != nil {
|
||
|
|
errs.Add(err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
integrations = append(integrations, notify.NewIntegration(n, rs, name, i, nc.Name))
|
||
|
|
}
|
||
|
|
)
|
||
|
|
|
||
|
|
for _, integration := range upstreamIntegrations {
|
||
|
|
// skip upstream msteamsv2 integration
|
||
|
|
if integration.Name() != "msteamsv2" {
|
||
|
|
integrations = append(integrations, integration)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
for i, c := range nc.MSTeamsV2Configs {
|
||
|
|
add("msteamsv2", i, c, func(l *slog.Logger) (notify.Notifier, error) {
|
||
|
|
return msteamsv2.New(c, tmpl, `{{ template "msteamsv2.default.titleLink" . }}`, l)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
if errs.Len() > 0 {
|
||
|
|
return nil, &errs
|
||
|
|
}
|
||
|
|
|
||
|
|
return integrations, nil
|
||
|
|
}
|