| 
									
										
										
										
											2016-04-27 19:02:28 +08:00
										 |  |  | package dtos | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-20 22:13:36 +08:00
										 |  |  | import ( | 
					
						
							| 
									
										
										
										
											2018-06-05 14:42:39 +08:00
										 |  |  | 	"fmt" | 
					
						
							| 
									
										
										
										
											2016-07-20 22:13:36 +08:00
										 |  |  | 	"time" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-13 19:32:30 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/components/null" | 
					
						
							| 
									
										
										
										
											2016-07-20 22:13:36 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/components/simplejson" | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/models" | 
					
						
							| 
									
										
										
										
											2016-07-20 22:13:36 +08:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2016-06-20 17:31:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-22 22:45:17 +08:00
										 |  |  | type AlertRule struct { | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | 	Id             int64                 `json:"id"` | 
					
						
							|  |  |  | 	DashboardId    int64                 `json:"dashboardId"` | 
					
						
							|  |  |  | 	PanelId        int64                 `json:"panelId"` | 
					
						
							|  |  |  | 	Name           string                `json:"name"` | 
					
						
							|  |  |  | 	Message        string                `json:"message"` | 
					
						
							|  |  |  | 	State          models.AlertStateType `json:"state"` | 
					
						
							|  |  |  | 	NewStateDate   time.Time             `json:"newStateDate"` | 
					
						
							|  |  |  | 	EvalDate       time.Time             `json:"evalDate"` | 
					
						
							|  |  |  | 	EvalData       *simplejson.Json      `json:"evalData"` | 
					
						
							|  |  |  | 	ExecutionError string                `json:"executionError"` | 
					
						
							|  |  |  | 	Url            string                `json:"url"` | 
					
						
							|  |  |  | 	CanEdit        bool                  `json:"canEdit"` | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 14:42:39 +08:00
										 |  |  | func formatShort(interval time.Duration) string { | 
					
						
							|  |  |  | 	var result string | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 14:42:39 +08:00
										 |  |  | 	hours := interval / time.Hour | 
					
						
							|  |  |  | 	if hours > 0 { | 
					
						
							|  |  |  | 		result += fmt.Sprintf("%dh", hours) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	remaining := interval - (hours * time.Hour) | 
					
						
							|  |  |  | 	mins := remaining / time.Minute | 
					
						
							|  |  |  | 	if mins > 0 { | 
					
						
							|  |  |  | 		result += fmt.Sprintf("%dm", mins) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	remaining = remaining - (mins * time.Minute) | 
					
						
							|  |  |  | 	seconds := remaining / time.Second | 
					
						
							|  |  |  | 	if seconds > 0 { | 
					
						
							|  |  |  | 		result += fmt.Sprintf("%ds", seconds) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 14:42:39 +08:00
										 |  |  | 	return result | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func NewAlertNotification(notification *models.AlertNotification) *AlertNotification { | 
					
						
							|  |  |  | 	return &AlertNotification{ | 
					
						
							| 
									
										
										
										
											2018-10-17 16:41:18 +08:00
										 |  |  | 		Id:                    notification.Id, | 
					
						
							| 
									
										
										
										
											2019-01-16 22:34:32 +08:00
										 |  |  | 		Uid:                   notification.Uid, | 
					
						
							| 
									
										
										
										
											2018-10-17 16:41:18 +08:00
										 |  |  | 		Name:                  notification.Name, | 
					
						
							|  |  |  | 		Type:                  notification.Type, | 
					
						
							|  |  |  | 		IsDefault:             notification.IsDefault, | 
					
						
							|  |  |  | 		Created:               notification.Created, | 
					
						
							|  |  |  | 		Updated:               notification.Updated, | 
					
						
							|  |  |  | 		Frequency:             formatShort(notification.Frequency), | 
					
						
							|  |  |  | 		SendReminder:          notification.SendReminder, | 
					
						
							|  |  |  | 		DisableResolveMessage: notification.DisableResolveMessage, | 
					
						
							|  |  |  | 		Settings:              notification.Settings, | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-04-27 19:02:28 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-06-20 17:31:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-22 22:45:17 +08:00
										 |  |  | type AlertNotification struct { | 
					
						
							| 
									
										
										
										
											2018-10-17 16:41:18 +08:00
										 |  |  | 	Id                    int64            `json:"id"` | 
					
						
							| 
									
										
										
										
											2019-01-16 22:34:32 +08:00
										 |  |  | 	Uid                   string           `json:"uid"` | 
					
						
							| 
									
										
										
										
											2018-10-17 16:41:18 +08:00
										 |  |  | 	Name                  string           `json:"name"` | 
					
						
							|  |  |  | 	Type                  string           `json:"type"` | 
					
						
							|  |  |  | 	IsDefault             bool             `json:"isDefault"` | 
					
						
							|  |  |  | 	SendReminder          bool             `json:"sendReminder"` | 
					
						
							|  |  |  | 	DisableResolveMessage bool             `json:"disableResolveMessage"` | 
					
						
							|  |  |  | 	Frequency             string           `json:"frequency"` | 
					
						
							|  |  |  | 	Created               time.Time        `json:"created"` | 
					
						
							|  |  |  | 	Updated               time.Time        `json:"updated"` | 
					
						
							|  |  |  | 	Settings              *simplejson.Json `json:"settings"` | 
					
						
							| 
									
										
										
										
											2016-06-20 17:31:20 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-07-20 22:13:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-21 16:29:11 +08:00
										 |  |  | type AlertTestCommand struct { | 
					
						
							|  |  |  | 	Dashboard *simplejson.Json `json:"dashboard" binding:"Required"` | 
					
						
							|  |  |  | 	PanelId   int64            `json:"panelId" binding:"Required"` | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type AlertTestResult struct { | 
					
						
							| 
									
										
										
										
											2016-11-17 22:48:15 +08:00
										 |  |  | 	Firing         bool                  `json:"firing"` | 
					
						
							| 
									
										
										
										
											2018-06-05 04:19:27 +08:00
										 |  |  | 	State          models.AlertStateType `json:"state"` | 
					
						
							| 
									
										
										
										
											2016-11-17 22:48:15 +08:00
										 |  |  | 	ConditionEvals string                `json:"conditionEvals"` | 
					
						
							|  |  |  | 	TimeMs         string                `json:"timeMs"` | 
					
						
							|  |  |  | 	Error          string                `json:"error,omitempty"` | 
					
						
							|  |  |  | 	EvalMatches    []*EvalMatch          `json:"matches,omitempty"` | 
					
						
							|  |  |  | 	Logs           []*AlertTestResultLog `json:"logs,omitempty"` | 
					
						
							| 
									
										
										
										
											2016-07-21 19:09:12 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type AlertTestResultLog struct { | 
					
						
							|  |  |  | 	Message string      `json:"message"` | 
					
						
							|  |  |  | 	Data    interface{} `json:"data"` | 
					
						
							| 
									
										
										
										
											2016-07-20 22:13:36 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-07-22 03:54:12 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-18 17:22:24 +08:00
										 |  |  | type EvalMatch struct { | 
					
						
							|  |  |  | 	Tags   map[string]string `json:"tags,omitempty"` | 
					
						
							|  |  |  | 	Metric string            `json:"metric"` | 
					
						
							| 
									
										
										
										
											2017-01-13 19:32:30 +08:00
										 |  |  | 	Value  null.Float        `json:"value"` | 
					
						
							| 
									
										
										
										
											2016-07-22 03:54:12 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-08-30 15:32:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-05 20:43:53 +08:00
										 |  |  | type NotificationTestCommand struct { | 
					
						
							| 
									
										
										
										
											2018-10-17 16:41:18 +08:00
										 |  |  | 	Name                  string           `json:"name"` | 
					
						
							|  |  |  | 	Type                  string           `json:"type"` | 
					
						
							|  |  |  | 	SendReminder          bool             `json:"sendReminder"` | 
					
						
							|  |  |  | 	DisableResolveMessage bool             `json:"disableResolveMessage"` | 
					
						
							|  |  |  | 	Frequency             string           `json:"frequency"` | 
					
						
							|  |  |  | 	Settings              *simplejson.Json `json:"settings"` | 
					
						
							| 
									
										
										
										
											2016-09-05 20:43:53 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-10-10 20:26:09 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | type PauseAlertCommand struct { | 
					
						
							| 
									
										
										
										
											2016-10-11 16:53:24 +08:00
										 |  |  | 	AlertId int64 `json:"alertId"` | 
					
						
							|  |  |  | 	Paused  bool  `json:"paused"` | 
					
						
							| 
									
										
										
										
											2016-10-10 20:26:09 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-12-16 00:01:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 20:24:45 +08:00
										 |  |  | type PauseAllAlertsCommand struct { | 
					
						
							|  |  |  | 	Paused bool `json:"paused"` | 
					
						
							| 
									
										
										
										
											2016-12-16 00:01:45 +08:00
										 |  |  | } |