summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBharath Thiruveedula <bharath.thiruveedula@verizon.com>2018-09-05 10:56:13 +0530
committerBharath Thiruveedula <bharath.thiruveedula@verizon.com>2018-09-05 10:56:17 +0530
commit8f59e8d4426a11ea3f2a16d0c0479786fd02a027 (patch)
treef1c567b6aed444dfcbb3886049fe3b6b1652e9ae
parent5b075b9740c4d57e219df38ae4fb7446fbdf5833 (diff)
Add Individual LCM Op Occs API to GVNFM
Signed-off-by: Bharath Thiruveedula<bharath.thiruveedula@verizon.com> Change-Id: I565342158388b288b3a67080d457420c5443e5e3 Issue-ID: VFC-998
-rw-r--r--lcm/lcm/nf/biz/query_vnf_lcm_op_occ.py7
-rw-r--r--lcm/lcm/nf/tests/test_query_vnf_lcm_op.py42
-rw-r--r--lcm/lcm/nf/urls.py3
-rw-r--r--lcm/lcm/nf/views/lcm_op_occs_view.py29
4 files changed, 71 insertions, 10 deletions
diff --git a/lcm/lcm/nf/biz/query_vnf_lcm_op_occ.py b/lcm/lcm/nf/biz/query_vnf_lcm_op_occ.py
index 467dc4f0..01d8b8db 100644
--- a/lcm/lcm/nf/biz/query_vnf_lcm_op_occ.py
+++ b/lcm/lcm/nf/biz/query_vnf_lcm_op_occ.py
@@ -70,3 +70,10 @@ class QueryVnfLcmOpOcc:
'_links': json.loads(lcm_op.links)
}
return resp_data
+
+ def query_single_vnf_lcm_op_occ(self):
+ lcm_op = VNFLcmOpOccModel.objects.filter(id=self.vnf_lcm_op_occ_id)
+ if not lcm_op.exists():
+ raise NFLCMException('LCM Operation Occurance does not exist')
+ resp_data = self.fill_resp_data(lcm_op[0])
+ return resp_data
diff --git a/lcm/lcm/nf/tests/test_query_vnf_lcm_op.py b/lcm/lcm/nf/tests/test_query_vnf_lcm_op.py
index 2e1c15a0..feabe534 100644
--- a/lcm/lcm/nf/tests/test_query_vnf_lcm_op.py
+++ b/lcm/lcm/nf/tests/test_query_vnf_lcm_op.py
@@ -25,7 +25,7 @@ class TestVNFLcmOpOccs(TestCase):
self.client = Client()
self.vnf_lcm_op_occ_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
VNFLcmOpOccModel.objects.all().delete()
- self.test_single_vnf_lcm_op = [{
+ self.test_single_vnf_lcm_op = {
"id": "99442b18-a5c7-11e8-998c-bf1755941f16",
"operationState": "STARTING",
"stateEnteredTime": "2018-07-09",
@@ -45,7 +45,7 @@ class TestVNFLcmOpOccs(TestCase):
"self": "demo",
"vnfInstance": "demo"
}
- }]
+ }
self.test_vnflcmop_with_exclude_default = [{
"id": "99442b18-a5c7-11e8-998c-bf1755941f16",
"operationState": "STARTING",
@@ -85,12 +85,12 @@ class TestVNFLcmOpOccs(TestCase):
}
}]
self.test_multiple_vnf_lcm_op.append(
- self.test_single_vnf_lcm_op[0])
+ self.test_single_vnf_lcm_op)
def tearDown(self):
pass
- def test_get_vnflcmopocc(self):
+ def test_get_vnflcmopoccs(self):
lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
vnf_instance_id = "cd552c9c-ab6f-11e8-b354-236c32aa91a1"
VNFLcmOpOccModel(id=lcm_op_id, operation_state="STARTING",
@@ -102,9 +102,9 @@ class TestVNFLcmOpOccs(TestCase):
links=json.dumps({"self": "demo", "vnfInstance": "demo"})).save()
response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(self.test_single_vnf_lcm_op, response.data)
+ self.assertEqual([self.test_single_vnf_lcm_op], response.data)
- def test_get_vnflcmopocc_with_id_not_exist(self):
+ def test_get_vnflcmopoccs_with_id_not_exist(self):
response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs?id=dummy", format='json')
self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
expected_data = {
@@ -113,7 +113,7 @@ class TestVNFLcmOpOccs(TestCase):
}
self.assertEqual(expected_data, response.data)
- def test_get_vnflcmopocc_with_filters(self):
+ def test_get_vnflcmopoccs_with_filters(self):
lcm_op_id = "a6b9415c-ab99-11e8-9d37-dbb5e0378955"
vnf_instance_id = "cd552c9c-ab6f-11e8-b354-236c32aa91a1"
VNFLcmOpOccModel(id=lcm_op_id, operation_state="STARTING",
@@ -138,13 +138,13 @@ class TestVNFLcmOpOccs(TestCase):
response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs?operation=SCALE", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(self.test_single_vnf_lcm_op, response.data)
+ self.assertEqual([self.test_single_vnf_lcm_op], response.data)
response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs?vnfInstanceId=%s" % vnf_instance_id, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(self.test_multiple_vnf_lcm_op, response.data)
- def test_get_vnflcmopocc_with_extra_flags(self):
+ def test_get_vnflcmopoccs_with_extra_flags(self):
lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
vnf_instance_id = "cd552c9c-ab6f-11e8-b354-236c32aa91a1"
VNFLcmOpOccModel(id=lcm_op_id, operation_state="STARTING",
@@ -157,3 +157,27 @@ class TestVNFLcmOpOccs(TestCase):
response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs?exclude_default", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(self.test_vnflcmop_with_exclude_default, response.data)
+
+ def test_get_vnflcmopocc_with_id(self):
+ lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
+ vnf_instance_id = "cd552c9c-ab6f-11e8-b354-236c32aa91a1"
+ VNFLcmOpOccModel(id=lcm_op_id, operation_state="STARTING",
+ state_entered_time="2018-07-09", start_time="2018-07-09",
+ vnf_instance_id=vnf_instance_id,
+ grant_id=None, operation="SCALE", is_automatic_invocation=False,
+ operation_params='{}', is_cancel_pending=False, cancel_mode=None,
+ error=None, resource_changes=None, changed_ext_connectivity=None,
+ links=json.dumps({"self": "demo", "vnfInstance": "demo"})).save()
+ response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs/" + lcm_op_id, format='json')
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ self.assertEqual(self.test_single_vnf_lcm_op, response.data)
+
+ def test_single_vnflcmopocc_with_unknown_id(self):
+ lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
+ response = self.client.get("/api/vnflcm/v1/vnf_lcm_op_occs/" + lcm_op_id, format='json')
+ self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
+ expected_data = {
+ "status": 500,
+ "detail": "LCM Operation Occurance does not exist"
+ }
+ self.assertEqual(expected_data, response.data)
diff --git a/lcm/lcm/nf/urls.py b/lcm/lcm/nf/urls.py
index 7377c085..58f5c392 100644
--- a/lcm/lcm/nf/urls.py
+++ b/lcm/lcm/nf/urls.py
@@ -19,7 +19,7 @@ from lcm.nf.views.instantiate_vnf_view import InstantiateVnfView
from lcm.nf.views.terminate_vnf_view import TerminateVnfView
from lcm.nf.views.subscriptions_view import SubscriptionsView
from lcm.nf.views.operate_vnf_view import OperateVnfView
-from lcm.nf.views.lcm_op_occs_view import QueryMultiVnfLcmOpOccs
+from lcm.nf.views.lcm_op_occs_view import QueryMultiVnfLcmOpOccs, QuerySingleVnfLcmOpOcc
urlpatterns = [
url(r'^api/vnflcm/v1/subscriptions$', SubscriptionsView.as_view()),
@@ -29,4 +29,5 @@ urlpatterns = [
url(r'^api/vnflcm/v1/vnf_instances/(?P<instanceid>[0-9a-zA-Z_-]+)/terminate$', TerminateVnfView.as_view()),
url(r'^api/vnflcm/v1/vnf_instances/(?P<instanceid>[0-9a-zA-Z_-]+)/operate$', OperateVnfView.as_view()),
url(r'^api/vnflcm/v1/vnf_lcm_op_occs$', QueryMultiVnfLcmOpOccs.as_view()),
+ url(r'^api/vnflcm/v1/vnf_lcm_op_occs/(?P<lcmopoccid>[0-9a-zA-Z_-]+)$', QuerySingleVnfLcmOpOcc.as_view()),
]
diff --git a/lcm/lcm/nf/views/lcm_op_occs_view.py b/lcm/lcm/nf/views/lcm_op_occs_view.py
index c49b64c1..de165317 100644
--- a/lcm/lcm/nf/views/lcm_op_occs_view.py
+++ b/lcm/lcm/nf/views/lcm_op_occs_view.py
@@ -22,6 +22,7 @@ from rest_framework.views import APIView
from lcm.nf.biz.query_vnf_lcm_op_occ import QueryVnfLcmOpOcc
from lcm.nf.serializers.response import ProblemDetailsSerializer
+from lcm.nf.serializers.vnf_lcm_op_occ import VNFLCMOpOccSerializer
from lcm.nf.serializers.vnf_lcm_op_occs import VNFLCMOpOccsSerializer
from lcm.pub.exceptions import NFLCMException
@@ -80,3 +81,31 @@ class QueryMultiVnfLcmOpOccs(APIView):
logger.error(traceback.format_exc())
problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, e.message)
return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+
+class QuerySingleVnfLcmOpOcc(APIView):
+ @swagger_auto_schema(
+ responses={
+ status.HTTP_200_OK: VNFLCMOpOccSerializer(),
+ status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()
+ }
+ )
+ def get(self, request, lcmopoccid):
+ logger.debug("QuerySingleVnfLcmOpOcc--get::> %s" % request.query_params)
+ try:
+ resp_data = QueryVnfLcmOpOcc(request.query_params, lcm_op_occ_id=lcmopoccid).query_single_vnf_lcm_op_occ()
+
+ vnf_lcm_op_occ_serializer = VNFLCMOpOccSerializer(data=resp_data)
+ if not vnf_lcm_op_occ_serializer.is_valid():
+ raise NFLCMException(vnf_lcm_op_occ_serializer.errors)
+
+ return Response(data=vnf_lcm_op_occ_serializer.data, status=status.HTTP_200_OK)
+ except NFLCMException as e:
+ logger.error(e.message)
+ problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, e.message)
+ return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ except Exception as e:
+ logger.error(e.message)
+ logger.error(traceback.format_exc())
+ problem_details_serializer = get_problem_details_serializer(status.HTTP_500_INTERNAL_SERVER_ERROR, e.message)
+ return Response(data=problem_details_serializer.data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)