diff options
author | Sirisha Gopigiri <sirisha.gopigiri@verizon.com> | 2019-03-12 12:02:51 +0530 |
---|---|---|
committer | Sirisha Gopigiri <sirisha.gopigiri@verizon.com> | 2019-03-12 12:06:36 +0530 |
commit | 127ea25c3622fa415ded0884f4ae32d3defcac83 (patch) | |
tree | 3749a39f1558db2369dec76f1948dc75a0efd3e6 | |
parent | 4764336b23332abb2d61ee3edf6f73e93ef417e6 (diff) |
Add Terminate Single NsdManagementSubscription API
Add SOL 005 Terminate Single NsdManagementSubscription API
Change-Id: I403723fc0b59c2c080a5250d1e076bd6ab7d4547
Issue-ID: VFC-1219
Signed-off-by: Sirisha Gopigiri <sirisha.gopigiri@verizon.com>
-rw-r--r-- | catalog/packages/biz/nsdm_subscription.py | 11 | ||||
-rw-r--r-- | catalog/packages/tests/test_nsdm_subscription.py | 41 | ||||
-rw-r--r-- | catalog/packages/views/nsdm_subscription_views.py | 48 |
3 files changed, 99 insertions, 1 deletions
diff --git a/catalog/packages/biz/nsdm_subscription.py b/catalog/packages/biz/nsdm_subscription.py index a94717ab..ec305076 100644 --- a/catalog/packages/biz/nsdm_subscription.py +++ b/catalog/packages/biz/nsdm_subscription.py @@ -57,6 +57,17 @@ class NsdmSubscription: logger.debug("Subscription found... ") return self.fill_resp_data(subscription[0]) + def delete_single_subscription(self, subscription_id): + logger.debug("Start Delete Subscription... ") + subscription = \ + NsdmSubscriptionModel.objects.filter( + subscriptionid=subscription_id) + if not subscription.exists(): + raise ResourceNotFoundException( + "Subscription(%s) doesn't exists" % subscription_id) + subscription.delete() + logger.debug("Deleted Subscription... ") + def query_multi_subscriptions(self, query_params): self.params = query_params query_data = {} diff --git a/catalog/packages/tests/test_nsdm_subscription.py b/catalog/packages/tests/test_nsdm_subscription.py index 104ec767..d2db19cb 100644 --- a/catalog/packages/tests/test_nsdm_subscription.py +++ b/catalog/packages/tests/test_nsdm_subscription.py @@ -484,3 +484,44 @@ class TestNsdmSubscription(TestCase): format='json') self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR) + + def test_ndsm_delete_subscription(self): + NsdmSubscriptionModel(subscriptionid=self.subscription_id, + callback_uri="http://callbackuri.com", + auth_info={}, + notificationTypes=json.dumps( + ["NsdOnBoardingNotification"]), + nsdId=[], nsdVersion=[], + nsdInfoId=[], nsdDesigner=[], + nsdName=[], nsdInvariantId=[], + vnfPkgIds=[], pnfdInfoIds=[], + nestedNsdInfoIds=[], nsdOnboardingState=[], + nsdOperationalState=[], nsdUsageState=[], + pnfdId=[], pnfdVersion=[], pnfdProvider=[], + pnfdName=[], pnfdInvariantId=[], + pnfdOnboardingState=[], pnfdUsageState=[], + links=json.dumps(self.links)).save() + response = self.client.delete('/api/nsd/v1/' + 'subscriptions/' + self.subscription_id, + format='json') + self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code) + + def test_ndsm_delete_subscription_failure(self): + response = self.client.delete('/api/nsd/v1/' + 'subscriptions/' + self.subscription_id, + format='json') + self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code) + + def test_nsdm_delete_subscription_failure_bad_request(self): + response = self.client.delete("/api/nsd/v1/subscriptions/123", + format='json') + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) + + @mock.patch.object(NsdmSubscription, 'delete_single_subscription') + def test_nsdmsubscription_delete_when_catch_exception(self, mock_create): + mock_create.side_effect = TypeError("Unicode type") + response = self.client.delete('/api/nsd/v1/' + 'subscriptions/' + self.subscription_id, + format='json') + self.assertEqual(response.status_code, + status.HTTP_500_INTERNAL_SERVER_ERROR) diff --git a/catalog/packages/views/nsdm_subscription_views.py b/catalog/packages/views/nsdm_subscription_views.py index 32da8655..ed1cbd95 100644 --- a/catalog/packages/views/nsdm_subscription_views.py +++ b/catalog/packages/views/nsdm_subscription_views.py @@ -171,7 +171,18 @@ def nsd_subscription_rc(request): status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() } ) -@api_view(http_method_names=['GET']) +@swagger_auto_schema( + method='DELETE', + operation_description="Delete subscription for Nsd Management", + request_body=no_body, + responses={ + status.HTTP_204_NO_CONTENT: 'No_Content', + status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(), + status.HTTP_404_NOT_FOUND: ProblemDetailsSerializer(), + status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer() + } +) +@api_view(http_method_names=['GET', 'DELETE']) def nsd_subscription_rd(request, **kwargs): subscription_id = kwargs.get("subscriptionId") if request.method == 'GET': @@ -211,3 +222,38 @@ def nsd_subscription_rd(request, **kwargs): % subscription_id) return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + elif request.method == 'DELETE': + try: + title = 'Delete Subscription Failed!' + validate_data({'subscription_id': subscription_id}, + NsdmSubscriptionIdSerializer) + subscription_data = NsdmSubscription().\ + delete_single_subscription(subscription_id) + return Response(status=status.HTTP_204_NO_CONTENT) + except NsdmBadRequestException as e: + logger.error(e.message) + problem_details_serializer = \ + get_problem_details_serializer(title, + status.HTTP_400_BAD_REQUEST, + e.message) + return Response(data=problem_details_serializer.data, + status=status.HTTP_400_BAD_REQUEST) + except ResourceNotFoundException as e: + logger.error(e.message) + problem_details_serializer = \ + get_problem_details_serializer(title, + status.HTTP_404_NOT_FOUND, + e.message) + return Response(data=problem_details_serializer.data, + status=status.HTTP_404_NOT_FOUND) + except Exception as e: + logger.error(e.message) + logger.error(traceback.format_exc()) + problem_details_serializer = \ + get_problem_details_serializer( + title, + status.HTTP_500_INTERNAL_SERVER_ERROR, + "Delete of subscription(%s) Failed" + % subscription_id) + return Response(data=problem_details_serializer.data, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) |