mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 02:23:31 -06:00
* Copy rules instead of accepting pointer * Deep-copy the rule, for even more guarantees * Create struct just for needed fields * Move RuleMeta to historian/model package, iron out package dependencies * Move tests for dash ID parsing to model package along with code
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package model
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
|
"github.com/grafana/grafana/pkg/infra/log"
|
|
"github.com/grafana/grafana/pkg/services/ngalert/models"
|
|
)
|
|
|
|
// RuleMeta is the metadata about a rule that is needed by state history.
|
|
type RuleMeta struct {
|
|
ID int64
|
|
OrgID int64
|
|
UID string
|
|
Title string
|
|
Group string
|
|
NamespaceUID string
|
|
DashboardUID string
|
|
PanelID int64
|
|
}
|
|
|
|
func NewRuleMeta(r *models.AlertRule, log log.Logger) RuleMeta {
|
|
dashUID, ok := r.Annotations[models.DashboardUIDAnnotation]
|
|
var panelID int64
|
|
if ok {
|
|
panelAnno := r.Annotations[models.PanelIDAnnotation]
|
|
pid, err := strconv.ParseInt(panelAnno, 10, 64)
|
|
if err != nil {
|
|
logger.Error("Error parsing panelUID for alert annotation", "ruleID", r.ID, "dash", dashUID, "actual", panelAnno, "error", err)
|
|
pid = 0
|
|
dashUID = ""
|
|
}
|
|
panelID = pid
|
|
}
|
|
return RuleMeta{
|
|
ID: r.ID,
|
|
OrgID: r.OrgID,
|
|
UID: r.UID,
|
|
Title: r.Title,
|
|
Group: r.RuleGroup,
|
|
NamespaceUID: r.NamespaceUID,
|
|
DashboardUID: dashUID,
|
|
PanelID: panelID,
|
|
}
|
|
}
|