Duplicate Alarm subscription is throwing 400 error code 58/14758/1
authorvpachchi <vineela.pachchipulusu@windriver.com>
Thu, 10 Jul 2025 06:55:52 +0000 (02:55 -0400)
committerJon Zhang <rong.zhang@windriver.com>
Tue, 19 Aug 2025 08:39:39 +0000 (08:39 +0000)
rather than 409

TEST PLAN
PASS: Chekced that duplicate subscription giving
409 conflict error

Change-Id: I9ab2271ec61195dbc0f4f2efcc41411b3e2ab462
Signed-off-by: vpachchi <vineela.pachchipulusu@windriver.com>
(cherry picked from commit 3997ff71e850fb16983ee262cdb4e88958c547fc)

o2common/views/route_exception.py
o2ims/views/alarm_view.py
o2ims/views/ocloud_view.py

index b66a663..311430a 100644 (file)
@@ -19,6 +19,7 @@ from werkzeug.exceptions import (
     NotFound,
     InternalServerError,
     HTTPException,
+    Conflict,
 )
 
 
@@ -36,6 +37,11 @@ class NotFoundException(NotFound):
         super().__init__(description=desc, response=resp)
 
 
+class ConflictException(Conflict):
+    def __init__(self, desc=None, resp=None):
+        super().__init__(description=desc, response=resp)
+
+
 class ProblemDetails():
     def __init__(self, code: int, detail: str,
                  title=None, instance=None
@@ -88,6 +94,12 @@ def configure_exception(app):
         problem = ProblemDetails(404, str(error))
         return problem.serialize(), 404
 
+    @app.errorhandler(ConflictException)
+    def handle_conflict_exception(error):
+        '''Return a custom message and 409 status code'''
+        problem = ProblemDetails(409, str(error))
+        return problem.serialize(), 409
+
     @app.errorhandler(MethodNotAllowed)
     def handle_methodnotallowed_exception(error):
         '''Return a custom message and 405 status code'''
index d5efa53..660ffb5 100644 (file)
@@ -18,8 +18,11 @@ import uuid as uuid
 from o2common.service import unit_of_work, messagebus
 from o2common.views.view import gen_filter, check_filter
 from o2common.views.pagination_view import Pagination
-from o2common.views.route_exception import BadRequestException, \
-    NotFoundException
+from o2common.views.route_exception import (
+    BadRequestException,
+    ConflictException,
+    NotFoundException,
+)
 
 from o2ims.domain import events
 from o2ims.views.alarm_dto import SubscriptionDTO
@@ -137,7 +140,7 @@ def subscription_create(subscriptionDto: SubscriptionDTO.subscription_create,
                     'consumerSubscriptionId') == consumer_subs_id)
         count, _ = uow.alarm_subscriptions.list_with_count(*args)
         if count > 0:
-            raise BadRequestException("The value of parameters is duplicated")
+            raise ConflictException("The value of parameters is duplicated")
         uow.alarm_subscriptions.add(subscription)
         uow.commit()
         first = uow.alarm_subscriptions.get(sub_uuid)
index 15a6e1d..f8b5966 100644 (file)
@@ -23,8 +23,11 @@ from o2common.service import unit_of_work
 from o2common.config import config
 from o2common.views.view import gen_filter, check_filter
 from o2common.views.pagination_view import Pagination
-from o2common.views.route_exception import BadRequestException, \
-    NotFoundException
+from o2common.views.route_exception import (
+    BadRequestException,
+    ConflictException,
+    NotFoundException,
+)
 
 from o2ims.domain import ocloud
 from o2ims.views.ocloud_dto import SubscriptionDTO
@@ -258,7 +261,7 @@ def subscription_create(subscriptionDto: SubscriptionDTO.subscription_create,
                     'consumerSubscriptionId') == consumer_subs_id)
         count, _ = uow.subscriptions.list_with_count(*args)
         if count > 0:
-            raise BadRequestException("The value of parameters is duplicated")
+            raise ConflictException("The value of parameters is duplicated")
         uow.subscriptions.add(subscription)
         uow.commit()
         first = uow.subscriptions.get(sub_uuid)