Alerting: Update Alert Rule to use int64 for MissingSeriesEvalsToResolve (#109306)
This commit is contained in:
@@ -403,7 +403,7 @@ func TestIntegrationProvisioningApi(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("PUT without MissingSeriesEvalsToResolve clears the field", func(t *testing.T) {
|
||||
oldValue := util.Pointer(5)
|
||||
oldValue := util.Pointer[int64](5)
|
||||
sut := createProvisioningSrvSut(t)
|
||||
rc := createTestRequestCtx()
|
||||
rule := createTestAlertRule("rule", 1)
|
||||
@@ -420,8 +420,8 @@ func TestIntegrationProvisioningApi(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("PUT with MissingSeriesEvalsToResolve updates the value", func(t *testing.T) {
|
||||
oldValue := util.Pointer(5)
|
||||
newValue := util.Pointer(10)
|
||||
oldValue := util.Pointer[int64](5)
|
||||
newValue := util.Pointer[int64](10)
|
||||
sut := createProvisioningSrvSut(t)
|
||||
rc := createTestRequestCtx()
|
||||
rule := createTestAlertRule("rule", 1)
|
||||
@@ -657,12 +657,12 @@ func TestIntegrationProvisioningApi(t *testing.T) {
|
||||
require.Nil(t, updated.Rules[0].MissingSeriesEvalsToResolve)
|
||||
|
||||
// Put the same group with a new value
|
||||
group.Rules[0].MissingSeriesEvalsToResolve = util.Pointer(5)
|
||||
group.Rules[0].MissingSeriesEvalsToResolve = util.Pointer[int64](5)
|
||||
response = sut.RoutePutAlertRuleGroup(&rc, group, "folder-uid", group.Title)
|
||||
require.Equal(t, 200, response.Status())
|
||||
updated = deserializeRuleGroup(t, response.Body())
|
||||
require.NotNil(t, updated.Rules[0].MissingSeriesEvalsToResolve)
|
||||
require.Equal(t, 5, *updated.Rules[0].MissingSeriesEvalsToResolve)
|
||||
require.Equal(t, int64(5), *updated.Rules[0].MissingSeriesEvalsToResolve)
|
||||
|
||||
// Reset the value again
|
||||
group.Rules[0].MissingSeriesEvalsToResolve = nil
|
||||
|
||||
@@ -593,7 +593,7 @@ type PostableGrafanaRule struct {
|
||||
// If set to 0, the value is reset to the default.
|
||||
// required: false
|
||||
// example: 3
|
||||
MissingSeriesEvalsToResolve *int `json:"missing_series_evals_to_resolve,omitempty" yaml:"missing_series_evals_to_resolve,omitempty"`
|
||||
MissingSeriesEvalsToResolve *int64 `json:"missing_series_evals_to_resolve,omitempty" yaml:"missing_series_evals_to_resolve,omitempty"`
|
||||
}
|
||||
|
||||
// swagger:model
|
||||
@@ -616,7 +616,7 @@ type GettableGrafanaRule struct {
|
||||
Record *Record `json:"record,omitempty" yaml:"record,omitempty"`
|
||||
Metadata *AlertRuleMetadata `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
||||
GUID string `json:"guid" yaml:"guid"`
|
||||
MissingSeriesEvalsToResolve *int `json:"missing_series_evals_to_resolve,omitempty" yaml:"missing_series_evals_to_resolve,omitempty"`
|
||||
MissingSeriesEvalsToResolve *int64 `json:"missing_series_evals_to_resolve,omitempty" yaml:"missing_series_evals_to_resolve,omitempty"`
|
||||
}
|
||||
|
||||
// UserInfo represents user-related information, including a unique identifier and a name.
|
||||
|
||||
@@ -174,7 +174,7 @@ type ProvisionedAlertRule struct {
|
||||
// example: {"metric":"grafana_alerts_ratio", "from":"A"}
|
||||
Record *Record `json:"record"`
|
||||
// example: 2
|
||||
MissingSeriesEvalsToResolve *int `json:"missingSeriesEvalsToResolve,omitempty"`
|
||||
MissingSeriesEvalsToResolve *int64 `json:"missingSeriesEvalsToResolve,omitempty"`
|
||||
}
|
||||
|
||||
// swagger:route GET /v1/provisioning/folder/{FolderUID}/rule-groups/{Group} provisioning stable RouteGetAlertRuleGroup
|
||||
@@ -284,7 +284,7 @@ type AlertRuleExport struct {
|
||||
IsPaused bool `json:"isPaused" yaml:"isPaused" hcl:"is_paused"`
|
||||
NotificationSettings *AlertRuleNotificationSettingsExport `json:"notification_settings,omitempty" yaml:"notification_settings,omitempty" hcl:"notification_settings,block"`
|
||||
Record *AlertRuleRecordExport `json:"record,omitempty" yaml:"record,omitempty" hcl:"record,block"`
|
||||
MissingSeriesEvalsToResolve *int `json:"missing_series_evals_to_resolve,omitempty" yaml:"missing_series_evals_to_resolve,omitempty" hcl:"missing_series_evals_to_resolve"`
|
||||
MissingSeriesEvalsToResolve *int64 `json:"missing_series_evals_to_resolve,omitempty" yaml:"missing_series_evals_to_resolve,omitempty" hcl:"missing_series_evals_to_resolve"`
|
||||
}
|
||||
|
||||
// AlertQueryExport is the provisioned export of models.AlertQuery.
|
||||
|
||||
@@ -299,10 +299,10 @@ func validateKeepFiringForInterval(ruleNode *apimodels.PostableExtendedRuleNode)
|
||||
// - == 0, returns nil (reset to default)
|
||||
// - == nil && UID == "", returns nil (new rule)
|
||||
// - == nil && UID != "", returns -1 (existing rule)
|
||||
func validateMissingSeriesEvalsToResolve(ruleNode *apimodels.PostableExtendedRuleNode) (*int, error) {
|
||||
func validateMissingSeriesEvalsToResolve(ruleNode *apimodels.PostableExtendedRuleNode) (*int64, error) {
|
||||
if ruleNode.GrafanaManagedAlert.MissingSeriesEvalsToResolve == nil {
|
||||
if ruleNode.GrafanaManagedAlert.UID != "" {
|
||||
return util.Pointer(-1), nil // will be patched later with the real value of the current version of the rule
|
||||
return util.Pointer[int64](-1), nil // will be patched later with the real value of the current version of the rule
|
||||
}
|
||||
return nil, nil // if it's a new rule, use nil as the default
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user