mirror of https://github.com/grafana/grafana.git
				
				
				
			feat(alerting): adds sql layer for saving execution errors
This commit is contained in:
		
							parent
							
								
									434332f02d
								
							
						
					
					
						commit
						9915f15ed0
					
				|  | @ -122,6 +122,11 @@ type DeleteAlertCommand struct { | |||
| 	AlertId int64 | ||||
| } | ||||
| 
 | ||||
| type SaveExecutionErrorCommand struct { | ||||
| 	AlertId        int64 | ||||
| 	ExecutionError string | ||||
| } | ||||
| 
 | ||||
| //Queries
 | ||||
| type GetAlertsQuery struct { | ||||
| 	OrgId       int64 | ||||
|  |  | |||
|  | @ -65,19 +65,19 @@ func (this *SlackNotifier) Notify(context *alerting.EvalContext) { | |||
| 		"attachments": []map[string]interface{}{ | ||||
| 			{ | ||||
| 				"color":       context.GetColor(), | ||||
| 				//"pretext":     "Optional text that appears above the attachment block",
 | ||||
| 				// "author_name": "Bobby Tables",
 | ||||
| 				// "author_link": "http://flickr.com/bobby/",
 | ||||
| 				// "author_icon": "http://flickr.com/icons/bobby.jpg",
 | ||||
| 				"title":       context.GetNotificationTitle(), | ||||
| 				"title_link":  ruleUrl, | ||||
| 				"text":        context.Rule.Message, | ||||
| 				"fields":      fields, | ||||
| 				"image_url":   context.ImagePublicUrl, | ||||
| 				// "thumb_url":   "http://example.com/path/to/thumb.png",
 | ||||
| 				"footer":      "Grafana v" + setting.BuildVersion, | ||||
| 				"footer_icon": "http://grafana.org/assets/img/fav32.png", | ||||
| 				"ts":          time.Now().Unix(), | ||||
| 				//"pretext":     "Optional text that appears above the attachment block",
 | ||||
| 				// "author_name": "Bobby Tables",
 | ||||
| 				// "author_link": "http://flickr.com/bobby/",
 | ||||
| 				// "author_icon": "http://flickr.com/icons/bobby.jpg",
 | ||||
| 				// "thumb_url":   "http://example.com/path/to/thumb.png",
 | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
|  |  | |||
|  | @ -18,6 +18,24 @@ func init() { | |||
| 	bus.AddHandler("sql", DeleteAlertById) | ||||
| 	bus.AddHandler("sql", GetAllAlertQueryHandler) | ||||
| 	bus.AddHandler("sql", SetAlertState) | ||||
| 	bus.AddHandler("sql", SaveExecutionErrorForAlert) | ||||
| } | ||||
| 
 | ||||
| func SaveExecutionErrorForAlert(cmd *m.SaveExecutionErrorCommand) error { | ||||
| 	return inTransaction(func(sess *xorm.Session) error { | ||||
| 		alert := m.Alert{} | ||||
| 
 | ||||
| 		if has, err := sess.Id(cmd.AlertId).Get(&alert); err != nil { | ||||
| 			return err | ||||
| 		} else if !has { | ||||
| 			return fmt.Errorf("Could not find alert") | ||||
| 		} | ||||
| 
 | ||||
| 		alert.ExecutionError = cmd.ExecutionError | ||||
| 
 | ||||
| 		sess.Id(alert.Id).Update(&alert) | ||||
| 		return nil | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func GetAlertById(query *m.GetAlertByIdQuery) error { | ||||
|  |  | |||
|  | @ -175,5 +175,39 @@ func TestAlertingDataAccess(t *testing.T) { | |||
| 				So(len(query.Result), ShouldEqual, 0) | ||||
| 			}) | ||||
| 		}) | ||||
| 
 | ||||
| 		Convey("Can set new execution error", func() { | ||||
| 			items := []*m.Alert{ | ||||
| 				{ | ||||
| 					PanelId:     1, | ||||
| 					DashboardId: testDash.Id, | ||||
| 					Name:        "Alerting title", | ||||
| 					Message:     "Alerting message", | ||||
| 				}, | ||||
| 			} | ||||
| 
 | ||||
| 			cmd := m.SaveAlertsCommand{ | ||||
| 				Alerts:      items, | ||||
| 				DashboardId: testDash.Id, | ||||
| 				OrgId:       1, | ||||
| 				UserId:      1, | ||||
| 			} | ||||
| 
 | ||||
| 			SaveAlerts(&cmd) | ||||
| 
 | ||||
| 			So(SaveExecutionErrorForAlert(&m.SaveExecutionErrorCommand{ | ||||
| 				AlertId:        1, | ||||
| 				ExecutionError: "the slacker is broken", | ||||
| 			}), ShouldBeNil) | ||||
| 
 | ||||
| 			Convey("Alerts should be removed", func() { | ||||
| 				query := &m.GetAlertByIdQuery{Id: 1} | ||||
| 				err2 := GetAlertById(query) | ||||
| 
 | ||||
| 				So(testDash.Id, ShouldEqual, 1) | ||||
| 				So(err2, ShouldBeNil) | ||||
| 				So(query.Result.ExecutionError, ShouldEqual, "the slacker is broken") | ||||
| 			}) | ||||
| 		}) | ||||
| 	}) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue