From 662bbb1aba0521856e2e8e824dc37284d17fc19b Mon Sep 17 00:00:00 2001 From: "ying.yunlong" Date: Mon, 12 Feb 2018 15:47:15 +0800 Subject: Add vfc-ztevnfmdriver instantiate swagger Change-Id: I78f4e3eb5b79bf3c8c18aff13f161a08c646e439 Issue-ID: VFC-736 Signed-off-by: ying.yunlong --- zte/vmanager/driver/interfaces/serializers.py | 3 +- zte/vmanager/driver/interfaces/views.py | 44 ++++++++++++++++++--------- 2 files changed, 30 insertions(+), 17 deletions(-) (limited to 'zte') diff --git a/zte/vmanager/driver/interfaces/serializers.py b/zte/vmanager/driver/interfaces/serializers.py index 09dbc084..a19613ca 100644 --- a/zte/vmanager/driver/interfaces/serializers.py +++ b/zte/vmanager/driver/interfaces/serializers.py @@ -79,9 +79,8 @@ class InstantiateVnfRequestSerializer(serializers.Serializer): required=True, max_length=255, allow_null=True) - additionalParam = serializers.DictField( + additionalParam = additionalParamSerializer( help_text="additionalParam", - child=additionalParamSerializer(help_text='additionalParam'), required=True, allow_null=True) diff --git a/zte/vmanager/driver/interfaces/views.py b/zte/vmanager/driver/interfaces/views.py index 93089670..1a1976ed 100644 --- a/zte/vmanager/driver/interfaces/views.py +++ b/zte/vmanager/driver/interfaces/views.py @@ -97,27 +97,36 @@ class InstamtiateVnf(APIView): def post(self, request, vnfmid): try: logger.debug("[%s] request.data=%s", fun_name(), request.data) + instantiateVnfRequestSerializer = InstantiateVnfRequestSerializer(data=request.data) + if not instantiateVnfRequestSerializer.is_valid(): + raise Exception(instantiateVnfRequestSerializer.errors) + ret = get_vnfminfo_from_nslcm(vnfmid) if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) + raise Exception(ret[1]) + vnfm_info = json.JSONDecoder().decode(ret[1]) logger.debug("[%s] vnfm_info=%s", fun_name(), vnfm_info) - vnf_package_id = ignorcase_get(request.data, "vnfPackageId") + vnf_package_id = ignorcase_get(instantiateVnfRequestSerializer.data, "vnfPackageId") ret = vnfd_get(vnf_package_id) if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) + raise Exception(ret[1]) + vnfd_info = json.JSONDecoder().decode(ret[1]) logger.debug("[%s] vnfd_info=%s", fun_name(), vnfd_info) csar_id = ignorcase_get(vnfd_info, "csarId") ret = vnfpackage_get(csar_id) if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) + raise Exception(ret[1]) + vnf_package_info = json.JSONDecoder().decode(ret[1]) packageInfo = ignorcase_get(vnf_package_info, "packageInfo") logger.debug("[%s] packageInfo=%s", fun_name(), packageInfo) - data = {} - data["NFVOID"] = 1 - data["VNFMID"] = vnfmid + data = { + "NFVOID": 1, + "VNFMID": vnfmid, + "extension": {}, + } vnfdModel = json.loads(ignorcase_get(packageInfo, "vnfdModel")) metadata = ignorcase_get(vnfdModel, "metadata") vnfd_name = ignorcase_get(metadata, "name") @@ -134,14 +143,13 @@ class InstamtiateVnf(APIView): data["VNFURL"] = data["VNFD"] - data["extension"] = {} - for name, value in ignorcase_get(ignorcase_get(request.data, "additionalParam"), "inputs").items(): + for name, value in ignorcase_get(ignorcase_get(instantiateVnfRequestSerializer.data, "additionalParam"), "inputs").items(): inputs.append({"name": name, "value": value}) data["extension"]["inputs"] = json.dumps(inputs) - additionalParam = ignorcase_get(request.data, "additionalParam") + additionalParam = ignorcase_get(instantiateVnfRequestSerializer.data, "additionalParam") data["extension"]["extVirtualLinks"] = ignorcase_get(additionalParam, "extVirtualLinks") - data["extension"]["vnfinstancename"] = ignorcase_get(request.data, "vnfInstanceName") + data["extension"]["vnfinstancename"] = ignorcase_get(instantiateVnfRequestSerializer.data, "vnfInstanceName") data["extension"]["vnfid"] = data["VNFD"] data["extension"]["multivim"] = 0 logger.debug("[%s] call_req data=%s", fun_name(), data) @@ -157,17 +165,23 @@ class InstamtiateVnf(APIView): logger.debug("[%s] call_req ret=%s", fun_name(), ret) if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) + raise Exception(ret[1]) + resp = json.JSONDecoder().decode(ret[1]) resp_data = { "vnfInstanceId": ignorcase_get(resp, "VNFInstanceID"), "jobId": ignorcase_get(resp, "JobId") } logger.debug("[%s]resp_data=%s", fun_name(), resp_data) + instRespSerializer = InstScaleHealRespSerializer(data=resp_data) + if not instRespSerializer.is_valid(): + raise Exception(instRespSerializer.errors) + + return Response(data=instRespSerializer.data, status=status.HTTP_200_OK) except Exception as e: - logger.error("Error occurred when instantiating VNF") - raise e - return Response(data=resp_data, status=ret[2]) + logger.error("Error occurred when instantiating VNF,error:%s", e.message) + logger.error(traceback.format_exc()) + return Response(data={'error': 'InstantiateVnf expection'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) class TerminateVnf(APIView): -- cgit 1.2.3-korg