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__)
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):
+ @swagger_auto_schema(
+ request_body=None,
+ responses={
+ status.HTTP_200_OK: QueryNsRespSerializer(help_text="NS instance", many=True),
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error",
+ status.HTTP_404_NOT_FOUND: "Ns instance does not exist"
+ }
+ )
def get(self, request, ns_instance_id):
- logger.debug("Enter NSDetailView::get ns(%s)", ns_instance_id)
- ns_filter = {"ns_inst_id": ns_instance_id}
- ret = GetNSInfoService(ns_filter).get_ns_info()
- if not ret:
- return Response(status=status.HTTP_404_NOT_FOUND)
- logger.debug("Leave NSDetailView::get::ret=%s", ret)
- return Response(data=ret, status=status.HTTP_200_OK)
+ try:
+ logger.debug("Enter NSDetailView::get ns(%s)", ns_instance_id)
+ ns_filter = {"ns_inst_id": ns_instance_id}
+ ret = GetNSInfoService(ns_filter).get_ns_info()
+ if not ret:
+ return Response(status=status.HTTP_404_NOT_FOUND)
+ logger.debug("Leave NSDetailView::get::ret=%s", ret)
+ resp_serializer = QueryNsRespSerializer(data=ret, many=True)
+ if not resp_serializer.is_valid():
+ raise NSLCMException(resp_serializer.errors)
+ return Response(data=resp_serializer.data, status=status.HTTP_200_OK)
+ except Exception as e:
+ logger.error(traceback.format_exc())
+ logger.error("Exception in GetNSDetail: %s", e.message)
+ return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ @swagger_auto_schema(
+ request_body=None,
+ responses={
+ status.HTTP_204_NO_CONTENT: None,
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error"
+ }
+ )
def delete(self, request, ns_instance_id):
- logger.debug("Enter NSDetailView::delete ns(%s)", ns_instance_id)
- DeleteNsService(ns_instance_id).do_biz()
- return Response(data={}, status=status.HTTP_204_NO_CONTENT)
+ try:
+ logger.debug("Enter NSDetailView::delete ns(%s)", ns_instance_id)
+ DeleteNsService(ns_instance_id).do_biz()
+ return Response(data={}, status=status.HTTP_204_NO_CONTENT)
+ except Exception as e:
+ logger.error(traceback.format_exc())
+ logger.error("Exception in delete NS: %s", e.message)
+ return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class SwaggerJsonView(APIView):