Add get and del subscription api
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / views / subscriptions_view.py
index 95b3772..547e012 100644 (file)
@@ -17,8 +17,6 @@ import json
 import logging\r
 \r
 from drf_yasg.utils import swagger_auto_schema\r
-from lcm.nf.biz.create_subscription import CreateSubscription\r
-from lcm.nf.biz.query_subscription import QuerySubscription\r
 from rest_framework import status\r
 from rest_framework.response import Response\r
 from rest_framework.views import APIView\r
@@ -28,6 +26,9 @@ from lcm.nf.serializers.lccn_subscription import LccnSubscriptionSerializer
 from lcm.nf.serializers.lccn_subscriptions import LccnSubscriptionsSerializer\r
 from lcm.nf.serializers.response import ProblemDetailsSerializer\r
 from lcm.pub.exceptions import NFLCMException, NFLCMExceptionBadRequest\r
+from lcm.nf.biz.create_subscription import CreateSubscription\r
+from lcm.nf.biz.query_subscription import QuerySubscription\r
+from lcm.nf.biz.delete_subscription import DeleteSubscription\r
 from .common import view_safe_call_with_log\r
 \r
 logger = logging.getLogger(__name__)\r
@@ -106,3 +107,43 @@ class SubscriptionsView(APIView):
 \r
         logger.debug("SubscribeNotification--get::> Remove default fields")\r
         return Response(data=subscriptions_serializer.data, status=status.HTTP_200_OK)\r
+\r
+\r
+class SubscriptionDetailView(APIView):\r
+    @swagger_auto_schema(\r
+        responses={\r
+            status.HTTP_200_OK: LccnSubscriptionSerializer(),\r
+            status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(),\r
+            status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()\r
+        }\r
+    )\r
+    @view_safe_call_with_log(logger=logger)\r
+    def get(self, request, subscriptionid):\r
+        logger.debug("SubscriptionDetailView--get::> %s" % subscriptionid)\r
+\r
+        resp_data = QuerySubscription(\r
+            subscription_id=subscriptionid\r
+        ).query_single_subscription()\r
+\r
+        subscription_serializer = LccnSubscriptionSerializer(data=resp_data)\r
+        if not subscription_serializer.is_valid():\r
+            raise NFLCMException(subscription_serializer.errors)\r
+\r
+        return Response(data=resp_data, status=status.HTTP_200_OK)\r
+\r
+    @swagger_auto_schema(\r
+        responses={\r
+            status.HTTP_204_NO_CONTENT: "",\r
+            status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(),\r
+            status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()\r
+        }\r
+    )\r
+    @view_safe_call_with_log(logger=logger)\r
+    def delete(self, request, subscriptionid):\r
+        logger.debug("SubscriptionDetailView--delete::> %s" % subscriptionid)\r
+\r
+        DeleteSubscription(\r
+            subscription_id=subscriptionid\r
+        ).delete_single_subscription()\r
+\r
+        return Response(status=status.HTTP_204_NO_CONTENT)\r