Skip to content

Commit 4739b80

Browse files
authored
Merge pull request #1893 from elementary-data/ele-4262-subscribers-in-the-grouped-alerts
Ele 4262 subscribers in the grouped alerts
2 parents 77e174e + ee7f319 commit 4739b80

58 files changed

Lines changed: 1273 additions & 949 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

elementary/monitor/alerts/alert_messages/builder.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from datetime import timedelta
22
from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union
33

4+
from pydantic import BaseModel
5+
46
from elementary.messages.block_builders import (
57
BoldTextLineBlock,
68
BulletListBlock,
@@ -26,7 +28,6 @@
2628
LineBlock,
2729
LinesBlock,
2830
LinkBlock,
29-
MentionBlock,
3031
TableBlock,
3132
TextBlock,
3233
TextStyle,
@@ -53,7 +54,14 @@
5354
]
5455

5556

57+
class MessageBuilderConfig(BaseModel):
58+
alert_groups_subscribers: bool = False
59+
60+
5661
class AlertMessageBuilder:
62+
def __init__(self, config: Optional[MessageBuilderConfig] = None):
63+
self.config = config or MessageBuilderConfig()
64+
5765
STATUS_DISPLAYS: Dict[str, str] = {
5866
"fail": "Failure",
5967
"warn": "Warning",
@@ -415,13 +423,19 @@ def _get_alert_list_line(
415423
]
416424
if owners := list(set(alert.owners)):
417425
inlines.append(TextBlock(text="-"))
418-
if len(owners) == 1:
419-
inlines.append(TextBlock(text="Owner:"))
420-
inlines.append(MentionBlock(user=owners.pop()))
421-
else:
422-
owners.sort()
423-
inlines.append(TextBlock(text="Owners:"))
424-
inlines.append(MentionLineBlock(*owners))
426+
owners.sort()
427+
inlines.append(TextBlock(text="Owners:"))
428+
inlines.append(MentionLineBlock(*owners))
429+
430+
if self.config.alert_groups_subscribers:
431+
if subscribers := list(set(alert.subscribers)):
432+
if owners:
433+
inlines.append(TextBlock(text="|"))
434+
else:
435+
inlines.append(TextBlock(text="-"))
436+
subscribers.sort()
437+
inlines.append(TextBlock(text="Subscribers:"))
438+
inlines.append(MentionLineBlock(*subscribers))
425439

426440
if report_link := alert.get_report_link():
427441
inlines.append(TextBlock(text="-"))
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
packages:
22
- package: dbt-labs/dbt_utils
33
version: 0.8.6
4-
- git: https://github.com/elementary-data/dbt-data-reliability.git
5-
revision: cc226bf865f922d6c4c5c6d65b2a142540e222f8
6-
sha1_hash: a838112140dab39e15226f415d0b0bcbfbe311ff
4+
- package: elementary-data/elementary
5+
version: 0.18.2
6+
sha1_hash: 0e32f8128c729542efc1b5c8e2c4fbe6f6534369

tests/unit/alerts/alert_messages/fixtures/adaptive_card/alerts_group_model-errors-False_test-failures-False_test-warnings-True_test-errors-True_link-False_env-False.json renamed to tests/unit/alerts/alert_messages/fixtures/adaptive_card/alerts_group_model-errors-False_test-failures-False_test-warnings-True_test-errors-True_link-False_env-False_subscribers-True.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,37 +41,37 @@
4141
},
4242
{
4343
"type": "TextBlock",
44-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_2** - Owner: owner1",
44+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_2** - Owners: owner1 | Subscribers: subscriber1",
4545
"wrap": true
4646
},
4747
{
4848
"type": "TextBlock",
49-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2",
49+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2 | Subscribers: subscriber1, subscriber2",
5050
"wrap": true
5151
},
5252
{
5353
"type": "TextBlock",
54-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_4**",
54+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_4** - Subscribers: subscriber1, subscriber2",
5555
"wrap": true
5656
},
5757
{
5858
"type": "TextBlock",
59-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_5** - Owner: owner1",
59+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_5** - Owners: owner1",
6060
"wrap": true
6161
},
6262
{
6363
"type": "TextBlock",
64-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2",
64+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2 | Subscribers: subscriber1",
6565
"wrap": true
6666
},
6767
{
6868
"type": "TextBlock",
69-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_7**",
69+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_7** - Subscribers: subscriber1, subscriber2",
7070
"wrap": true
7171
},
7272
{
7373
"type": "TextBlock",
74-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_8** - Owner: owner1",
74+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_8** - Owners: owner1 | Subscribers: subscriber1, subscriber2",
7575
"wrap": true
7676
},
7777
{
@@ -81,7 +81,7 @@
8181
},
8282
{
8383
"type": "TextBlock",
84-
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_10**",
84+
"text": "\u26a0\ufe0f **\"test_short_name\" test failed on test_table_10** - Subscribers: subscriber1",
8585
"wrap": true
8686
}
8787
]
@@ -102,37 +102,37 @@
102102
},
103103
{
104104
"type": "TextBlock",
105-
"text": "\u2757 **\"test_short_name\" test failed on test_table_2** - Owner: owner1",
105+
"text": "\u2757 **\"test_short_name\" test failed on test_table_2** - Owners: owner1 | Subscribers: subscriber1",
106106
"wrap": true
107107
},
108108
{
109109
"type": "TextBlock",
110-
"text": "\u2757 **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2",
110+
"text": "\u2757 **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2 | Subscribers: subscriber1, subscriber2",
111111
"wrap": true
112112
},
113113
{
114114
"type": "TextBlock",
115-
"text": "\u2757 **\"test_short_name\" test failed on test_table_4**",
115+
"text": "\u2757 **\"test_short_name\" test failed on test_table_4** - Subscribers: subscriber1, subscriber2",
116116
"wrap": true
117117
},
118118
{
119119
"type": "TextBlock",
120-
"text": "\u2757 **\"test_short_name\" test failed on test_table_5** - Owner: owner1",
120+
"text": "\u2757 **\"test_short_name\" test failed on test_table_5** - Owners: owner1",
121121
"wrap": true
122122
},
123123
{
124124
"type": "TextBlock",
125-
"text": "\u2757 **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2",
125+
"text": "\u2757 **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2 | Subscribers: subscriber1",
126126
"wrap": true
127127
},
128128
{
129129
"type": "TextBlock",
130-
"text": "\u2757 **\"test_short_name\" test failed on test_table_7**",
130+
"text": "\u2757 **\"test_short_name\" test failed on test_table_7** - Subscribers: subscriber1, subscriber2",
131131
"wrap": true
132132
},
133133
{
134134
"type": "TextBlock",
135-
"text": "\u2757 **\"test_short_name\" test failed on test_table_8** - Owner: owner1",
135+
"text": "\u2757 **\"test_short_name\" test failed on test_table_8** - Owners: owner1 | Subscribers: subscriber1, subscriber2",
136136
"wrap": true
137137
},
138138
{
@@ -142,7 +142,7 @@
142142
},
143143
{
144144
"type": "TextBlock",
145-
"text": "\u2757 **\"test_short_name\" test failed on test_table_10**",
145+
"text": "\u2757 **\"test_short_name\" test failed on test_table_10** - Subscribers: subscriber1",
146146
"wrap": true
147147
}
148148
]

tests/unit/alerts/alert_messages/fixtures/adaptive_card/alerts_group_model-errors-False_test-failures-True_test-warnings-False_test-errors-False_link-False_env-False.json renamed to tests/unit/alerts/alert_messages/fixtures/adaptive_card/alerts_group_model-errors-False_test-failures-True_test-warnings-False_test-errors-False_link-False_env-False_subscribers-True.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,37 +41,37 @@
4141
},
4242
{
4343
"type": "TextBlock",
44-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_2** - Owner: owner1",
44+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_2** - Owners: owner1 | Subscribers: subscriber1",
4545
"wrap": true
4646
},
4747
{
4848
"type": "TextBlock",
49-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2",
49+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2 | Subscribers: subscriber1, subscriber2",
5050
"wrap": true
5151
},
5252
{
5353
"type": "TextBlock",
54-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_4**",
54+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_4** - Subscribers: subscriber1, subscriber2",
5555
"wrap": true
5656
},
5757
{
5858
"type": "TextBlock",
59-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_5** - Owner: owner1",
59+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_5** - Owners: owner1",
6060
"wrap": true
6161
},
6262
{
6363
"type": "TextBlock",
64-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2",
64+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2 | Subscribers: subscriber1",
6565
"wrap": true
6666
},
6767
{
6868
"type": "TextBlock",
69-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_7**",
69+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_7** - Subscribers: subscriber1, subscriber2",
7070
"wrap": true
7171
},
7272
{
7373
"type": "TextBlock",
74-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_8** - Owner: owner1",
74+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_8** - Owners: owner1 | Subscribers: subscriber1, subscriber2",
7575
"wrap": true
7676
},
7777
{
@@ -81,7 +81,7 @@
8181
},
8282
{
8383
"type": "TextBlock",
84-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_10**",
84+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_10** - Subscribers: subscriber1",
8585
"wrap": true
8686
}
8787
]

tests/unit/alerts/alert_messages/fixtures/adaptive_card/alerts_group_model-errors-False_test-failures-True_test-warnings-False_test-errors-True_link-False_env-False.json renamed to tests/unit/alerts/alert_messages/fixtures/adaptive_card/alerts_group_model-errors-False_test-failures-True_test-warnings-False_test-errors-True_link-False_env-False_subscribers-True.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,37 +41,37 @@
4141
},
4242
{
4343
"type": "TextBlock",
44-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_2** - Owner: owner1",
44+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_2** - Owners: owner1 | Subscribers: subscriber1",
4545
"wrap": true
4646
},
4747
{
4848
"type": "TextBlock",
49-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2",
49+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2 | Subscribers: subscriber1, subscriber2",
5050
"wrap": true
5151
},
5252
{
5353
"type": "TextBlock",
54-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_4**",
54+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_4** - Subscribers: subscriber1, subscriber2",
5555
"wrap": true
5656
},
5757
{
5858
"type": "TextBlock",
59-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_5** - Owner: owner1",
59+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_5** - Owners: owner1",
6060
"wrap": true
6161
},
6262
{
6363
"type": "TextBlock",
64-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2",
64+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2 | Subscribers: subscriber1",
6565
"wrap": true
6666
},
6767
{
6868
"type": "TextBlock",
69-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_7**",
69+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_7** - Subscribers: subscriber1, subscriber2",
7070
"wrap": true
7171
},
7272
{
7373
"type": "TextBlock",
74-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_8** - Owner: owner1",
74+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_8** - Owners: owner1 | Subscribers: subscriber1, subscriber2",
7575
"wrap": true
7676
},
7777
{
@@ -81,7 +81,7 @@
8181
},
8282
{
8383
"type": "TextBlock",
84-
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_10**",
84+
"text": "\ud83d\udd3a **\"test_short_name\" test failed on test_table_10** - Subscribers: subscriber1",
8585
"wrap": true
8686
}
8787
]
@@ -102,37 +102,37 @@
102102
},
103103
{
104104
"type": "TextBlock",
105-
"text": "\u2757 **\"test_short_name\" test failed on test_table_2** - Owner: owner1",
105+
"text": "\u2757 **\"test_short_name\" test failed on test_table_2** - Owners: owner1 | Subscribers: subscriber1",
106106
"wrap": true
107107
},
108108
{
109109
"type": "TextBlock",
110-
"text": "\u2757 **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2",
110+
"text": "\u2757 **\"test_short_name\" test failed on test_table_3** - Owners: owner1, owner2 | Subscribers: subscriber1, subscriber2",
111111
"wrap": true
112112
},
113113
{
114114
"type": "TextBlock",
115-
"text": "\u2757 **\"test_short_name\" test failed on test_table_4**",
115+
"text": "\u2757 **\"test_short_name\" test failed on test_table_4** - Subscribers: subscriber1, subscriber2",
116116
"wrap": true
117117
},
118118
{
119119
"type": "TextBlock",
120-
"text": "\u2757 **\"test_short_name\" test failed on test_table_5** - Owner: owner1",
120+
"text": "\u2757 **\"test_short_name\" test failed on test_table_5** - Owners: owner1",
121121
"wrap": true
122122
},
123123
{
124124
"type": "TextBlock",
125-
"text": "\u2757 **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2",
125+
"text": "\u2757 **\"test_short_name\" test failed on test_table_6** - Owners: owner1, owner2 | Subscribers: subscriber1",
126126
"wrap": true
127127
},
128128
{
129129
"type": "TextBlock",
130-
"text": "\u2757 **\"test_short_name\" test failed on test_table_7**",
130+
"text": "\u2757 **\"test_short_name\" test failed on test_table_7** - Subscribers: subscriber1, subscriber2",
131131
"wrap": true
132132
},
133133
{
134134
"type": "TextBlock",
135-
"text": "\u2757 **\"test_short_name\" test failed on test_table_8** - Owner: owner1",
135+
"text": "\u2757 **\"test_short_name\" test failed on test_table_8** - Owners: owner1 | Subscribers: subscriber1, subscriber2",
136136
"wrap": true
137137
},
138138
{
@@ -142,7 +142,7 @@
142142
},
143143
{
144144
"type": "TextBlock",
145-
"text": "\u2757 **\"test_short_name\" test failed on test_table_10**",
145+
"text": "\u2757 **\"test_short_name\" test failed on test_table_10** - Subscribers: subscriber1",
146146
"wrap": true
147147
}
148148
]

0 commit comments

Comments
 (0)