mirror of
https://github.com/coreos/prometheus-operator.git
synced 2026-02-05 06:45:27 +01:00
alertmanager: add webhookURL secret validation to checkMSTeamsConfigs (#8294)
Validate that the webhookURL secret exists in checkMSTeamsConfigs, consistent with checkMSTeamsV2Configs. This prevents operator degradation when an AlertmanagerConfig references a missing secret. Signed-off-by: Jayapriya Pai <slashpai9@gmail.com>
This commit is contained in:
@@ -1682,6 +1682,10 @@ func checkMSTeamsConfigs(
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := store.GetSecretKey(ctx, namespace, config.WebhookURL); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := configureHTTPConfigInStore(ctx, config.HTTPConfig, namespace, store); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1141,6 +1141,81 @@ func TestCheckAlertmanagerConfig(t *testing.T) {
|
||||
},
|
||||
ok: false,
|
||||
},
|
||||
{
|
||||
amConfig: &monitoringv1alpha1.AlertmanagerConfig{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "msteams-with-missing-webhook-url-secret",
|
||||
Namespace: "ns1",
|
||||
},
|
||||
Spec: monitoringv1alpha1.AlertmanagerConfigSpec{
|
||||
Route: &monitoringv1alpha1.Route{
|
||||
Receiver: "recv1",
|
||||
},
|
||||
Receivers: []monitoringv1alpha1.Receiver{{
|
||||
Name: "recv1",
|
||||
MSTeamsConfigs: []monitoringv1alpha1.MSTeamsConfig{
|
||||
{
|
||||
WebhookURL: v1.SecretKeySelector{
|
||||
LocalObjectReference: v1.LocalObjectReference{Name: "not-existing-secret"},
|
||||
Key: "url",
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
},
|
||||
},
|
||||
ok: false,
|
||||
},
|
||||
{
|
||||
amConfig: &monitoringv1alpha1.AlertmanagerConfig{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "msteams-with-missing-webhook-url-key",
|
||||
Namespace: "ns1",
|
||||
},
|
||||
Spec: monitoringv1alpha1.AlertmanagerConfigSpec{
|
||||
Route: &monitoringv1alpha1.Route{
|
||||
Receiver: "recv1",
|
||||
},
|
||||
Receivers: []monitoringv1alpha1.Receiver{{
|
||||
Name: "recv1",
|
||||
MSTeamsConfigs: []monitoringv1alpha1.MSTeamsConfig{
|
||||
{
|
||||
WebhookURL: v1.SecretKeySelector{
|
||||
LocalObjectReference: v1.LocalObjectReference{Name: "secret"},
|
||||
Key: "not-existing",
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
},
|
||||
},
|
||||
ok: false,
|
||||
},
|
||||
{
|
||||
amConfig: &monitoringv1alpha1.AlertmanagerConfig{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "msteams-with-valid-webhook-url-secret",
|
||||
Namespace: "ns1",
|
||||
},
|
||||
Spec: monitoringv1alpha1.AlertmanagerConfigSpec{
|
||||
Route: &monitoringv1alpha1.Route{
|
||||
Receiver: "recv1",
|
||||
},
|
||||
Receivers: []monitoringv1alpha1.Receiver{{
|
||||
Name: "recv1",
|
||||
MSTeamsConfigs: []monitoringv1alpha1.MSTeamsConfig{
|
||||
{
|
||||
WebhookURL: v1.SecretKeySelector{
|
||||
LocalObjectReference: v1.LocalObjectReference{Name: "secret"},
|
||||
Key: "key1",
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
},
|
||||
},
|
||||
ok: true,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.amConfig.Name, func(t *testing.T) {
|
||||
store := assets.NewStoreBuilder(c.CoreV1(), c.CoreV1())
|
||||
|
||||
Reference in New Issue
Block a user