Fix INF-349 and INF-350 duplication check of post data
[pti/o2.git] / o2ims / views / alarm_route.py
index 8b03880..4ca44ca 100644 (file)
@@ -17,7 +17,8 @@ from flask_restx import Resource, reqparse
 
 from o2common.service.messagebus import MessageBus
 from o2common.views.pagination_route import link_header, PAGE_PARAM
-from o2common.views.route_exception import NotFoundException
+from o2common.views.route_exception import NotFoundException, \
+    BadRequestException
 from o2ims.views import alarm_view
 from o2ims.views.api_ns import api_ims_monitoring as api_monitoring_v1
 from o2ims.views.alarm_dto import AlarmDTO, SubscriptionDTO
@@ -139,8 +140,7 @@ class AlarmGetRouter(Resource):
 class SubscriptionsListRouter(Resource):
 
     model = SubscriptionDTO.subscription_get
-    expect = SubscriptionDTO.subscription
-    post_resp = SubscriptionDTO.subscription_post_resp
+    expect = SubscriptionDTO.subscription_create
 
     @api_monitoring_v1.doc('List alarm subscriptions')
     @api_monitoring_v1.marshal_list_with(model)
@@ -188,9 +188,15 @@ class SubscriptionsListRouter(Resource):
 
     @api_monitoring_v1.doc('Create a alarm subscription')
     @api_monitoring_v1.expect(expect)
-    @api_monitoring_v1.marshal_with(post_resp, code=201)
+    @api_monitoring_v1.marshal_with(
+        model, code=201,
+        mask='{alarmSubscriptionId,callback,consumerSubscriptionId,filter}')
     def post(self):
         data = api_monitoring_v1.payload
+        callback = data.get('callback', None)
+        if not callback:
+            raise BadRequestException('The callback parameter is required')
+
         result = alarm_view.subscription_create(data, bus.uow)
         return result, 201