buildReceiverIntegrations builds a list of integration notifiers off of a receiver config. Taken from https://github.com/prometheus/alertmanager/blob/d7b4f0c7322e7151d6e3b1e31cbc15361e295d8d/cmd/alertmanager/main.go#L135-L193.
(nc config.Receiver, tmpl *template.Template, firewallDialer *util_net.FirewallDialer, logger log.Logger, wrapper func(string, notify.Notifier) notify.Notifier)
| 522 | // receiver config. |
| 523 | // Taken from https://github.com/prometheus/alertmanager/blob/d7b4f0c7322e7151d6e3b1e31cbc15361e295d8d/cmd/alertmanager/main.go#L135-L193. |
| 524 | func buildReceiverIntegrations(nc config.Receiver, tmpl *template.Template, firewallDialer *util_net.FirewallDialer, logger log.Logger, wrapper func(string, notify.Notifier) notify.Notifier) ([]notify.Integration, error) { |
| 525 | var ( |
| 526 | errs types.MultiError |
| 527 | integrations []notify.Integration |
| 528 | add = func(name string, i int, rs notify.ResolvedSender, f func(l log.Logger) (notify.Notifier, error)) { |
| 529 | n, err := f(log.With(logger, "integration", name)) |
| 530 | if err != nil { |
| 531 | errs.Add(err) |
| 532 | return |
| 533 | } |
| 534 | n = wrapper(name, n) |
| 535 | integrations = append(integrations, notify.NewIntegration(n, rs, name, i, nc.Name)) |
| 536 | } |
| 537 | ) |
| 538 | |
| 539 | // Inject the firewall to any receiver integration supporting it. |
| 540 | httpOps := []commoncfg.HTTPClientOption{ |
| 541 | commoncfg.WithDialContextFunc(firewallDialer.DialContext), |
| 542 | } |
| 543 | |
| 544 | for i, c := range nc.WebhookConfigs { |
| 545 | add("webhook", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 546 | return webhook.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
| 547 | }) |
| 548 | } |
| 549 | for i, c := range nc.EmailConfigs { |
| 550 | add("email", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 551 | return email.New(c, tmpl, util_log.GoKitLogToSlog(l)), nil |
| 552 | }) |
| 553 | } |
| 554 | for i, c := range nc.PagerdutyConfigs { |
| 555 | add("pagerduty", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 556 | return pagerduty.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
| 557 | }) |
| 558 | } |
| 559 | for i, c := range nc.OpsGenieConfigs { |
| 560 | add("opsgenie", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 561 | return opsgenie.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
| 562 | }) |
| 563 | } |
| 564 | for i, c := range nc.WechatConfigs { |
| 565 | add("wechat", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 566 | return wechat.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
| 567 | }) |
| 568 | } |
| 569 | for i, c := range nc.SlackConfigs { |
| 570 | add("slack", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 571 | return slack.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
| 572 | }) |
| 573 | } |
| 574 | for i, c := range nc.VictorOpsConfigs { |
| 575 | add("victorops", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 576 | return victorops.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
| 577 | }) |
| 578 | } |
| 579 | for i, c := range nc.PushoverConfigs { |
| 580 | add("pushover", i, c, func(l log.Logger) (notify.Notifier, error) { |
| 581 | return pushover.New(c, tmpl, util_log.GoKitLogToSlog(l), httpOps...) |
no test coverage detected