Fix INF-346 and INF-347 subscription filter
[pti/o2.git] / o2ims / views / ocloud_route.py
index 7616b25..434a431 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.domain import ocloud
 from o2ims.views import ocloud_view
 from o2ims.views.api_ns import api_ims_inventory as api_ims_inventory_v1
@@ -49,7 +50,7 @@ class VersionRouter(Resource):
 
 
 # ----------  OClouds ---------- #
-@api_ims_inventory_v1.route("/v1/")
+@api_ims_inventory_v1.route(*["/v1", "/v1/"])
 @api_ims_inventory_v1.response(404, 'oCloud not found')
 @api_ims_inventory_v1.param(
     'all_fields',
@@ -464,8 +465,7 @@ class DeploymentManagerGetRouter(Resource):
 class SubscriptionsListRouter(Resource):
 
     model = SubscriptionDTO.subscription_get
-    expect = SubscriptionDTO.subscription
-    post_resp = SubscriptionDTO.subscription_post_resp
+    expect = SubscriptionDTO.subscription_create
 
     @api_ims_inventory_v1.doc('List subscriptions')
     @api_ims_inventory_v1.marshal_list_with(model)
@@ -513,9 +513,14 @@ class SubscriptionsListRouter(Resource):
 
     @api_ims_inventory_v1.doc('Create a subscription')
     @api_ims_inventory_v1.expect(expect)
-    @api_ims_inventory_v1.marshal_with(post_resp, code=201)
+    @api_ims_inventory_v1.marshal_with(
+        model, code=201,
+        mask='{subscriptionId,callback,consumerSubscriptionId,filter}')
     def post(self):
         data = api_ims_inventory_v1.payload
+        callback = data.get('callback', None)
+        if not callback:
+            raise BadRequestException('The callback parameter is required')
         result = ocloud_view.subscription_create(data, bus.uow)
         return result, 201