From: vpachchi Date: Thu, 10 Jul 2025 06:55:52 +0000 (-0400) Subject: Duplicate Alarm subscription is throwing 400 error code X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=3997ff71e850fb16983ee262cdb4e88958c547fc;p=pti%2Fo2.git Duplicate Alarm subscription is throwing 400 error code rather than 409 TEST PLAN PASS: Chekced that duplicate subscription giving 409 conflict error Change-Id: I9ab2271ec61195dbc0f4f2efcc41411b3e2ab462 Signed-off-by: vpachchi --- diff --git a/o2common/views/route_exception.py b/o2common/views/route_exception.py index b66a663..311430a 100644 --- a/o2common/views/route_exception.py +++ b/o2common/views/route_exception.py @@ -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''' diff --git a/o2ims/views/alarm_view.py b/o2ims/views/alarm_view.py index d5efa53..660ffb5 100644 --- a/o2ims/views/alarm_view.py +++ b/o2ims/views/alarm_view.py @@ -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) diff --git a/o2ims/views/ocloud_view.py b/o2ims/views/ocloud_view.py index 15a6e1d..f8b5966 100644 --- a/o2ims/views/ocloud_view.py +++ b/o2ims/views/ocloud_view.py @@ -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)