aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lcm/ns/serializers.py6
-rw-r--r--lcm/ns/tests/test_ns_heal.py3
-rw-r--r--lcm/ns/views.py28
3 files changed, 28 insertions, 9 deletions
diff --git a/lcm/ns/serializers.py b/lcm/ns/serializers.py
index 644f1329..9861e713 100644
--- a/lcm/ns/serializers.py
+++ b/lcm/ns/serializers.py
@@ -103,7 +103,11 @@ class HealNsAdditionalParamsSerializer(serializers.Serializer):
actionvminfo = ActionVmSerializer(help_text="VM info of action", required=False, allow_null=True)
-class HealNsReqSerializer(serializers.Serializer):
+class HealVnfDataSerializer(serializers.Serializer):
vnfInstanceId = serializers.CharField(help_text="ID of VNF Instance", required=True)
cause = serializers.CharField(help_text="Cause of NS heal", required=False, allow_null=True)
additionalParams = HealNsAdditionalParamsSerializer(help_text="Additional params of NS heal", required=False, allow_null=True)
+
+
+class HealNsReqSerializer(serializers.Serializer):
+ healVnfData = HealVnfDataSerializer(help_text="Data of heal VNF", required=False, allow_null=True)
diff --git a/lcm/ns/tests/test_ns_heal.py b/lcm/ns/tests/test_ns_heal.py
index 46f13ce6..a3b8498e 100644
--- a/lcm/ns/tests/test_ns_heal.py
+++ b/lcm/ns/tests/test_ns_heal.py
@@ -66,7 +66,7 @@ class TestHealNsViews(TestCase):
}
response = self.client.post("/api/nslcm/v1/ns/%s/heal" % self.ns_inst_id, data=data)
- self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
+ self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.data)
self.assertIsNotNone(response.data)
self.assertIn("jobId", response.data)
self.assertNotIn("error", response.data)
@@ -128,6 +128,5 @@ class TestHealNsViews(TestCase):
data = {}
response = self.client.post("/api/nslcm/v1/ns/%s/heal" % self.ns_inst_id, data=data)
- self.assertEqual(response.data["error"], "healVnfData parameter does not exist or value is incorrect.")
self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
self.assertIn("error", response.data)
diff --git a/lcm/ns/views.py b/lcm/ns/views.py
index 6b14f584..23c3adc9 100644
--- a/lcm/ns/views.py
+++ b/lcm/ns/views.py
@@ -37,6 +37,7 @@ from lcm.ns.serializers import QueryNsRespSerializer
from lcm.ns.serializers import NsOperateJobSerializer
from lcm.ns.serializers import InstantNsReqSerializer
from lcm.ns.serializers import TerminateNsReqSerializer
+from lcm.ns.serializers import HealNsReqSerializer
from lcm.pub.exceptions import NSLCMException
logger = logging.getLogger(__name__)
@@ -156,18 +157,33 @@ class TerminateNSView(APIView):
class NSHealView(APIView):
+ @swagger_auto_schema(
+ request_body=HealNsReqSerializer(),
+ responses={
+ status.HTTP_202_ACCEPTED: NsOperateJobSerializer(),
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error"
+ }
+ )
def post(self, request, ns_instance_id):
- logger.debug("Enter HealNSView::post %s", request.data)
- logger.debug("Enter HealNSView:: %s", ns_instance_id)
- job_id = JobUtil.create_job("VNF", JOB_TYPE.HEAL_VNF, ns_instance_id)
try:
+ logger.debug("Enter HealNSView::post %s", request.data)
+ logger.debug("Enter HealNSView:: %s", ns_instance_id)
+ req_serializer = HealNsReqSerializer(data=request.data)
+ if not req_serializer.is_valid():
+ raise NSLCMException(req_serializer.errors)
+
+ job_id = JobUtil.create_job("VNF", JOB_TYPE.HEAL_VNF, ns_instance_id)
NSHealService(ns_instance_id, request.data, job_id).start()
+
+ resp_serializer = NsOperateJobSerializer(data={'jobId': job_id})
+ if not resp_serializer.is_valid():
+ raise NSLCMException(resp_serializer.errors)
+
+ logger.debug("Leave HealNSView::post ret=%s", resp_serializer.data)
+ return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED)
except Exception as e:
logger.error("Exception in HealNSView: %s", e.message)
return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
- ret = {'jobId': job_id}
- logger.debug("Leave HealNSView::post ret=%s", ret)
- return Response(data=ret, status=status.HTTP_202_ACCEPTED)
class NSDetailView(APIView):