mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* break out new and edit * changed model to match new model in backend * AlertingNG: API modifications (#30683) * Fix API consistency * Change eval alert definition to POST request * Fix eval endpoint to accept custom now parameter * Change JSON input property for create/update endpoints * model adjustments * set mixed datasource, fix put url * update snapshots * remove edit and add landing page * remove snapshot tests ans snapshots * wrap linkbutton in array Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com> Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
116 lines
3.4 KiB
Go
116 lines
3.4 KiB
Go
package ngalert
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana/pkg/services/ngalert/eval"
|
|
)
|
|
|
|
var errAlertDefinitionFailedGenerateUniqueUID = errors.New("failed to generate alert definition UID")
|
|
|
|
// AlertDefinition is the model for alert definitions in Alerting NG.
|
|
type AlertDefinition struct {
|
|
ID int64 `xorm:"pk autoincr 'id'" json:"id"`
|
|
OrgID int64 `xorm:"org_id" json:"orgId"`
|
|
Title string `json:"title"`
|
|
Condition string `json:"condition"`
|
|
Data []eval.AlertQuery `json:"data"`
|
|
Updated time.Time `json:"updated"`
|
|
IntervalSeconds int64 `json:"intervalSeconds"`
|
|
Version int64 `json:"version"`
|
|
UID string `xorm:"uid" json:"uid"`
|
|
Paused bool `json:"paused"`
|
|
}
|
|
|
|
type alertDefinitionKey struct {
|
|
orgID int64
|
|
definitionUID string
|
|
}
|
|
|
|
func (k alertDefinitionKey) String() string {
|
|
return fmt.Sprintf("{orgID: %d, definitionUID: %s}", k.orgID, k.definitionUID)
|
|
}
|
|
|
|
func (alertDefinition *AlertDefinition) getKey() alertDefinitionKey {
|
|
return alertDefinitionKey{orgID: alertDefinition.OrgID, definitionUID: alertDefinition.UID}
|
|
}
|
|
|
|
// AlertDefinitionVersion is the model for alert definition versions in Alerting NG.
|
|
type AlertDefinitionVersion struct {
|
|
ID int64 `xorm:"pk autoincr 'id'"`
|
|
AlertDefinitionID int64 `xorm:"alert_definition_id"`
|
|
AlertDefinitionUID string `xorm:"alert_definition_uid"`
|
|
ParentVersion int64
|
|
RestoredFrom int64
|
|
Version int64
|
|
|
|
Created time.Time
|
|
Title string
|
|
Condition string
|
|
Data []eval.AlertQuery
|
|
IntervalSeconds int64
|
|
}
|
|
|
|
var (
|
|
// errAlertDefinitionNotFound is an error for an unknown alert definition.
|
|
errAlertDefinitionNotFound = fmt.Errorf("could not find alert definition")
|
|
)
|
|
|
|
// getAlertDefinitionByUIDQuery is the query for retrieving/deleting an alert definition by UID and organisation ID.
|
|
type getAlertDefinitionByUIDQuery struct {
|
|
UID string
|
|
OrgID int64
|
|
|
|
Result *AlertDefinition
|
|
}
|
|
|
|
type deleteAlertDefinitionByUIDCommand struct {
|
|
UID string
|
|
OrgID int64
|
|
}
|
|
|
|
// saveAlertDefinitionCommand is the query for saving a new alert definition.
|
|
type saveAlertDefinitionCommand struct {
|
|
Title string `json:"title"`
|
|
OrgID int64 `json:"-"`
|
|
Condition string `json:"condition"`
|
|
Data []eval.AlertQuery `json:"data"`
|
|
IntervalSeconds *int64 `json:"intervalSeconds"`
|
|
|
|
Result *AlertDefinition
|
|
}
|
|
|
|
// updateAlertDefinitionCommand is the query for updating an existing alert definition.
|
|
type updateAlertDefinitionCommand struct {
|
|
Title string `json:"title"`
|
|
OrgID int64 `json:"-"`
|
|
Condition string `json:"condition"`
|
|
Data []eval.AlertQuery `json:"data"`
|
|
IntervalSeconds *int64 `json:"intervalSeconds"`
|
|
UID string `json:"-"`
|
|
|
|
Result *AlertDefinition
|
|
}
|
|
|
|
type evalAlertConditionCommand struct {
|
|
Condition string `json:"condition"`
|
|
Data []eval.AlertQuery `json:"data"`
|
|
Now time.Time `json:"now"`
|
|
}
|
|
|
|
type listAlertDefinitionsQuery struct {
|
|
OrgID int64 `json:"-"`
|
|
|
|
Result []*AlertDefinition
|
|
}
|
|
|
|
type updateAlertDefinitionPausedCommand struct {
|
|
OrgID int64 `json:"-"`
|
|
UIDs []string `json:"uids"`
|
|
Paused bool `json:"-"`
|
|
|
|
ResultCount int64
|
|
}
|