|
|
|
|
@ -12,17 +12,19 @@ import ( |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type EvalContext struct { |
|
|
|
|
Firing bool |
|
|
|
|
IsTestRun bool |
|
|
|
|
EvalMatches []*EvalMatch |
|
|
|
|
Logs []*ResultLogEntry |
|
|
|
|
Error error |
|
|
|
|
ConditionEvals string |
|
|
|
|
StartTime time.Time |
|
|
|
|
EndTime time.Time |
|
|
|
|
Rule *Rule |
|
|
|
|
log log.Logger |
|
|
|
|
dashboardSlug string |
|
|
|
|
Firing bool |
|
|
|
|
IsTestRun bool |
|
|
|
|
EvalMatches []*EvalMatch |
|
|
|
|
Logs []*ResultLogEntry |
|
|
|
|
Error error |
|
|
|
|
ConditionEvals string |
|
|
|
|
StartTime time.Time |
|
|
|
|
EndTime time.Time |
|
|
|
|
Rule *Rule |
|
|
|
|
log log.Logger |
|
|
|
|
|
|
|
|
|
dashboardRef *m.DashboardRef |
|
|
|
|
|
|
|
|
|
ImagePublicUrl string |
|
|
|
|
ImageOnDiskPath string |
|
|
|
|
NoDataFound bool |
|
|
|
|
@ -83,29 +85,30 @@ func (c *EvalContext) GetNotificationTitle() string { |
|
|
|
|
return "[" + c.GetStateModel().Text + "] " + c.Rule.Name |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (c *EvalContext) GetDashboardSlug() (string, error) { |
|
|
|
|
if c.dashboardSlug != "" { |
|
|
|
|
return c.dashboardSlug, nil |
|
|
|
|
func (c *EvalContext) GetDashboardUID() (*m.DashboardRef, error) { |
|
|
|
|
if c.dashboardRef != nil { |
|
|
|
|
return c.dashboardRef, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
slugQuery := &m.GetDashboardSlugByIdQuery{Id: c.Rule.DashboardId} |
|
|
|
|
if err := bus.Dispatch(slugQuery); err != nil { |
|
|
|
|
return "", err |
|
|
|
|
uidQuery := &m.GetDashboardUIDByIdQuery{Id: c.Rule.DashboardId} |
|
|
|
|
if err := bus.Dispatch(uidQuery); err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
c.dashboardSlug = slugQuery.Result |
|
|
|
|
return c.dashboardSlug, nil |
|
|
|
|
c.dashboardRef = uidQuery.Result |
|
|
|
|
return c.dashboardRef, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const urlFormat = "%s?fullscreen=true&edit=true&tab=alert&panelId=%d&orgId=%d" |
|
|
|
|
|
|
|
|
|
func (c *EvalContext) GetRuleUrl() (string, error) { |
|
|
|
|
if c.IsTestRun { |
|
|
|
|
return setting.AppUrl, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if slug, err := c.GetDashboardSlug(); err != nil { |
|
|
|
|
if ref, err := c.GetDashboardUID(); err != nil { |
|
|
|
|
return "", err |
|
|
|
|
} else { |
|
|
|
|
ruleUrl := fmt.Sprintf("%sdashboard/db/%s?fullscreen&edit&tab=alert&panelId=%d&orgId=%d", setting.AppUrl, slug, c.Rule.PanelId, c.Rule.OrgId) |
|
|
|
|
return ruleUrl, nil |
|
|
|
|
return fmt.Sprintf(urlFormat, m.GetFullDashboardUrl(ref.Uid, ref.Slug), c.Rule.PanelId, c.Rule.OrgId), nil |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|