From dc9eacb031f591e66a5f0cf6fc53623f65b0138b Mon Sep 17 00:00:00 2001 From: Jongmin Kim Date: Thu, 29 Aug 2024 17:18:29 +0900 Subject: [PATCH] fix: fix notification bug Signed-off-by: Jongmin Kim --- .../monitoring/service/job_service.py | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/spaceone/monitoring/service/job_service.py b/src/spaceone/monitoring/service/job_service.py index a71e54d..ad62782 100644 --- a/src/spaceone/monitoring/service/job_service.py +++ b/src/spaceone/monitoring/service/job_service.py @@ -497,8 +497,9 @@ def _create_message( callbacks = [] + access_key = self._create_access_key(alert_vo.alert_id) + if has_callback: - access_key = self._generate_access_key() callback_url = self._make_callback_url( alert_vo.alert_id, domain_id, access_key ) @@ -540,6 +541,27 @@ def _create_message( "notification_level": notification_level, } + def _create_access_key(self, alert_id: str) -> str: + def _rollback(alert_id: str, access_key: str): + _LOGGER.info( + f"[_make_callback_url._rollback] " + f"Delete cache : {alert_id} " + f"({access_key})" + ) + cache.delete( + f"monitoring:alert:notification-callback:{alert_id}:{access_key}" + ) + + access_key = self._generate_access_key() + + cache.set( + f"monitoring:alert:notification-callback:{alert_id}:{access_key}", + True, + expire=3600, + ) + self.transaction.add_rollback(_rollback, alert_id, access_key) + return access_key + @cache.cacheable(key="monitoring:project-name:{domain_id}:{project_id}", expire=300) def _get_project_name(self, project_id: str, domain_id: str) -> str: try: @@ -600,24 +622,8 @@ def _get_user_name(self, user_id: str, domain_id: str) -> str: def _generate_access_key(): return utils.random_string(16) - def _make_callback_url(self, alert_id, domain_id, access_key): - def _rollback(alert_id, access_key): - _LOGGER.info( - f"[_make_callback_url._rollback] " - f"Delete cache : {alert_id} " - f"({access_key})" - ) - cache.delete( - f"monitoring:alert:notification-callback:{alert_id}:{access_key}" - ) - - cache.set( - f"monitoring:alert:notification-callback:{alert_id}:{access_key}", - True, - expire=3600, - ) - self.transaction.add_rollback(_rollback, alert_id, access_key) - + @staticmethod + def _make_callback_url(alert_id, domain_id, access_key): webhook_domain = config.get_global("WEBHOOK_DOMAIN") return f"{webhook_domain}/monitoring/v1/domain/{domain_id}/alert/{alert_id}/{access_key}/ACKNOWLEDGED"