diff options
Diffstat (limited to 'gvnfmadapter/driver/interfaces/views.py')
-rw-r--r-- | gvnfmadapter/driver/interfaces/views.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/gvnfmadapter/driver/interfaces/views.py b/gvnfmadapter/driver/interfaces/views.py index 362fe12..1cf6fa2 100644 --- a/gvnfmadapter/driver/interfaces/views.py +++ b/gvnfmadapter/driver/interfaces/views.py @@ -29,6 +29,8 @@ from driver.interfaces.serializers.serializers import VnfOperRespSerializer from driver.interfaces.serializers.serializers import VnfTermReqSerializer, VnfQueryRespSerializer from driver.interfaces.serializers.grant_request import GrantRequestSerializer from driver.interfaces.serializers.grant import GrantSerializer +from driver.interfaces.serializers.lccn_subscription import LccnSubscriptionSerializer +from driver.interfaces.serializers.lccn_subscription_request import LccnSubscriptionRequestSerializer from driver.pub.exceptions import GvnfmDriverException from driver.pub.utils import restcall from driver.pub.utils.restcall import req_by_msb @@ -345,6 +347,38 @@ class QuerySingleVnfLcmOpOcc(APIView): return Response(data={'error': traceback.format_exc()}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) +class Subscription(APIView): + @swagger_auto_schema( + request_body=LccnSubscriptionRequestSerializer(), + responses={ + status.HTTP_201_CREATED: LccnSubscriptionSerializer(), + status.HTTP_303_SEE_OTHER: None, + status.HTTP_500_INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR" + } + ) + def post(self, request, vnfmtype): + logger.debug("Subscription--post::> %s" % request.data) + logger.debug("Subscription begin!") + try: + lccn_subscription_request_serializer = LccnSubscriptionRequestSerializer(data=request.data) + if not lccn_subscription_request_serializer.is_valid(): + raise GvnfmDriverException(lccn_subscription_request_serializer.error_messages) + resp_data = do_subscription(request.data) + lccn_subscription_serializer = LccnSubscriptionSerializer(data=resp_data) + if not lccn_subscription_serializer.is_valid(): + logger.debug("[%s]resp_data=%s" % (fun_name(), resp_data)) + raise GvnfmDriverException(lccn_subscription_serializer.errors) + logger.debug("Subscription end!") + return Response(data=lccn_subscription_serializer.data, status=status.HTTP_201_CREATED) + except GvnfmDriverException as e: + logger.error(e.message) + return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) + except Exception as e: + logger.error(e.message) + logger.error(traceback.format_exc()) + return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) + + def call_vnfm(resource, method, vnfm_info, data=""): ret = restcall.call_req( base_url=ignorcase_get(vnfm_info, "url"), @@ -493,3 +527,13 @@ def do_queryvnf(data, vnfm_id, vnfInstanceId): logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) raise GvnfmDriverException('Failed to query vnf.') return json.JSONDecoder().decode(ret[1]) + + +def do_subscription(data): + logger.debug("[%s] request.data=%s", fun_name(), data) + ret = req_by_msb("api/vnflcm/v1/subscriptions", "POST", json.JSONEncoder().encode(data)) + logger.debug("[%s] call_req ret=%s", fun_name(), ret) + if ret[0] != 0: + logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) + raise GvnfmDriverException('Failed to subscribe.') + return json.JSONDecoder().decode(ret[1]) |