Alerting: Persist rule position in the group (#50051)
Migrations: * add a new column alert_group_idx to alert_rule table * add a new column alert_group_idx to alert_rule_version table * re-index existing rules during migration API: * set group index on update. Use the natural order of items in the array as group index * sort rules in the group on GET * update the version of all rules of all affected groups. This will make optimistic lock work in the case of multiple concurrent request touching the same groups. UI: * update UI to keep the order of alerts in a group
This commit is contained in:
@@ -85,7 +85,7 @@ func getBody(t *testing.T, body io.ReadCloser) string {
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func AlertRuleGen() func() apimodels.PostableExtendedRuleNode {
|
||||
func alertRuleGen() func() apimodels.PostableExtendedRuleNode {
|
||||
return func() apimodels.PostableExtendedRuleNode {
|
||||
return apimodels.PostableExtendedRuleNode{
|
||||
ApiRuleNode: &apimodels.ApiRuleNode{
|
||||
@@ -115,7 +115,7 @@ func AlertRuleGen() func() apimodels.PostableExtendedRuleNode {
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateAlertRuleGroup(rulesCount int, gen func() apimodels.PostableExtendedRuleNode) apimodels.PostableRuleGroupConfig {
|
||||
func generateAlertRuleGroup(rulesCount int, gen func() apimodels.PostableExtendedRuleNode) apimodels.PostableRuleGroupConfig {
|
||||
rules := make([]apimodels.PostableExtendedRuleNode, 0, rulesCount)
|
||||
for i := 0; i < rulesCount; i++ {
|
||||
rules = append(rules, gen())
|
||||
@@ -127,10 +127,10 @@ func GenerateAlertRuleGroup(rulesCount int, gen func() apimodels.PostableExtende
|
||||
}
|
||||
}
|
||||
|
||||
func ConvertGettableRuleGroupToPostable(gettable apimodels.GettableRuleGroupConfig) apimodels.PostableRuleGroupConfig {
|
||||
func convertGettableRuleGroupToPostable(gettable apimodels.GettableRuleGroupConfig) apimodels.PostableRuleGroupConfig {
|
||||
rules := make([]apimodels.PostableExtendedRuleNode, 0, len(gettable.Rules))
|
||||
for _, rule := range gettable.Rules {
|
||||
rules = append(rules, ConvertGettableRuleToPostable(rule))
|
||||
rules = append(rules, convertGettableRuleToPostable(rule))
|
||||
}
|
||||
return apimodels.PostableRuleGroupConfig{
|
||||
Name: gettable.Name,
|
||||
@@ -139,14 +139,14 @@ func ConvertGettableRuleGroupToPostable(gettable apimodels.GettableRuleGroupConf
|
||||
}
|
||||
}
|
||||
|
||||
func ConvertGettableRuleToPostable(gettable apimodels.GettableExtendedRuleNode) apimodels.PostableExtendedRuleNode {
|
||||
func convertGettableRuleToPostable(gettable apimodels.GettableExtendedRuleNode) apimodels.PostableExtendedRuleNode {
|
||||
return apimodels.PostableExtendedRuleNode{
|
||||
ApiRuleNode: gettable.ApiRuleNode,
|
||||
GrafanaManagedAlert: ConvertGettableGrafanaRuleToPostable(gettable.GrafanaManagedAlert),
|
||||
GrafanaManagedAlert: convertGettableGrafanaRuleToPostable(gettable.GrafanaManagedAlert),
|
||||
}
|
||||
}
|
||||
|
||||
func ConvertGettableGrafanaRuleToPostable(gettable *apimodels.GettableGrafanaRule) *apimodels.PostableGrafanaRule {
|
||||
func convertGettableGrafanaRuleToPostable(gettable *apimodels.GettableGrafanaRule) *apimodels.PostableGrafanaRule {
|
||||
if gettable == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user