diff options
author | fujinhua <fu.jinhua@zte.com.cn> | 2018-01-31 11:13:52 +0800 |
---|---|---|
committer | fujinhua <fu.jinhua@zte.com.cn> | 2018-01-31 11:13:52 +0800 |
commit | 21b26404b675007a9fb9209f60c08719e2a7a2dc (patch) | |
tree | c778ac8ab474e566e271a06381514ab7a42033fe | |
parent | e79b901117d098a0ba5d1f32f83532bb35b86efe (diff) |
Add create sfc swagger generate logic
Change-Id: Icb3526dee6aceb016b9dab2f68001c8c8af889f0
Issue-ID: VFC-694
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
-rw-r--r-- | lcm/ns/sfcs/views.py | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/lcm/ns/sfcs/views.py b/lcm/ns/sfcs/views.py index fdc30a55..85ef3bb1 100644 --- a/lcm/ns/sfcs/views.py +++ b/lcm/ns/sfcs/views.py @@ -22,6 +22,7 @@ import time from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView +from drf_yasg.utils import swagger_auto_schema from lcm.ns.sfcs.create_flowcla import CreateFlowClassifier from lcm.ns.sfcs.create_port_chain import CreatePortChain @@ -29,20 +30,41 @@ from lcm.ns.sfcs.create_portpairgp import CreatePortPairGroup from lcm.ns.sfcs.create_sfc_worker import CreateSfcWorker from lcm.ns.sfcs.sfc_instance import SfcInstance from lcm.ns.sfcs.utils import get_fp_id, ignorcase_get +from lcm.ns.sfcs.serializers import CreateSfcReqSerializer, CreateSfcRespSerializer logger = logging.getLogger(__name__) class SfcInstanceView(APIView): + @swagger_auto_schema( + request_body=CreateSfcReqSerializer(), + responses={ + status.HTTP_200_OK: CreateSfcRespSerializer(), + status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error" + } + ) def post(self, request): - data = { - 'nsinstid': request.data['nsInstanceId'], - "ns_model_data": json.loads(request.data['context']), - 'fpindex': request.data['fpindex'], - 'fpinstid': str(uuid.uuid4()), - 'sdncontrollerid': request.data["sdnControllerId"]} - rsp = SfcInstance(data).do_biz() - return Response(data=rsp, status=status.HTTP_200_OK) + try: + req_serializer = CreateSfcReqSerializer(data=request.data) + if not req_serializer.is_valid(): + raise Exception(req_serializer.errors) + + data = { + 'nsinstid': request.data['nsInstanceId'], + "ns_model_data": json.loads(request.data['context']), + 'fpindex': request.data['fpindex'], + 'fpinstid': str(uuid.uuid4()), + 'sdncontrollerid': request.data["sdnControllerId"]} + rsp = SfcInstance(data).do_biz() + + resp_serializer = CreateSfcRespSerializer(data=rsp) + if not resp_serializer.is_valid(): + raise Exception(resp_serializer.errors) + + return Response(data=rsp, status=status.HTTP_200_OK) + except Exception as e: + logger.error(traceback.format_exc()) + return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) class PortPairGpView(APIView): |