Alerting: Check if TimeInterval is used in ActiveTimings when deleting (#110691)

* check for active timing in route

* Update test

* Add integration test
This commit is contained in:
Fayzal Ghantiwala
2025-09-08 15:04:40 +01:00
committed by GitHub
parent 7fd9ab9481
commit 22ed5499a2
4 changed files with 60 additions and 13 deletions
@@ -14,10 +14,13 @@
]
],
"mute_time_intervals": [
"test-interval", "persisted-interval"
"test-interval",
"persisted-interval"
],
"active_time_intervals": [
"test-interval", "persisted-interval"
"test-interval",
"persisted-interval",
"test-interval-for-active-time-interval"
]
}
]
@@ -40,6 +43,15 @@
"end_time": "23:59"
}
]
},
{
"name": "test-interval-for-active-time-interval",
"time_intervals": [
{
"start_time": "06:00",
"end_time": "23:59"
}
]
}
],
"receivers": [
@@ -675,7 +675,7 @@ func TestIntegrationTimeIntervalReferentialIntegrity(t *testing.T) {
intervals, err := adminClient.List(ctx, v1.ListOptions{})
require.NoError(t, err)
require.Len(t, intervals.Items, 2)
require.Len(t, intervals.Items, 3)
intervalIdx := slices.IndexFunc(intervals.Items, func(interval v0alpha1.TimeInterval) bool {
return interval.Spec.Name == "test-interval"
})
@@ -764,6 +764,16 @@ func TestIntegrationTimeIntervalReferentialIntegrity(t *testing.T) {
err = adminClient.Delete(ctx, interval.Name, v1.DeleteOptions{})
require.Truef(t, errors.IsConflict(err), "Expected Conflict, got: %s", err)
})
t.Run("should fail to delete if time interval is used in route as an active time interval", func(t *testing.T) {
idx := slices.IndexFunc(intervals.Items, func(interval v0alpha1.TimeInterval) bool {
return interval.Spec.Name == "test-interval-for-active-time-interval"
})
intervalToDelete := intervals.Items[idx]
err = adminClient.Delete(ctx, intervalToDelete.Name, v1.DeleteOptions{})
require.Truef(t, errors.IsConflict(err), "Expected Conflict, got: %s", err)
})
})
}