- try:\r
- lccn_subscription_request_serializer = LccnSubscriptionRequestSerializer(data=request.data)\r
- if not lccn_subscription_request_serializer.is_valid():\r
- raise NFLCMException(lccn_subscription_request_serializer.errors)\r
- subscription = CreateSubscription(\r
- lccn_subscription_request_serializer.data).do_biz()\r
- lccn_notifications_filter = {\r
- "notificationTypes": ast.literal_eval(subscription.notification_types),\r
- "operationTypes": ast.literal_eval(subscription.operation_types),\r
- "operationStates": ast.literal_eval(subscription.operation_states),\r
- "vnfInstanceSubscriptionFilter": json.loads(subscription.vnf_instance_filter)\r
- }\r
- subscription_data = {\r
- "id": subscription.subscription_id,\r
- "callbackUri": subscription.callback_uri,\r
- "_links": json.loads(subscription.links),\r
- "filter": lccn_notifications_filter\r
- }\r
- sub_resp_serializer = LccnSubscriptionSerializer(data=subscription_data)\r
- if not sub_resp_serializer.is_valid():\r
- raise NFLCMException(sub_resp_serializer.errors)\r
- return Response(data=sub_resp_serializer.data, status=status.HTTP_201_CREATED)\r
- except NFLCMException as e:\r
- logger.error(e.message)\r
- if "exists" in e.message:\r
- return Response(data={'error': '%s' % e.message}, status=status.HTTP_303_SEE_OTHER)\r
- return Response(data={'error': '%s' % e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)\r
- except Exception as e:\r
- logger.error(e.message)\r
- logger.error(traceback.format_exc())\r
- return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)\r
+\r
+ lccn_subscription_request_serializer = LccnSubscriptionRequestSerializer(data=request.data)\r
+ if not lccn_subscription_request_serializer.is_valid():\r
+ raise NFLCMExceptionBadRequest(lccn_subscription_request_serializer.errors)\r
+ subscription = CreateSubscription(\r
+ request.data).do_biz()\r
+ lccn_notifications_filter = {\r
+ "notificationTypes": ast.literal_eval(subscription.notification_types),\r
+ "operationTypes": ast.literal_eval(subscription.operation_types),\r
+ "operationStates": ast.literal_eval(subscription.operation_states),\r
+ "vnfInstanceSubscriptionFilter": json.loads(subscription.vnf_instance_filter)\r
+ }\r
+ subscription_data = {\r
+ "id": subscription.subscription_id,\r
+ "callbackUri": subscription.callback_uri,\r
+ "_links": json.loads(subscription.links),\r
+ "filter": lccn_notifications_filter\r
+ }\r
+ sub_resp_serializer = LccnSubscriptionSerializer(data=subscription_data)\r
+ if not sub_resp_serializer.is_valid():\r
+ raise NFLCMException(sub_resp_serializer.errors)\r
+ return Response(data=subscription_data, status=status.HTTP_201_CREATED)\r
+\r
+ @swagger_auto_schema(\r
+ responses={\r
+ status.HTTP_200_OK: LccnSubscriptionsSerializer(),\r
+ status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(),\r
+ status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()\r
+ }\r
+ )\r
+ @view_safe_call_with_log(logger=logger)\r
+ def get(self, request):\r
+ logger.debug("SubscribeNotification--get::> %s" % request.query_params)\r
+\r
+ if request.query_params and not set(request.query_params).issubset(set(VALID_FILTERS)):\r
+ problem_details_serializer = get_problem_details_serializer(\r
+ status.HTTP_400_BAD_REQUEST,\r
+ "Not a valid filter"\r
+ )\r
+ return Response(data=problem_details_serializer.data,\r
+ status=status.HTTP_400_BAD_REQUEST)\r
+ resp_data = QuerySubscription(request.query_params).query_multi_subscriptions()\r
+\r
+ subscriptions_serializer = LccnSubscriptionsSerializer(data=resp_data)\r
+ if not subscriptions_serializer.is_valid():\r
+ raise NFLCMException(subscriptions_serializer.errors)\r
+\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