mirror of
				https://github.com/grafana/grafana.git
				synced 2025-02-25 18:55:37 -06:00 
			
		
		
		
	@@ -215,8 +215,13 @@ func DeleteAlertNotification(c *middleware.Context) Response {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetAlertHistory(c *middleware.Context) Response {
 | 
			
		||||
	alertId, err := getAlertIdForRequest(c)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return ApiError(400, "Invalid request", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	query := &annotations.ItemQuery{
 | 
			
		||||
		AlertId: c.ParamsInt64("alertId"),
 | 
			
		||||
		AlertId: alertId,
 | 
			
		||||
		Type:    annotations.AlertType,
 | 
			
		||||
		OrgId:   c.OrgId,
 | 
			
		||||
		Limit:   c.QueryInt64("limit"),
 | 
			
		||||
@@ -244,3 +249,34 @@ func GetAlertHistory(c *middleware.Context) Response {
 | 
			
		||||
 | 
			
		||||
	return Json(200, result)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getAlertIdForRequest(c *middleware.Context) (int64, error) {
 | 
			
		||||
	alertId := c.QueryInt64("alertId")
 | 
			
		||||
	panelId := c.QueryInt64("panelId")
 | 
			
		||||
	dashboardId := c.QueryInt64("dashboardId")
 | 
			
		||||
 | 
			
		||||
	if alertId == 0 && dashboardId == 0 && panelId == 0 {
 | 
			
		||||
		return 0, fmt.Errorf("Missing alertId or dashboardId and panelId")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if alertId == 0 {
 | 
			
		||||
		//fetch alertId
 | 
			
		||||
		query := models.GetAlertsQuery{
 | 
			
		||||
			OrgId:       c.OrgId,
 | 
			
		||||
			DashboardId: dashboardId,
 | 
			
		||||
			PanelId:     panelId,
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := bus.Dispatch(&query); err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(query.Result) != 1 {
 | 
			
		||||
			return 0, fmt.Errorf("PanelId is not unique on dashboard")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		alertId = query.Result[0].Id
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return alertId, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -254,7 +254,7 @@ func Register(r *macaron.Macaron) {
 | 
			
		||||
			r.Get("/", wrap(GetAlerts))
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		r.Get("/alert-history/:alertId", ValidateOrgAlert, wrap(GetAlertHistory))
 | 
			
		||||
		r.Get("/alert-history", wrap(GetAlertHistory))
 | 
			
		||||
 | 
			
		||||
		r.Get("/alert-notifications", wrap(GetAlertNotifications))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@ type EvalMatch struct {
 | 
			
		||||
 | 
			
		||||
type AlertHistory struct {
 | 
			
		||||
	AlertId   int64     `json:"alertId"`
 | 
			
		||||
	NewState  string    `json:"netState"`
 | 
			
		||||
	NewState  string    `json:"newState"`
 | 
			
		||||
	Timestamp time.Time `json:"timestamp"`
 | 
			
		||||
	Title     string    `json:"title"`
 | 
			
		||||
	Text      string    `json:"text"`
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/grafana/grafana/pkg/bus"
 | 
			
		||||
	"github.com/grafana/grafana/pkg/components/simplejson"
 | 
			
		||||
	"github.com/grafana/grafana/pkg/log"
 | 
			
		||||
	"github.com/grafana/grafana/pkg/metrics"
 | 
			
		||||
	m "github.com/grafana/grafana/pkg/models"
 | 
			
		||||
@@ -65,6 +66,7 @@ func (handler *DefaultResultHandler) Handle(ctx *EvalContext) {
 | 
			
		||||
			NewState:  string(ctx.Rule.State),
 | 
			
		||||
			PrevState: string(oldState),
 | 
			
		||||
			Timestamp: time.Now(),
 | 
			
		||||
			Data:      simplejson.NewFromAny(ctx.EvalMatches),
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		annotationRepo := annotations.GetRepository()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user