mirror of https://github.com/grafana/grafana
parent
6b8921c8c5
commit
91a1a823e2
@ -0,0 +1,50 @@ |
|||||||
|
package models |
||||||
|
|
||||||
|
import ( |
||||||
|
//"github.com/grafana/grafana/pkg/components/simplejson"
|
||||||
|
) |
||||||
|
|
||||||
|
type Alert struct { |
||||||
|
Id int64 |
||||||
|
DashboardId int64 |
||||||
|
PanelId int64 |
||||||
|
Query string |
||||||
|
QueryRefId string |
||||||
|
WarnLevel int64 |
||||||
|
ErrorLevel int64 |
||||||
|
CheckInterval string |
||||||
|
Title string |
||||||
|
Description string |
||||||
|
QueryRange string |
||||||
|
} |
||||||
|
|
||||||
|
func (cmd *SaveDashboardCommand) GetAlertModels() *[]Alert { |
||||||
|
dash := NewDashboardFromJson(cmd.Dashboard) |
||||||
|
|
||||||
|
alerts := make([]Alert, 0) |
||||||
|
|
||||||
|
alerts = append(alerts, Alert{ |
||||||
|
DashboardId: dash.Id, |
||||||
|
Id: 1, |
||||||
|
PanelId: 1, |
||||||
|
Query: "", |
||||||
|
QueryRefId: "", |
||||||
|
WarnLevel: 0, |
||||||
|
ErrorLevel: 0, |
||||||
|
CheckInterval: "5s", |
||||||
|
Title: dash.Title + " Alert", |
||||||
|
Description: dash.Title + " Description", |
||||||
|
QueryRange: "10m", |
||||||
|
}) |
||||||
|
|
||||||
|
return &alerts |
||||||
|
} |
||||||
|
|
||||||
|
// Commands
|
||||||
|
type SaveAlertsCommand struct { |
||||||
|
DashboardId int64 |
||||||
|
UserId int64 |
||||||
|
OrgId int64 |
||||||
|
|
||||||
|
Alerts *[]Alert |
||||||
|
} |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
package sqlstore |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
|
||||||
|
"github.com/go-xorm/xorm" |
||||||
|
"github.com/grafana/grafana/pkg/bus" |
||||||
|
m "github.com/grafana/grafana/pkg/models" |
||||||
|
) |
||||||
|
|
||||||
|
func init() { |
||||||
|
bus.AddHandler("sql", SaveAlerts) |
||||||
|
} |
||||||
|
|
||||||
|
func SaveAlerts(cmd *m.SaveAlertsCommand) error { |
||||||
|
return inTransaction(func(sess *xorm.Session) error { |
||||||
|
fmt.Printf("Saving alerts for dashboard %v\n", cmd.DashboardId) |
||||||
|
|
||||||
|
for _, alert := range *cmd.Alerts { |
||||||
|
_, err := x.Insert(&alert) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return nil |
||||||
|
}) |
||||||
|
} |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
package migrations |
||||||
|
|
||||||
|
import . "github.com/grafana/grafana/pkg/services/sqlstore/migrator" |
||||||
|
|
||||||
|
func addAlertMigrations(mg *Migrator) { |
||||||
|
mg.AddMigration("Drop old table alert table", NewDropTableMigration("alert")) |
||||||
|
|
||||||
|
alertV1 := Table{ |
||||||
|
Name: "alert", |
||||||
|
Columns: []*Column{ |
||||||
|
{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true}, |
||||||
|
{Name: "dashboard_id", Type: DB_BigInt, Nullable: false}, |
||||||
|
{Name: "panel_id", Type: DB_BigInt, Nullable: false}, |
||||||
|
{Name: "query", Type: DB_Text, Nullable: false}, |
||||||
|
{Name: "query_ref_id", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
{Name: "warn_level", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
{Name: "error_level", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
{Name: "check_interval", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
{Name: "title", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
{Name: "description", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
{Name: "query_range", Type: DB_NVarchar, Length: 255, Nullable: false}, |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
// create table
|
||||||
|
mg.AddMigration("create alert table v1", NewAddTableMigration(alertV1)) |
||||||
|
} |
||||||
Loading…
Reference in new issue