Browse Source

wip: send and mark as complete

Marcus Efraimsson 7 years ago
parent
commit
88bbc452a7
2 changed files with 21 additions and 9 deletions
  1. 3 2
      pkg/models/alert_notifications.go
  2. 18 7
      pkg/services/alerting/notifier.go

+ 3 - 2
pkg/models/alert_notifications.go

@@ -100,8 +100,9 @@ type SetAlertNotificationStateToPendingCommand struct {
 }
 }
 
 
 type SetAlertNotificationStateToCompleteCommand struct {
 type SetAlertNotificationStateToCompleteCommand struct {
-	Id     int64
-	SentAt int64
+	Id      int64
+	Version int64
+	SentAt  int64
 }
 }
 
 
 type GetNotificationStateQuery struct {
 type GetNotificationStateQuery struct {

+ 18 - 7
pkg/services/alerting/notifier.go

@@ -3,6 +3,7 @@ package alerting
 import (
 import (
 	"errors"
 	"errors"
 	"fmt"
 	"fmt"
+	"time"
 
 
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/components/imguploader"
 	"github.com/grafana/grafana/pkg/components/imguploader"
@@ -53,17 +54,27 @@ func (n *notificationService) SendIfNeeded(context *EvalContext) error {
 		}
 		}
 	}
 	}
 
 
-	// get alert notification (version = 1)
-	// phantomjs 15 sek
-	// loopa notifier - ge mig ett lås! where version = 1
-	// send notification
-	// Släpp lås
-	//
-
 	return n.sendNotifications(context, notifierStates)
 	return n.sendNotifications(context, notifierStates)
 }
 }
 
 
 func (n *notificationService) sendAndMarkAsComplete(evalContext *EvalContext, notifierState *NotifierState) error {
 func (n *notificationService) sendAndMarkAsComplete(evalContext *EvalContext, notifierState *NotifierState) error {
+	err := notifierState.notifier.Notify(evalContext)
+
+	cmd := &m.SetAlertNotificationStateToCompleteCommand{
+		Id:      notifierState.state.Id,
+		Version: notifierState.state.Version,
+		SentAt:  time.Now().Unix(),
+	}
+
+	err = bus.DispatchCtx(evalContext.Ctx, cmd)
+	if err == m.ErrAlertNotificationStateVersionConflict {
+		return nil
+	}
+
+	if err != nil {
+		return err
+	}
+
 	return nil
 	return nil
 }
 }