summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSirisha Gopigiri <sirisha.gopigiri@verizon.com>2019-03-12 12:02:51 +0530
committerSirisha Gopigiri <sirisha.gopigiri@verizon.com>2019-03-12 12:06:36 +0530
commit127ea25c3622fa415ded0884f4ae32d3defcac83 (patch)
tree3749a39f1558db2369dec76f1948dc75a0efd3e6
parent4764336b23332abb2d61ee3edf6f73e93ef417e6 (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.py11
-rw-r--r--catalog/packages/tests/test_nsdm_subscription.py41
-rw-r--r--catalog/packages/views/nsdm_subscription_views.py48
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)