diff --git a/email.html b/email.html index 7f53648..4207ca5 100644 --- a/email.html +++ b/email.html @@ -17,7 +17,7 @@

Errors detected:

-

Model: ut aliqua ut ipsum

+

Model: do elit

@@ -30,16 +30,16 @@ - - - - + + + +
TAG_node5:tag_87_LISTENNING_STOPPEDdolor_elit_aliqua2025-07-25 16:50:48.925421+00:00sit elit ipsum labore incididunt magna do et sit incididuntREPORT_PARTITION_MANAGERlorem_adipiscing2025-07-28 20:05:38.650661+00:00incididunt dolor lorem incididunt elit incididunt dolor consectetur ipsum ut
-

Model: elit dolore

+

Model: dolor magna

@@ -52,16 +52,16 @@ - - - - + + + +
OPC_LISTENNING_BACK__server_10magna_magna_et2025-07-25 16:50:48.925478+00:00aliqua eiusmod ut eiusmod ut et ipsumREPORT_PARTITION_MANAGERtempor_dolore_eiusmod2025-07-28 20:05:38.650910+00:00ipsum amet ipsum aliqua et eiusmod
-

Model: lorem lorem ipsum amet

+

Model: labore sit lorem

@@ -74,10 +74,10 @@ - - - - + + + + @@ -85,7 +85,7 @@

Warnings detected:

-

Model: amet eiusmod dolor ipsum

+

Model: incididunt adipiscing elit sit

TAG_node8:tag_11_LISTENNING_STOPPEDdo_sit2025-07-25 16:50:48.925506+00:00labore do adipiscing adipiscing incididunt eiusmodOPC_CONNECTION_RETRY__server_6dolor_labore_lorem2025-07-28 20:05:38.650949+00:00et adipiscing ipsum ut aliqua ut adipiscing aliqua amet
@@ -98,16 +98,16 @@ - - - - + + + +
REPORT_PARTITION_MANAGERadipiscing_amet_ut_et2025-07-25 16:50:48.925368+00:00eiusmod et amet sit lorem incididuntADIPISCING_AMET_IPSUMeiusmod_aliqua_incididunt2025-07-28 20:05:38.650621+00:00magna incididunt dolore sed eiusmod sit incididunt ut
-

Model: sit et labore

+

Model: do adipiscing et

@@ -120,16 +120,16 @@ - - - - + + + +
SIT_CONSECTETUR_EIUSMODadipiscing_elit_ut2025-07-25 16:50:48.925392+00:00magna do eiusmod et labore elitTAG_node46:tag_73_LISTENNING_STOPPEDamet_dolor2025-07-28 20:05:38.650706+00:00dolore do et consectetur adipiscing do magna eiusmod eiusmod
-

Model: consectetur labore do consectetur

+

Model: lorem dolore amet

@@ -142,16 +142,16 @@ - - - - + + + +
SED_SIT_DOLOR_CONSECTETURdolor_dolore_ut2025-07-25 16:50:48.925435+00:00magna sed incididunt dolor temporTAG_node13:tag_59_LISTENNING_STOPPEDipsum_tempor_ipsum2025-07-28 20:05:38.650785+00:00et sed adipiscing tempor dolor magna do lorem
-

Model: et sed ut et

+

Model: eiusmod sed

@@ -164,10 +164,10 @@ - - - - + + + + @@ -175,7 +175,7 @@

Infos detected:

-

Model: eiusmod eiusmod

+

Model: et sed

UT_UT_LABOREsit_do2025-07-25 16:50:48.925492+00:00do sed sed elit do eiusmodOPC_SUBSCRIPTION__server_2do_ipsum2025-07-28 20:05:38.650826+00:00eiusmod et consectetur do dolore dolor sed amet
@@ -188,16 +188,16 @@ - - - - + + + +
OPC_CONNECTION_RETRY__server_2labore_sit_do2025-07-25 16:50:48.925407+00:00magna et ipsum amet dolore adipiscing adipiscing doOPC_LISTENNING_STOPPED__server_6labore_do_ipsum_ipsum2025-07-28 20:05:38.650570+00:00tempor dolore eiusmod sit sit sed elit
-

Model: adipiscing consectetur

+

Model: dolore sit

@@ -211,15 +211,15 @@ - - - + + +
REPORT_PARTITION_MANAGERincididunt_aliqua_ipsum_ut2025-07-25 16:50:48.925447+00:00labore magna adipiscing tempor elit et et magna elit loremet_lorem_incididunt_ipsum2025-07-28 20:05:38.650742+00:00adipiscing magna adipiscing adipiscing sit tempor
-

Model: et amet

+

Model: adipiscing do

@@ -232,10 +232,10 @@ - - - - + + + + diff --git a/notification_generator.ipynb b/notification_generator.ipynb index 197e89b..19a64c4 100644 --- a/notification_generator.ipynb +++ b/notification_generator.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 13, "id": "1786cbf0", "metadata": {}, "outputs": [ @@ -86,18 +86,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 14, "id": "c1467b72", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'WARNING': {'section_name': 'Warnings detected:', 'models': {'amet eiusmod dolor ipsum': {'model_name': 'amet eiusmod dolor ipsum', 'events': [{'project': 'sientia-laborious', 'pipeline': 'ut_eiusmod_do', 'trigger': 'aliqua_magna_labore_magna_do_ut', 'model_name': 'amet eiusmod dolor ipsum', 'model_id': '26', 'block': 'adipiscing_amet_ut_et', 'level': 'WARNING', 'message': 'eiusmod et amet sit lorem incididunt', 'attachment_content': 'sed et ipsum aliqua et consectetur incididunt aliqua incididunt aliqua eiusmod adipiscing incididunt sed et ut ipsum aliqua elit ut', 'notification_id': 'REPORT_PARTITION_MANAGER', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925368, tzinfo=datetime.timezone.utc)}]}, 'sit et labore': {'model_name': 'sit et labore', 'events': [{'project': 'sientia-laborious', 'pipeline': 'tempor_eiusmod_amet_amet', 'trigger': 'labore_elit_adipiscing_adipiscing', 'model_name': 'sit et labore', 'model_id': '8', 'block': 'adipiscing_elit_ut', 'level': 'WARNING', 'message': 'magna do eiusmod et labore elit', 'attachment_content': 'incididunt incididunt do adipiscing consectetur adipiscing ipsum incididunt et sed sed magna dolore ut ipsum amet dolor sed tempor lorem incididunt do labore elit aliqua magna eiusmod dolor', 'notification_id': 'SIT_CONSECTETUR_EIUSMOD', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925392, tzinfo=datetime.timezone.utc)}]}, 'consectetur labore do consectetur': {'model_name': 'consectetur labore do consectetur', 'events': [{'project': 'sientia-laborious', 'pipeline': 'et_consectetur_ut', 'trigger': 'labore_aliqua_tempor_amet', 'model_name': 'consectetur labore do consectetur', 'model_id': '50', 'block': 'dolor_dolore_ut', 'level': 'WARNING', 'message': 'magna sed incididunt dolor tempor', 'attachment_content': 'lorem labore tempor amet adipiscing lorem dolor aliqua do et incididunt adipiscing labore aliqua dolor elit aliqua eiusmod sed aliqua aliqua consectetur incididunt sed ipsum eiusmod labore do', 'notification_id': 'SED_SIT_DOLOR_CONSECTETUR', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925435, tzinfo=datetime.timezone.utc)}]}, 'et sed ut et': {'model_name': 'et sed ut et', 'events': [{'project': 'sientia-laborious', 'pipeline': 'eiusmod_consectetur_eiusmod_dolor', 'trigger': 'aliqua_sit_eiusmod', 'model_name': 'et sed ut et', 'model_id': '60', 'block': 'sit_do', 'level': 'WARNING', 'message': 'do sed sed elit do eiusmod', 'attachment_content': 'sit labore magna labore lorem eiusmod aliqua magna et eiusmod magna labore et amet adipiscing consectetur sit ut dolore tempor tempor amet ut', 'notification_id': 'UT_UT_LABORE', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925492, tzinfo=datetime.timezone.utc)}]}}}, 'INFO': {'section_name': 'Infos detected:', 'models': {'eiusmod eiusmod': {'model_name': 'eiusmod eiusmod', 'events': [{'project': 'sientia-laborious', 'pipeline': 'do_et_et_dolor', 'trigger': 'adipiscing_dolor_dolore_adipiscing_tempor', 'model_name': 'eiusmod eiusmod', 'model_id': '70', 'block': 'labore_sit_do', 'level': 'INFO', 'message': 'magna et ipsum amet dolore adipiscing adipiscing do', 'attachment_content': 'aliqua amet lorem amet elit tempor amet aliqua do aliqua ut dolore sed eiusmod consectetur tempor dolor sit magna eiusmod consectetur ipsum', 'notification_id': 'OPC_CONNECTION_RETRY__server_2', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925407, tzinfo=datetime.timezone.utc)}]}, 'adipiscing consectetur': {'model_name': 'adipiscing consectetur', 'events': [{'project': 'sientia-laborious', 'pipeline': 'sit_do_aliqua', 'trigger': 'aliqua_amet_magna_ipsum_lorem', 'model_name': 'adipiscing consectetur', 'model_id': '48', 'block': 'incididunt_aliqua_ipsum_ut', 'level': 'INFO', 'message': 'labore magna adipiscing tempor elit et et magna elit lorem', 'attachment_content': 'magna labore dolor ipsum dolor lorem sed magna eiusmod ipsum do aliqua magna labore et elit consectetur et adipiscing lorem incididunt lorem', 'notification_id': 'REPORT_PARTITION_MANAGER', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925447, tzinfo=datetime.timezone.utc)}]}, 'et amet': {'model_name': 'et amet', 'events': [{'project': 'sientia-laborious', 'pipeline': 'consectetur_labore_magna', 'trigger': 'eiusmod_incididunt_consectetur_tempor', 'model_name': 'et amet', 'model_id': '31', 'block': 'sed_elit_ut_do', 'level': 'INFO', 'message': 'dolor et adipiscing adipiscing dolore ipsum ipsum aliqua et elit', 'attachment_content': 'tempor dolore ipsum ut ut et dolor eiusmod do magna magna magna et tempor labore labore dolor labore eiusmod do dolor incididunt lorem dolore ipsum ipsum aliqua sed incididunt', 'notification_id': 'OPC_LISTENNING_BACK__server_2', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925462, tzinfo=datetime.timezone.utc)}]}}}, 'ERROR': {'section_name': 'Errors detected:', 'models': {'ut aliqua ut ipsum': {'model_name': 'ut aliqua ut ipsum', 'events': [{'project': 'sientia-laborious', 'pipeline': 'sit_amet', 'trigger': 'aliqua_sit_consectetur_lorem_consectetur', 'model_name': 'ut aliqua ut ipsum', 'model_id': '80', 'block': 'dolor_elit_aliqua', 'level': 'ERROR', 'message': 'sit elit ipsum labore incididunt magna do et sit incididunt', 'attachment_content': 'amet ut et ut sed ipsum aliqua elit incididunt sed dolore dolore ipsum sed elit sit adipiscing incididunt elit labore do magna et consectetur aliqua', 'notification_id': 'TAG_node5:tag_87_LISTENNING_STOPPED', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925421, tzinfo=datetime.timezone.utc)}]}, 'elit dolore': {'model_name': 'elit dolore', 'events': [{'project': 'sientia-laborious', 'pipeline': 'sed_et_tempor_labore', 'trigger': 'aliqua_tempor_sit_lorem_amet_et', 'model_name': 'elit dolore', 'model_id': '20', 'block': 'magna_magna_et', 'level': 'ERROR', 'message': 'aliqua eiusmod ut eiusmod ut et ipsum', 'attachment_content': 'labore do dolore dolore adipiscing amet tempor eiusmod labore elit consectetur incididunt dolor et elit eiusmod ut ut aliqua incididunt', 'notification_id': 'OPC_LISTENNING_BACK__server_10', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925478, tzinfo=datetime.timezone.utc)}]}, 'lorem lorem ipsum amet': {'model_name': 'lorem lorem ipsum amet', 'events': [{'project': 'sientia-laborious', 'pipeline': 'amet_eiusmod_eiusmod', 'trigger': 'magna_aliqua_dolore_incididunt_do_do', 'model_name': 'lorem lorem ipsum amet', 'model_id': '47', 'block': 'do_sit', 'level': 'ERROR', 'message': 'labore do adipiscing adipiscing incididunt eiusmod', 'attachment_content': 'sit amet dolor magna et sit adipiscing sed consectetur labore sit ut adipiscing magna amet dolor lorem dolore eiusmod sed dolor dolor sit consectetur sit aliqua dolore tempor', 'notification_id': 'TAG_node8:tag_11_LISTENNING_STOPPED', 'timestamp': datetime.datetime(2025, 7, 25, 16, 50, 48, 925506, tzinfo=datetime.timezone.utc)}]}}}}\n" - ] - } - ], + "outputs": [], "source": [ "from orchestrator.utils.email_builder import EmailBuilder\n", "from unittest.mock import MagicMock\n", @@ -113,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 15, "id": "ffd7be77", "metadata": {}, "outputs": [ @@ -121,118 +113,118 @@ "data": { "text/plain": [ "[{'project': 'sientia-laborious',\n", - " 'pipeline': 'lorem_sed_ut',\n", - " 'trigger': 'dolore_elit_lorem',\n", - " 'model_name': 'lorem tempor',\n", - " 'model_id': '71',\n", - " 'block': 'aliqua_aliqua_et',\n", - " 'level': 'ERROR',\n", - " 'message': 'tempor eiusmod dolor eiusmod sed amet labore et magna',\n", - " 'attachment_content': 'sed amet incididunt et amet lorem lorem ut adipiscing magna incididunt sit aliqua ut dolore dolore ipsum aliqua amet labore dolor amet et elit dolore dolor consectetur',\n", - " 'notification_id': 'OPC_LISTENNING_BACK__server_1',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147390, tzinfo=datetime.timezone.utc)},\n", - " {'project': 'sientia-laborious',\n", - " 'pipeline': 'et_do_eiusmod_adipiscing',\n", - " 'trigger': 'consectetur_magna_elit',\n", - " 'model_name': 'elit incididunt elit',\n", - " 'model_id': '85',\n", - " 'block': 'amet_elit_adipiscing',\n", - " 'level': 'WARNING',\n", - " 'message': 'do labore consectetur lorem lorem sit do aliqua magna magna',\n", - " 'attachment_content': 'aliqua tempor aliqua adipiscing sit elit ut magna sit ipsum magna tempor do incididunt sit magna sit consectetur amet elit lorem ipsum incididunt ipsum',\n", - " 'notification_id': 'ADIPISCING_DO_DO_DOLOR',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147411, tzinfo=datetime.timezone.utc)},\n", - " {'project': 'sientia-laborious',\n", - " 'pipeline': 'magna_tempor',\n", - " 'trigger': 'et_elit_labore_ut_eiusmod',\n", - " 'model_name': 'sit ipsum et eiusmod',\n", - " 'model_id': '14',\n", - " 'block': 'incididunt_do',\n", + " 'pipeline': 'magna_incididunt',\n", + " 'trigger': 'dolor_dolor_aliqua_ipsum_do_magna',\n", + " 'model_name': 'et sed',\n", + " 'model_id': '53',\n", + " 'block': 'labore_do_ipsum_ipsum',\n", " 'level': 'INFO',\n", - " 'message': 'sit elit eiusmod consectetur magna labore',\n", - " 'attachment_content': 'amet sit et do dolore eiusmod incididunt sed dolor dolor ipsum tempor lorem dolore sed amet ipsum ut lorem aliqua',\n", - " 'notification_id': 'IPSUM_ADIPISCING_IPSUM_MAGNA_LABORE',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147426, tzinfo=datetime.timezone.utc)},\n", + " 'message': 'tempor dolore eiusmod sit sit sed elit',\n", + " 'attachment_content': 'sit labore sed amet sit magna ut ut labore do ut adipiscing amet incididunt magna do sit eiusmod dolor do sit incididunt amet incididunt consectetur elit et ipsum elit amet',\n", + " 'notification_id': 'OPC_LISTENNING_STOPPED__server_6',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650570, tzinfo=datetime.timezone.utc)},\n", " {'project': 'sientia-laborious',\n", - " 'pipeline': 'adipiscing_adipiscing_adipiscing',\n", - " 'trigger': 'elit_dolor_sit_et',\n", - " 'model_name': 'sit adipiscing tempor sed',\n", - " 'model_id': '46',\n", - " 'block': 'tempor_tempor_sit',\n", + " 'pipeline': 'adipiscing_do',\n", + " 'trigger': 'sit_lorem_dolore',\n", + " 'model_name': 'incididunt adipiscing elit sit',\n", + " 'model_id': '64',\n", + " 'block': 'eiusmod_aliqua_incididunt',\n", " 'level': 'WARNING',\n", - " 'message': 'tempor adipiscing tempor labore dolore tempor elit',\n", - " 'attachment_content': 'elit sit dolore consectetur ut ipsum ipsum aliqua incididunt elit eiusmod labore sed eiusmod eiusmod aliqua eiusmod eiusmod labore magna incididunt consectetur ipsum et aliqua sit adipiscing labore do',\n", - " 'notification_id': 'TAG_node57:tag_97_LISTENNING_STOPPED',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147440, tzinfo=datetime.timezone.utc)},\n", + " 'message': 'magna incididunt dolore sed eiusmod sit incididunt ut',\n", + " 'attachment_content': 'incididunt incididunt adipiscing do ipsum tempor ut eiusmod sit tempor tempor aliqua aliqua dolor labore incididunt amet do sed tempor dolor labore',\n", + " 'notification_id': 'ADIPISCING_AMET_IPSUM',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650621, tzinfo=datetime.timezone.utc)},\n", " {'project': 'sientia-laborious',\n", - " 'pipeline': 'eiusmod_amet_aliqua',\n", - " 'trigger': 'ipsum_lorem_et',\n", - " 'model_name': 'consectetur adipiscing',\n", - " 'model_id': '72',\n", - " 'block': 'tempor_et_adipiscing_sed',\n", + " 'pipeline': 'sed_aliqua',\n", + " 'trigger': 'aliqua_adipiscing_adipiscing_sed_do_sit',\n", + " 'model_name': 'do elit',\n", + " 'model_id': '73',\n", + " 'block': 'lorem_adipiscing',\n", " 'level': 'ERROR',\n", - " 'message': 'lorem ipsum do amet elit eiusmod elit lorem',\n", - " 'attachment_content': 'ipsum ut dolor eiusmod dolore elit consectetur ipsum dolor do sed dolor aliqua sit consectetur aliqua sit sit consectetur et incididunt adipiscing lorem do adipiscing',\n", + " 'message': 'incididunt dolor lorem incididunt elit incididunt dolor consectetur ipsum ut',\n", + " 'attachment_content': 'dolor ut do amet dolore dolor do eiusmod eiusmod incididunt aliqua et sed labore incididunt aliqua sed et tempor consectetur elit et consectetur do ipsum',\n", " 'notification_id': 'REPORT_PARTITION_MANAGER',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147453, tzinfo=datetime.timezone.utc)},\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650661, tzinfo=datetime.timezone.utc)},\n", " {'project': 'sientia-laborious',\n", - " 'pipeline': 'eiusmod_et_incididunt',\n", - " 'trigger': 'dolore_do_lorem_aliqua',\n", - " 'model_name': 'aliqua sed tempor ipsum',\n", - " 'model_id': '2',\n", - " 'block': 'et_elit_amet',\n", + " 'pipeline': 'dolore_et_aliqua_et',\n", + " 'trigger': 'adipiscing_amet_sit_do',\n", + " 'model_name': 'do adipiscing et',\n", + " 'model_id': '10',\n", + " 'block': 'amet_dolor',\n", " 'level': 'WARNING',\n", - " 'message': 'consectetur aliqua dolore amet eiusmod aliqua',\n", - " 'attachment_content': 'sit amet amet aliqua incididunt aliqua amet ipsum magna do adipiscing aliqua tempor magna dolor dolor labore et lorem consectetur dolore do ut adipiscing dolore',\n", - " 'notification_id': 'AMET_ELIT_ELIT_MAGNA_ALIQUA',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147482, tzinfo=datetime.timezone.utc)},\n", + " 'message': 'dolore do et consectetur adipiscing do magna eiusmod eiusmod',\n", + " 'attachment_content': 'sit adipiscing adipiscing consectetur magna sed magna adipiscing dolor incididunt et adipiscing adipiscing elit et labore tempor tempor adipiscing sit dolore sed dolore dolor labore sed',\n", + " 'notification_id': 'TAG_node46:tag_73_LISTENNING_STOPPED',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650706, tzinfo=datetime.timezone.utc)},\n", " {'project': 'sientia-laborious',\n", - " 'pipeline': 'amet_dolore',\n", - " 'trigger': 'labore_magna_labore',\n", - " 'model_name': 'dolor ut incididunt adipiscing',\n", - " 'model_id': '3',\n", - " 'block': 'dolor_sit',\n", - " 'level': 'WARNING',\n", - " 'message': 'ut ipsum sed consectetur eiusmod',\n", - " 'attachment_content': 'aliqua dolor magna magna sed et magna sit aliqua labore aliqua sed ipsum aliqua amet dolore ipsum aliqua consectetur adipiscing eiusmod',\n", + " 'pipeline': 'ipsum_lorem_sit_sit',\n", + " 'trigger': 'et_ut_sit_dolore',\n", + " 'model_name': 'dolore sit',\n", + " 'model_id': '58',\n", + " 'block': 'et_lorem_incididunt_ipsum',\n", + " 'level': 'INFO',\n", + " 'message': 'adipiscing magna adipiscing adipiscing sit tempor',\n", + " 'attachment_content': 'incididunt amet dolor incididunt dolore et lorem amet ut magna tempor amet do consectetur dolore magna elit aliqua eiusmod ipsum labore',\n", " 'notification_id': 'REPORT_PARTITION_MANAGER',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147494, tzinfo=datetime.timezone.utc)},\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650742, tzinfo=datetime.timezone.utc)},\n", " {'project': 'sientia-laborious',\n", - " 'pipeline': 'dolor_ipsum',\n", - " 'trigger': 'do_sed_et_dolore_elit',\n", - " 'model_name': 'adipiscing aliqua labore magna',\n", + " 'pipeline': 'dolor_sit_aliqua',\n", + " 'trigger': 'lorem_incididunt_labore',\n", + " 'model_name': 'lorem dolore amet',\n", + " 'model_id': '13',\n", + " 'block': 'ipsum_tempor_ipsum',\n", + " 'level': 'WARNING',\n", + " 'message': 'et sed adipiscing tempor dolor magna do lorem',\n", + " 'attachment_content': 'do incididunt dolore eiusmod adipiscing amet amet amet eiusmod lorem dolor labore labore ipsum dolore amet labore ipsum labore do amet',\n", + " 'notification_id': 'TAG_node13:tag_59_LISTENNING_STOPPED',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650785, tzinfo=datetime.timezone.utc)},\n", + " {'project': 'sientia-laborious',\n", + " 'pipeline': 'lorem_do_consectetur',\n", + " 'trigger': 'sit_aliqua_sit',\n", + " 'model_name': 'eiusmod sed',\n", + " 'model_id': '9',\n", + " 'block': 'do_ipsum',\n", + " 'level': 'WARNING',\n", + " 'message': 'eiusmod et consectetur do dolore dolor sed amet',\n", + " 'attachment_content': 'sed dolore dolore et et dolore dolor eiusmod aliqua adipiscing incididunt dolor lorem tempor consectetur dolor amet elit et aliqua lorem ipsum consectetur tempor tempor elit labore labore dolore',\n", + " 'notification_id': 'OPC_SUBSCRIPTION__server_2',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650826, tzinfo=datetime.timezone.utc)},\n", + " {'project': 'sientia-laborious',\n", + " 'pipeline': 'labore_elit_adipiscing',\n", + " 'trigger': 'dolore_incididunt_tempor_lorem_dolore',\n", + " 'model_name': 'adipiscing do',\n", + " 'model_id': '63',\n", + " 'block': 'tempor_elit',\n", + " 'level': 'INFO',\n", + " 'message': 'et do aliqua lorem incididunt',\n", + " 'attachment_content': 'ut eiusmod consectetur sit labore ut tempor et sit sit do incididunt incididunt sed eiusmod dolor adipiscing dolor ut sed amet labore amet amet sed et elit sed ipsum',\n", + " 'notification_id': 'TAG_node76:tag_73_LISTENNING_STOPPED',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650875, tzinfo=datetime.timezone.utc)},\n", + " {'project': 'sientia-laborious',\n", + " 'pipeline': 'ut_lorem_et',\n", + " 'trigger': 'labore_labore_ipsum_magna',\n", + " 'model_name': 'dolor magna',\n", " 'model_id': '74',\n", - " 'block': 'incididunt_dolore',\n", - " 'level': 'INFO',\n", - " 'message': 'amet do amet sed sit',\n", - " 'attachment_content': 'et sed labore adipiscing labore dolore amet tempor incididunt aliqua dolor labore tempor adipiscing incididunt consectetur magna tempor tempor aliqua ut sit magna dolore ipsum',\n", - " 'notification_id': 'REPORT_PARTITION_MANAGER',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147510, tzinfo=datetime.timezone.utc)},\n", - " {'project': 'sientia-laborious',\n", - " 'pipeline': 'magna_sed_ut_sit',\n", - " 'trigger': 'ut_dolore_consectetur_labore_incididunt',\n", - " 'model_name': 'aliqua et consectetur',\n", - " 'model_id': '15',\n", - " 'block': 'ipsum_et',\n", + " 'block': 'tempor_dolore_eiusmod',\n", " 'level': 'ERROR',\n", - " 'message': 'ut dolore ipsum magna tempor sed magna labore amet magna',\n", - " 'attachment_content': 'ipsum adipiscing et amet elit dolor ut aliqua consectetur ut do elit amet tempor incididunt eiusmod eiusmod dolore ipsum sit dolore adipiscing aliqua elit adipiscing labore sed eiusmod ut',\n", - " 'notification_id': 'LABORE_INCIDIDUNT_ADIPISCING_DO_LABORE',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147525, tzinfo=datetime.timezone.utc)},\n", + " 'message': 'ipsum amet ipsum aliqua et eiusmod',\n", + " 'attachment_content': 'incididunt dolore do sit sed ut sed sit magna sed amet elit elit consectetur dolor labore magna consectetur tempor magna',\n", + " 'notification_id': 'REPORT_PARTITION_MANAGER',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650910, tzinfo=datetime.timezone.utc)},\n", " {'project': 'sientia-laborious',\n", - " 'pipeline': 'lorem_adipiscing_lorem_incididunt',\n", - " 'trigger': 'adipiscing_magna_dolor_consectetur_elit',\n", - " 'model_name': 'dolor sit lorem',\n", - " 'model_id': '51',\n", - " 'block': 'dolor_ipsum',\n", - " 'level': 'INFO',\n", - " 'message': 'labore aliqua dolor eiusmod incididunt adipiscing tempor',\n", - " 'attachment_content': 'lorem magna dolore consectetur eiusmod sit dolor eiusmod ut do dolor labore eiusmod et dolore sit tempor consectetur ipsum adipiscing eiusmod dolore consectetur labore sit do',\n", - " 'notification_id': 'CONSECTETUR_MAGNA_AMET_LOREM_TEMPOR',\n", - " 'timestamp': datetime.datetime(2025, 7, 25, 15, 44, 24, 147539, tzinfo=datetime.timezone.utc)}]" + " 'pipeline': 'magna_sit_amet_sed',\n", + " 'trigger': 'ut_dolor_sed',\n", + " 'model_name': 'labore sit lorem',\n", + " 'model_id': '13',\n", + " 'block': 'dolor_labore_lorem',\n", + " 'level': 'ERROR',\n", + " 'message': 'et adipiscing ipsum ut aliqua ut adipiscing aliqua amet',\n", + " 'attachment_content': 'aliqua labore aliqua lorem labore aliqua sed sit magna ut do amet do eiusmod sit consectetur sed ipsum elit amet aliqua labore sit',\n", + " 'notification_id': 'OPC_CONNECTION_RETRY__server_6',\n", + " 'timestamp': datetime.datetime(2025, 7, 28, 20, 5, 38, 650949, tzinfo=datetime.timezone.utc)}]" ] }, - "execution_count": 5, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -243,17 +235,17 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 16, "id": "55aed216", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "InsertManyResult([ObjectId('68839c5572e2953521d60ada'), ObjectId('68839c5572e2953521d60adb'), ObjectId('68839c5572e2953521d60adc'), ObjectId('68839c5572e2953521d60add'), ObjectId('68839c5572e2953521d60ade'), ObjectId('68839c5572e2953521d60adf'), ObjectId('68839c5572e2953521d60ae0'), ObjectId('68839c5572e2953521d60ae1'), ObjectId('68839c5572e2953521d60ae2'), ObjectId('68839c5572e2953521d60ae3')], acknowledged=True)" + "InsertManyResult([ObjectId('6887d812645b7515e8402983'), ObjectId('6887d812645b7515e8402984'), ObjectId('6887d812645b7515e8402985'), ObjectId('6887d812645b7515e8402986'), ObjectId('6887d812645b7515e8402987'), ObjectId('6887d812645b7515e8402988'), ObjectId('6887d812645b7515e8402989'), ObjectId('6887d812645b7515e840298a'), ObjectId('6887d812645b7515e840298b'), ObjectId('6887d812645b7515e840298c')], acknowledged=True)" ] }, - "execution_count": 6, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } diff --git a/orchestrator/activities/activities.py b/orchestrator/activities/activities.py index 9ab17e3..2bf0388 100644 --- a/orchestrator/activities/activities.py +++ b/orchestrator/activities/activities.py @@ -73,9 +73,9 @@ class Activities( # Couchbase, Postgres.__init__(self, host=postgres_config['host'], port=postgres_config['port'], - user=postgres_config['username'], + user=postgres_config['user'], password=postgres_config['password'], - dbname=postgres_config['database_name'], + dbname=postgres_config['dbname'], min_connections=postgres_config['min_connections'], max_connections=postgres_config['max_connections'], logger=logger, diff --git a/orchestrator/activities/email.py b/orchestrator/activities/email.py index 4f95817..b21321d 100644 --- a/orchestrator/activities/email.py +++ b/orchestrator/activities/email.py @@ -39,7 +39,7 @@ class Email(BaseActivity): notification_handler=notification_handler) @activity.defn(name="build_email_html") - async def build_email_html(self, input_data: dict[str, Any]) -> str: + async def build_email_html(self, input_data: dict[str, Any]) -> dict[str, Any]: """ Builds the email html for each receiver group. input_data: diff --git a/orchestrator/activities/slot_manager.py b/orchestrator/activities/slot_manager.py index eb3554f..40ef29a 100644 --- a/orchestrator/activities/slot_manager.py +++ b/orchestrator/activities/slot_manager.py @@ -318,7 +318,7 @@ class SlotManager(Redis): return receiver_groups @activity.defn(name="store_notification_cache") - async def store_notification_cache(self, input_data: dict[str, Any]) -> dict[str, Any]: + async def store_notification_cache(self, input_data: dict[str, Any]) -> None: """ Store notification cache """ @@ -335,5 +335,3 @@ class SlotManager(Redis): if status == 'sent': key = f"{row['schedule']}:{row['notification_id']}" self.set(key, now, ttl=sent_ttl) - - return log_report diff --git a/orchestrator/utils/email_builder.py b/orchestrator/utils/email_builder.py index 0aa2881..e01d580 100644 --- a/orchestrator/utils/email_builder.py +++ b/orchestrator/utils/email_builder.py @@ -24,14 +24,18 @@ class EmailBuilder: return template.render(parameters) def parameters(self, general_events: dict, mail_type: str) -> dict: + error_models = general_events.get('ERROR', {}).get('models', []) + warning_models = general_events.get('WARNING', {}).get('models', []) + info_models = general_events.get('INFO', {}).get('models', []) + return { 'mail_type': mail_type, 'error_events': self.replace_parameters(self.general_template, - general_events['ERROR']) if general_events['ERROR']['models'] else '', + error_models) if error_models else '', 'warning_events': self.replace_parameters(self.general_template, - general_events['WARNING']) if general_events['WARNING']['models'] else '', + warning_models) if warning_models else '', 'info_events': self.replace_parameters(self.general_template, - general_events['INFO']) if general_events['INFO']['models'] else '', + info_models) if info_models else '', } def build_email(self, report_data: list[dict], mail_type: str) -> str: diff --git a/orchestrator/workflows/alerts.py b/orchestrator/workflows/alerts.py index fd46f57..441390b 100644 --- a/orchestrator/workflows/alerts.py +++ b/orchestrator/workflows/alerts.py @@ -3,6 +3,8 @@ from temporalio import workflow with workflow.unsafe.imports_passed_through(): from orchestrator.activities.activities import Activities from typing import Any + from datetime import timedelta + from sientia_do.temporal.utils.policies import retry_policy @workflow.defn(name="alerts") @@ -62,7 +64,9 @@ class Alerts: 'notification_package': package['notification_package'], 'sending_configs': package['sending_configs'], 'notification_ttl': input_data['notification_ttl'] - } + }, + schedule_to_close_timeout=timedelta(seconds=60), + retry_policy=retry_policy ) # Call subworkflow "process_notifications" passing the notification package @@ -84,5 +88,7 @@ class Alerts: **metadata, 'log_report': log_report, 'sent_ttl': input_data['sent_ttl'] - } + }, + schedule_to_close_timeout=timedelta(seconds=60), + retry_policy=retry_policy ) diff --git a/orchestrator/workflows/subworkflows/load_notification_package.py b/orchestrator/workflows/subworkflows/load_notification_package.py index 8cbc76b..dd33887 100644 --- a/orchestrator/workflows/subworkflows/load_notification_package.py +++ b/orchestrator/workflows/subworkflows/load_notification_package.py @@ -75,6 +75,15 @@ class LoadNotificationPackage: 'sending_configs': await sending_configs_handler } + sending_configs = await sending_configs_handler + + if not sending_configs or not notification_package: + return { + 'last_timestamp': last_timestamp, + 'notification_package': notification_package, + 'sending_configs': sending_configs + } + # Put last collected timestamp in redis "notification_last_timestamp" await workflow.start_activity_method( diff --git a/orchestrator/workflows/subworkflows/process_notifications.py b/orchestrator/workflows/subworkflows/process_notifications.py index de71b27..f2f36c8 100644 --- a/orchestrator/workflows/subworkflows/process_notifications.py +++ b/orchestrator/workflows/subworkflows/process_notifications.py @@ -42,7 +42,8 @@ class ProcessNotifications: Activities.build_email_html, { **metadata, - "receiver_groups": input_data["notification_package"] + "receiver_groups": input_data["notification_package"], + "mail_type": input_data["mail_type"] }, schedule_to_close_timeout=timedelta(seconds=60), retry_policy=retry_policy @@ -68,6 +69,8 @@ class ProcessNotifications: "receiver_groups": log_report, "mail_type": input_data["mail_type"] }, + schedule_to_close_timeout=timedelta(seconds=60), + retry_policy=retry_policy ) # Store sending log in postgres database "log_report"
OPC_LISTENNING_BACK__server_2sed_elit_ut_do2025-07-25 16:50:48.925462+00:00dolor et adipiscing adipiscing dolore ipsum ipsum aliqua et elitTAG_node76:tag_73_LISTENNING_STOPPEDtempor_elit2025-07-28 20:05:38.650875+00:00et do aliqua lorem incididunt