diff options
author | ying.yunlong <ying.yunlong@zte.com.cn> | 2018-02-07 14:59:50 +0800 |
---|---|---|
committer | ying.yunlong <ying.yunlong@zte.com.cn> | 2018-02-07 14:59:50 +0800 |
commit | 386aa32c8652b6f69489cca58296f8f9fe9a92be (patch) | |
tree | 270825612bcb4cfd3e8c7ee27b91d072d892a589 | |
parent | cbc83a8137bd9c9b48594ee353aa57400a66f9dd (diff) |
Add vfc-ztevnfmdriver grant schema
Change-Id: Id5b4b2031695453dc4f33d439ca09368ee74151d
Issue-ID: VFC-736
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r-- | zte/vmanager/driver/interfaces/serializers.py | 13 | ||||
-rw-r--r-- | zte/vmanager/driver/interfaces/urls.py | 2 | ||||
-rw-r--r-- | zte/vmanager/driver/interfaces/views.py | 99 |
3 files changed, 61 insertions, 53 deletions
diff --git a/zte/vmanager/driver/interfaces/serializers.py b/zte/vmanager/driver/interfaces/serializers.py index 6e9456ce..d2cd2bc1 100644 --- a/zte/vmanager/driver/interfaces/serializers.py +++ b/zte/vmanager/driver/interfaces/serializers.py @@ -79,6 +79,19 @@ class GrantReqSerializer(serializers.Serializer): required=False) +class GrantRespSerializer(serializers.Serializer): + vimid = serializers.CharField( + help_text="vimid", + max_length=255, + required=True, + allow_null=True) + tenant = serializers.CharField( + help_text="tenant", + max_length=255, + required=True, + allow_null=True) + + class VMIDlistSerializer(serializers.Serializer): VMID = serializers.CharField( help_text="VMID", diff --git a/zte/vmanager/driver/interfaces/urls.py b/zte/vmanager/driver/interfaces/urls.py index 0167cfaa..d8fb6f66 100644 --- a/zte/vmanager/driver/interfaces/urls.py +++ b/zte/vmanager/driver/interfaces/urls.py @@ -24,7 +24,7 @@ urlpatterns = [ views.query_vnf, name='query_vnf'), url(r'^api/ztevnfmdriver/v1/(?P<vnfmid>[0-9a-zA-Z\-\_]+)/jobs/(?P<jobid>[0-9a-zA-Z\-\_]+)$', views.operation_status, name='operation_status'), - url(r'^api/ztevnfmdriver/v1/resource/grant$', views.grantvnf, name='grantvnf'), + url(r'^api/ztevnfmdriver/v1/resource/grant$', views.GrantVnf.as_view(), name='grantvnf'), url(r'^api/ztevnfmdriver/v1/vnfs/lifecyclechangesnotification$', views.Notify.as_view(), name='notify'), url(r'^api/ztevnfmdriver/v1/(?P<vnfmid>[0-9a-zA-Z\-\_]+)/vnfs/(?P<vnfInstanceId>[0-9a-zA-Z\-\_]+)/scale$', views.Scale.as_view(), name='scale'), diff --git a/zte/vmanager/driver/interfaces/views.py b/zte/vmanager/driver/interfaces/views.py index 0866301e..0eb2449d 100644 --- a/zte/vmanager/driver/interfaces/views.py +++ b/zte/vmanager/driver/interfaces/views.py @@ -25,7 +25,7 @@ from rest_framework.response import Response from rest_framework.views import APIView from driver.interfaces.serializers import HealReqSerializer, InstScaleHealRespSerializer, ScaleReqSerializer, \ - NotifyReqSerializer + NotifyReqSerializer, GrantRespSerializer, GrantReqSerializer from driver.pub.config.config import VNF_FTP from driver.pub.utils import restcall from driver.pub.utils.restcall import req_by_msb @@ -257,58 +257,53 @@ def operation_status(request, *args, **kwargs): return Response(data=resp_data, status=ret[2]) -@api_view(http_method_names=['PUT']) -def grantvnf(request, *args, **kwargs): - logger.info("=====grantvnf=====") - try: - logger.info("req_data = %s", request.data) - grant_vnf_param_map = { - "VNFMID": "", - "NFVOID": "", - "VIMID": "", - "ExVIMIDList": "", - "ExVIMID": "", - "Tenant": "", - "VNFInstanceID": "vnfInstanceId", - "OperationRight": "", - "VMList": "", - "VMFlavor": "", - "VMNumber": "" - } - data = mapping_conv(grant_vnf_param_map, request.data) - data["vnfDescriptorId"] = "" - if ignorcase_get(request.data, "operationright") == 0: - data["lifecycleOperation"] = "Instantiate" - data["addresource"] = [] - for vm in ignorcase_get(request.data, "vmlist"): - for i in range(int(ignorcase_get(vm, "vmnumber"))): - data["addresource"].append( - { - "type": "vdu", - "resourceDefinitionId": i, - "vdu": ignorcase_get(vm, "vmflavor"), - "vimid": ignorcase_get(vm, "vimid"), - "tenant": ignorcase_get(vm, "tenant")}) - - data["additionalparam"] = {} - data["additionalparam"]["vnfmid"] = ignorcase_get(request.data, "vnfmid") - data["additionalparam"]["vimid"] = ignorcase_get(request.data, "vimid") - data["additionalparam"]["tenant"] = ignorcase_get(request.data, "tenant") - - ret = req_by_msb('api/nslcm/v1/ns/grantvnf', "POST", content=json.JSONEncoder().encode(data)) - logger.info("ret = %s", ret) - if ret[0] != 0: - return Response(data={'error': ret[1]}, status=ret[2]) - resp = json.JSONDecoder().decode(ret[1]) - resp_data = { - 'vimid': ignorcase_get(resp['vim'], 'vimid'), - 'tenant': ignorcase_get(ignorcase_get(resp['vim'], 'accessinfo'), 'tenant') +class GrantVnf(APIView): + @swagger_auto_schema( + request_body=GrantReqSerializer(), + responses={ + status.HTTP_201_CREATED: GrantRespSerializer(), + status.HTTP_500_INTERNAL_SERVER_ERROR: 'Internal error' } - logger.info("[%s]resp_data=%s", fun_name(), resp_data) - except Exception as e: - logger.error("Error occurred in Grant VNF.") - raise e - return Response(data=resp_data, status=ret[2]) + ) + def put(self, request): + logger.info("=====GrantVnf=====") + try: + logger.info("req_data = %s", request.data) + data = {} + data["vnfInstanceId"] = ignorcase_get(request.data, "vnfistanceid") + data["vnfDescriptorId"] = "" + if ignorcase_get(request.data, "operationright") == 0: + data["lifecycleOperation"] = "Instantiate" + data["addresource"] = [] + for vm in ignorcase_get(request.data, "vmlist"): + for i in range(int(ignorcase_get(vm, "vmnumber"))): + data["addresource"].append( + { + "type": "vdu", + "resourceDefinitionId": i, + "vdu": ignorcase_get(vm, "vmflavor"), + "vimid": ignorcase_get(vm, "vimid"), + "tenant": ignorcase_get(vm, "tenant")}) + + data["additionalparam"] = {} + data["additionalparam"]["vnfmid"] = ignorcase_get(request.data, "vnfmid") + data["additionalparam"]["vimid"] = ignorcase_get(request.data, "vimid") + data["additionalparam"]["tenant"] = ignorcase_get(request.data, "tenant") + + ret = req_by_msb('api/nslcm/v1/ns/grantvnf', "POST", content=json.JSONEncoder().encode(data)) + logger.info("ret = %s", ret) + if ret[0] != 0: + return Response(data={'error': ret[1]}, status=ret[2]) + resp = json.JSONDecoder().decode(ret[1]) + resp_data = { + 'vimid': ignorcase_get(resp['vim'], 'vimid'), + 'tenant': ignorcase_get(ignorcase_get(resp['vim'], 'accessinfo'), 'tenant') + } + logger.info("[%s]resp_data=%s", fun_name(), resp_data) + return Response(data=resp_data, status=status.HTTP_201_CREATED) + except Exception as e: + logger.error("Error occurred in Grant VNF.") + raise e class Notify(APIView): |