chore: make send resolved notifs configurable (#4833)

This commit is contained in:
Srikanth Chekuri 2024-04-15 13:46:12 +05:30 committed by GitHub
parent a9464de62d
commit fc2bdb610f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 40 additions and 21 deletions

View File

@ -15,6 +15,7 @@
"button_test_channel": "Test", "button_test_channel": "Test",
"button_return": "Back", "button_return": "Back",
"field_channel_name": "Name", "field_channel_name": "Name",
"field_send_resolved": "Send resolved alerts",
"field_channel_type": "Type", "field_channel_type": "Type",
"field_webhook_url": "Webhook URL", "field_webhook_url": "Webhook URL",
"field_slack_recipient": "Recipient", "field_slack_recipient": "Recipient",

View File

@ -15,6 +15,7 @@
"button_test_channel": "Test", "button_test_channel": "Test",
"button_return": "Back", "button_return": "Back",
"field_channel_name": "Name", "field_channel_name": "Name",
"field_send_resolved": "Send resolved alerts",
"field_channel_type": "Type", "field_channel_type": "Type",
"field_webhook_url": "Webhook URL", "field_webhook_url": "Webhook URL",
"field_slack_recipient": "Recipient", "field_slack_recipient": "Recipient",

View File

@ -12,7 +12,7 @@ const create = async (
name: props.name, name: props.name,
email_configs: [ email_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
to: props.to, to: props.to,
html: props.html, html: props.html,
headers: props.headers, headers: props.headers,

View File

@ -12,7 +12,7 @@ const create = async (
name: props.name, name: props.name,
msteams_configs: [ msteams_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
webhook_url: props.webhook_url, webhook_url: props.webhook_url,
title: props.title, title: props.title,
text: props.text, text: props.text,

View File

@ -12,7 +12,7 @@ const create = async (
name: props.name, name: props.name,
pagerduty_configs: [ pagerduty_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
routing_key: props.routing_key, routing_key: props.routing_key,
client: props.client, client: props.client,
client_url: props.client_url, client_url: props.client_url,

View File

@ -12,7 +12,7 @@ const create = async (
name: props.name, name: props.name,
slack_configs: [ slack_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
api_url: props.api_url, api_url: props.api_url,
channel: props.channel, channel: props.channel,
title: props.title, title: props.title,

View File

@ -30,7 +30,7 @@ const create = async (
name: props.name, name: props.name,
webhook_configs: [ webhook_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
url: props.api_url, url: props.api_url,
http_config: httpConfig, http_config: httpConfig,
}, },

View File

@ -12,7 +12,7 @@ const editEmail = async (
name: props.name, name: props.name,
email_configs: [ email_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
to: props.to, to: props.to,
html: props.html, html: props.html,
headers: props.headers, headers: props.headers,

View File

@ -12,7 +12,7 @@ const editMsTeams = async (
name: props.name, name: props.name,
msteams_configs: [ msteams_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
webhook_url: props.webhook_url, webhook_url: props.webhook_url,
title: props.title, title: props.title,
text: props.text, text: props.text,

View File

@ -12,7 +12,7 @@ const editOpsgenie = async (
name: props.name, name: props.name,
opsgenie_configs: [ opsgenie_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
api_key: props.api_key, api_key: props.api_key,
description: props.description, description: props.description,
priority: props.priority, priority: props.priority,

View File

@ -12,7 +12,7 @@ const editPager = async (
name: props.name, name: props.name,
pagerduty_configs: [ pagerduty_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
routing_key: props.routing_key, routing_key: props.routing_key,
client: props.client, client: props.client,
client_url: props.client_url, client_url: props.client_url,

View File

@ -12,7 +12,7 @@ const editSlack = async (
name: props.name, name: props.name,
slack_configs: [ slack_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
api_url: props.api_url, api_url: props.api_url,
channel: props.channel, channel: props.channel,
title: props.title, title: props.title,

View File

@ -29,7 +29,7 @@ const editWebhook = async (
name: props.name, name: props.name,
webhook_configs: [ webhook_configs: [
{ {
send_resolved: true, send_resolved: props.send_resolved,
url: props.api_url, url: props.api_url,
http_config: httpConfig, http_config: httpConfig,
}, },

View File

@ -53,6 +53,7 @@ function CreateAlertChannels({
EmailChannel EmailChannel
> >
>({ >({
send_resolved: true,
text: `{{ range .Alerts -}} text: `{{ range .Alerts -}}
*Alert:* {{ .Labels.alertname }}{{ if .Labels.severity }} - {{ .Labels.severity }}{{ end }} *Alert:* {{ .Labels.alertname }}{{ if .Labels.severity }} - {{ .Labels.severity }}{{ end }}
@ -119,7 +120,7 @@ function CreateAlertChannels({
api_url: selectedConfig?.api_url || '', api_url: selectedConfig?.api_url || '',
channel: selectedConfig?.channel || '', channel: selectedConfig?.channel || '',
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
text: selectedConfig?.text || '', text: selectedConfig?.text || '',
title: selectedConfig?.title || '', title: selectedConfig?.title || '',
}), }),
@ -158,7 +159,7 @@ function CreateAlertChannels({
let request: WebhookChannel = { let request: WebhookChannel = {
api_url: selectedConfig?.api_url || '', api_url: selectedConfig?.api_url || '',
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
}; };
if (selectedConfig?.username !== '' || selectedConfig?.password !== '') { if (selectedConfig?.username !== '' || selectedConfig?.password !== '') {
@ -226,7 +227,7 @@ function CreateAlertChannels({
return { return {
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
routing_key: selectedConfig?.routing_key || '', routing_key: selectedConfig?.routing_key || '',
client: selectedConfig?.client || '', client: selectedConfig?.client || '',
client_url: selectedConfig?.client_url || '', client_url: selectedConfig?.client_url || '',
@ -274,7 +275,7 @@ function CreateAlertChannels({
() => ({ () => ({
api_key: selectedConfig?.api_key || '', api_key: selectedConfig?.api_key || '',
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
description: selectedConfig?.description || '', description: selectedConfig?.description || '',
message: selectedConfig?.message || '', message: selectedConfig?.message || '',
priority: selectedConfig?.priority || '', priority: selectedConfig?.priority || '',
@ -312,7 +313,7 @@ function CreateAlertChannels({
const prepareEmailRequest = useCallback( const prepareEmailRequest = useCallback(
() => ({ () => ({
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
to: selectedConfig?.to || '', to: selectedConfig?.to || '',
html: selectedConfig?.html || '', html: selectedConfig?.html || '',
headers: selectedConfig?.headers || {}, headers: selectedConfig?.headers || {},
@ -350,7 +351,7 @@ function CreateAlertChannels({
() => ({ () => ({
webhook_url: selectedConfig?.webhook_url || '', webhook_url: selectedConfig?.webhook_url || '',
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
text: selectedConfig?.text || '', text: selectedConfig?.text || '',
title: selectedConfig?.title || '', title: selectedConfig?.title || '',
}), }),

View File

@ -72,7 +72,7 @@ function EditAlertChannels({
api_url: selectedConfig?.api_url || '', api_url: selectedConfig?.api_url || '',
channel: selectedConfig?.channel || '', channel: selectedConfig?.channel || '',
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
text: selectedConfig?.text || '', text: selectedConfig?.text || '',
title: selectedConfig?.title || '', title: selectedConfig?.title || '',
id, id,
@ -115,7 +115,7 @@ function EditAlertChannels({
return { return {
api_url: selectedConfig?.api_url || '', api_url: selectedConfig?.api_url || '',
name: name || '', name: name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
username, username,
password, password,
id, id,
@ -284,7 +284,7 @@ function EditAlertChannels({
() => ({ () => ({
webhook_url: selectedConfig?.webhook_url || '', webhook_url: selectedConfig?.webhook_url || '',
name: selectedConfig?.name || '', name: selectedConfig?.name || '',
send_resolved: true, send_resolved: selectedConfig?.send_resolved || false,
text: selectedConfig?.text || '', text: selectedConfig?.text || '',
title: selectedConfig?.title || '', title: selectedConfig?.title || '',
id, id,

View File

@ -1,4 +1,4 @@
import { Form, FormInstance, Input, Select, Typography } from 'antd'; import { Form, FormInstance, Input, Select, Switch, Typography } from 'antd';
import { Store } from 'antd/lib/form/interface'; import { Store } from 'antd/lib/form/interface';
import UpgradePrompt from 'components/Upgrade/UpgradePrompt'; import UpgradePrompt from 'components/Upgrade/UpgradePrompt';
import { FeatureKeys } from 'constants/features'; import { FeatureKeys } from 'constants/features';
@ -95,6 +95,22 @@ function FormAlertChannels({
/> />
</Form.Item> </Form.Item>
<Form.Item
label={t('field_send_resolved')}
labelAlign="left"
name="send_resolved"
>
<Switch
defaultChecked={initialValue?.send_resolved}
onChange={(value): void => {
setSelectedConfig((state) => ({
...state,
send_resolved: value,
}));
}}
/>
</Form.Item>
<Form.Item label={t('field_channel_type')} labelAlign="left" name="type"> <Form.Item label={t('field_channel_type')} labelAlign="left" name="type">
<Select disabled={editing} onChange={onTypeChangeHandler} value={type}> <Select disabled={editing} onChange={onTypeChangeHandler} value={type}>
<Select.Option value="slack" key="slack"> <Select.Option value="slack" key="slack">