| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package alerting
- import (
- "github.com/grafana/grafana/pkg/bus"
- "github.com/grafana/grafana/pkg/components/simplejson"
- "github.com/grafana/grafana/pkg/log"
- "github.com/grafana/grafana/pkg/models"
- )
- type NotificationTestCommand struct {
- Severity string
- Name string
- Type string
- Settings *simplejson.Json
- }
- func init() {
- bus.AddHandler("alerting", handleNotificationTestCommand)
- }
- func handleNotificationTestCommand(cmd *NotificationTestCommand) error {
- notifier := NewRootNotifier()
- model := &models.AlertNotification{
- Name: cmd.Name,
- Type: cmd.Type,
- Settings: cmd.Settings,
- }
- notifiers, err := notifier.getNotifierFor(model)
- if err != nil {
- log.Error2("Failed to create notifier", "error", err.Error())
- return err
- }
- severity := models.AlertSeverityType(cmd.Severity)
- notifier.sendNotifications([]Notifier{notifiers}, createTestEvalContext(severity))
- return nil
- }
- func createTestEvalContext(severity models.AlertSeverityType) *EvalContext {
- state := models.AlertStateOK
- firing := false
- if severity == models.AlertSeverityCritical {
- state = models.AlertStateCritical
- firing = true
- }
- if severity == models.AlertSeverityWarning {
- state = models.AlertStateWarning
- firing = true
- }
- testRule := &Rule{
- DashboardId: 1,
- PanelId: 1,
- Name: "Test notification",
- Message: "Someone is testing the alert notification within grafana.",
- State: state,
- Severity: severity,
- }
- ctx := NewEvalContext(testRule)
- ctx.ImagePublicUrl = "http://grafana.org/assets/img/blog/mixed_styles.png"
- ctx.IsTestRun = true
- ctx.Firing = firing
- ctx.Error = nil
- ctx.EvalMatches = evalMatchesBasedOnSeverity(severity)
- return ctx
- }
- func evalMatchesBasedOnSeverity(severity models.AlertSeverityType) []*EvalMatch {
- matches := make([]*EvalMatch, 0)
- if severity == models.AlertSeverityOK {
- return matches
- }
- matches = append(matches, &EvalMatch{
- Metric: "High value",
- Value: 100,
- })
- matches = append(matches, &EvalMatch{
- Metric: "Higher Value",
- Value: 200,
- })
- return matches
- }
|