diff options
-rw-r--r-- | lcm/v2/grant_vnf.py | 46 | ||||
-rw-r--r-- | lcm/v2/views.py | 14 |
2 files changed, 58 insertions, 2 deletions
diff --git a/lcm/v2/grant_vnf.py b/lcm/v2/grant_vnf.py new file mode 100644 index 00000000..832c7818 --- /dev/null +++ b/lcm/v2/grant_vnf.py @@ -0,0 +1,46 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import logging +import uuid + +logger = logging.getLogger(__name__) + + +class GrantVnf(object): + def __init__(self, grant_data): + self.data = grant_data + + def exec_grant(self): + if isinstance(self.data, (unicode, str)): + self.data = json.JSONDecoder().decode(self.data) + grant_resp = { + "id": str(uuid.uuid4()), + "vnfInstanceId": self.data.get("vnfInstanceId"), + "vnfLcmOpOccId": self.data.get("vnfLcmOpOccId"), + "_links": { + "self": { + "href": "/grants" + }, + "vnfLcmOpOcc": { + "href": self.data.get("_links").get("vnfLcmOpOcc") + }, + "vnfInstance": { + "href": self.data.get("_links").get("vnfInstance") + } + } + } + logger.debug("grant_resp=%s", grant_resp) + return grant_resp diff --git a/lcm/v2/views.py b/lcm/v2/views.py index 19f6740a..3fa240d9 100644 --- a/lcm/v2/views.py +++ b/lcm/v2/views.py @@ -21,6 +21,7 @@ from drf_yasg.utils import swagger_auto_schema from lcm.v2.serializers import GrantRequestSerializer from lcm.v2.serializers import GrantSerializer +from lcm.v2.grant_vnf import GrantVnf logger = logging.getLogger(__name__) @@ -29,7 +30,9 @@ class VnfGrantView(APIView): @swagger_auto_schema( request_body=GrantRequestSerializer(), responses={ - status.HTTP_201_CREATED: GrantSerializer(), + status.HTTP_201_CREATED: GrantSerializer( + help_text="The grant was created successfully (synchronous mode)." + ), status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error" } ) @@ -39,8 +42,15 @@ class VnfGrantView(APIView): req_serializer = GrantRequestSerializer(data=request.data) if not req_serializer.is_valid(): raise Exception(req_serializer.errors) + + grant_resp = GrantVnf(request.data).exec_grant() + + resp_serializer = GrantSerializer(data=grant_resp) + if not resp_serializer.is_valid(): + raise Exception(resp_serializer.errors) + + return Response(data=resp_serializer.data, status=status.HTTP_201_CREATED) except Exception as e: logger.error(traceback.format_exc()) logger.error("Exception in VnfGrant: %s", e.message) return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) - return Response(data={}, status=status.HTTP_201_CREATED) |