1 # Copyright 2017 ZTE Corporation.
\r
3 # Licensed under the Apache License, Version 2.0 (the "License");
\r
4 # you may not use this file except in compliance with the License.
\r
5 # You may obtain a copy of the License at
\r
7 # http://www.apache.org/licenses/LICENSE-2.0
\r
9 # Unless required by applicable law or agreed to in writing, software
\r
10 # distributed under the License is distributed on an "AS IS" BASIS,
\r
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
12 # See the License for the specific language governing permissions and
\r
13 # limitations under the License.
\r
18 from drf_yasg.utils import swagger_auto_schema
\r
19 from rest_framework import status
\r
20 from rest_framework.response import Response
\r
21 from rest_framework.views import APIView
\r
23 from lcm.nf.biz.terminate_vnf import TerminateVnf
\r
24 from lcm.nf.serializers.terminate_vnf_req import TerminateVnfRequestSerializer
\r
25 from lcm.nf.serializers.job_identifier import JobIdentifierSerializer
\r
26 from lcm.pub.exceptions import NFLCMException
\r
27 from lcm.pub.utils.jobutil import JobUtil
\r
30 logger = logging.getLogger(__name__)
\r
33 class TerminateVnfView(APIView):
\r
34 @swagger_auto_schema(
\r
35 request_body=TerminateVnfRequestSerializer(),
\r
37 status.HTTP_202_ACCEPTED: JobIdentifierSerializer(),
\r
38 status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
\r
41 def post(self, request, instanceid):
\r
42 logger.debug("TerminateVnf--post::> %s" % request.data)
\r
44 terminate_vnf_request_serializer = TerminateVnfRequestSerializer(data=request.data)
\r
45 if not terminate_vnf_request_serializer.is_valid():
\r
46 raise NFLCMException(terminate_vnf_request_serializer.errors)
\r
48 job_id = JobUtil.create_job('NF', 'TERMINATE', instanceid)
\r
49 JobUtil.add_job_status(job_id, 0, "TERM_VNF_READY")
\r
50 TerminateVnf(terminate_vnf_request_serializer.data, instanceid, job_id).start()
\r
52 terminate_vnf_response_serializer = JobIdentifierSerializer(data={"jobId": job_id})
\r
53 if not terminate_vnf_response_serializer.is_valid():
\r
54 raise NFLCMException(terminate_vnf_response_serializer.errors)
\r
56 return Response(data=terminate_vnf_response_serializer.data, status=status.HTTP_202_ACCEPTED)
\r
57 except NFLCMException as e:
\r
58 logger.error(e.message)
\r
59 return Response(data={'error': '%s' % e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\r
60 except Exception as e:
\r
61 logger.error(e.message)
\r
62 logger.error(traceback.format_exc())
\r
63 return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\r