notification: remove flags

This commit is contained in:
Fabian Reinartz 2015-06-15 13:03:17 +02:00
parent b105e26f4d
commit a0b3aaa551
2 changed files with 19 additions and 13 deletions

View file

@ -16,7 +16,6 @@ package notification
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"flag"
"io" "io"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
@ -42,10 +41,6 @@ const (
subsystem = "notifications" subsystem = "notifications"
) )
var (
deadline = flag.Duration("alertmanager.http-deadline", 10*time.Second, "Alert manager HTTP API timeout.")
)
// NotificationReq is a request for sending a notification to the alert manager // NotificationReq is a request for sending a notification to the alert manager
// for a single alert vector element. // for a single alert vector element.
type NotificationReq struct { type NotificationReq struct {
@ -93,13 +88,20 @@ type NotificationHandler struct {
stopped chan struct{} stopped chan struct{}
} }
// NewNotificationHandler constructs a new NotificationHandler. // NotificationHandlerOptions are the configurable parameters of a NotificationHandler.
func NewNotificationHandler(alertmanagerURL string, notificationQueueCapacity int) *NotificationHandler { type NotificationHandlerOptions struct {
return &NotificationHandler{ AlertmanagerURL string
alertmanagerURL: strings.TrimRight(alertmanagerURL, "/"), QueueCapacity int
pendingNotifications: make(chan NotificationReqs, notificationQueueCapacity), Deadline time.Duration
}
httpClient: httputil.NewDeadlineClient(*deadline), // NewNotificationHandler constructs a new NotificationHandler.
func NewNotificationHandler(o *NotificationHandlerOptions) *NotificationHandler {
return &NotificationHandler{
alertmanagerURL: strings.TrimRight(o.AlertmanagerURL, "/"),
pendingNotifications: make(chan NotificationReqs, o.QueueCapacity),
httpClient: httputil.NewDeadlineClient(o.Deadline),
notificationLatency: prometheus.NewSummary(prometheus.SummaryOpts{ notificationLatency: prometheus.NewSummary(prometheus.SummaryOpts{
Namespace: namespace, Namespace: namespace,
@ -132,7 +134,7 @@ func NewNotificationHandler(alertmanagerURL string, notificationQueueCapacity in
nil, nil, nil, nil,
), ),
prometheus.GaugeValue, prometheus.GaugeValue,
float64(notificationQueueCapacity), float64(o.QueueCapacity),
), ),
stopped: make(chan struct{}), stopped: make(chan struct{}),
} }

View file

@ -46,7 +46,11 @@ type testNotificationScenario struct {
} }
func (s *testNotificationScenario) test(i int, t *testing.T) { func (s *testNotificationScenario) test(i int, t *testing.T) {
h := NewNotificationHandler("alertmanager_url", 0) h := NewNotificationHandler(&NotificationHandlerOptions{
AlertmanagerURL: "alertmanager_url",
QueueCapacity: 0,
Deadline: 10 * time.Second,
})
defer h.Stop() defer h.Stop()
receivedPost := make(chan bool, 1) receivedPost := make(chan bool, 1)