From: biancunkang Date: Fri, 24 Aug 2018 01:59:26 +0000 (+0800) Subject: Deal with nfPackage X-Git-Tag: 1.2.0~76 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=a35ddcf53c80f910b84c5cb271a6fbd1960719a0;p=vfc%2Fnfvo%2Fcatalog.git Deal with nfPackage Add query pnf Change-Id: Ie3e1c61caaf200518f2fd98b32ae547d5b534f04 Issue-ID: VFC-1038 Signed-off-by: biancunkang --- diff --git a/catalog/packages/biz/pnf_descriptor.py b/catalog/packages/biz/pnf_descriptor.py index ea9b9aeb..87b6978f 100644 --- a/catalog/packages/biz/pnf_descriptor.py +++ b/catalog/packages/biz/pnf_descriptor.py @@ -87,3 +87,22 @@ def upload(files, pnfd_info_id): else: data = remote_file.read() local_file.write(data) + + +def query_single(pnfdInfoId): + pkg_info = {} + pnf_pkg = PnfPackageModel.objects.filter(pnfPackageId=pnfdInfoId) + if not pnf_pkg.exists(): + raise CatalogException('PNF descriptor (%s) does not exist.' % pnfdInfoId) + pkg_info["id"] = pnf_pkg[0].pnfPackageId + pkg_info["pnfdId"] = pkg_info[0].pnfdId + pkg_info["pnfdName"] = pnf_pkg[0].pnfdProductName + pkg_info["pnfdVersion"] = pnf_pkg[0].pnfdVersion + pkg_info["pnfdProvider"] = pnf_pkg[0].pnfVendor + pkg_info["pnfdInvariantId"] = "" # TODO + pkg_info["pnfdOnboardingState"] = pnf_pkg[0].onboardingState + pkg_info["onboardingFailureDetails"] = "" # TODO + pkg_info["pnfdUsageState"] = pnf_pkg[0].usageState + pkg_info["userDefinedData"] = pnf_pkg[0].userDefinedData + pkg_info["_links"] = "" # TODO + return pkg_info diff --git a/catalog/packages/urls.py b/catalog/packages/urls.py index 859c9c13..d6589b50 100644 --- a/catalog/packages/urls.py +++ b/catalog/packages/urls.py @@ -36,7 +36,7 @@ urlpatterns = [ url(r'^api/nsd/v1/pnf_descriptors/(?P[0-9a-zA-Z\-\_]+)/pnfd_content$', pnf_descriptor_views.pnfd_content_ru, name='pnfd_content_ru'), # TODO SOL005 & SOL003 - # url(r'^api/nsd/v1/pnf_descriptors/(?P[0-9a-zA-Z\-\_]+)$', pnfd_info.as_view(), name='pnfd_info_rd'), + url(r'^api/nsd/v1/pnf_descriptors/(?P[0-9a-zA-Z\-\_]+)$', pnf_descriptor_views.pnfd_info_rd, name='pnfd_info_rd'), # url(r'^api/nsd/v1/subscriptions', nsd_subscriptions.as_view(), name='subscriptions_rc'), # url(r'^api/nsd/v1/subscriptions/(?P[0-9a-zA-Z\-\_]+)$', nsd_subscription.as_view(), name='subscription_rd'), diff --git a/catalog/packages/views/pnf_descriptor_views.py b/catalog/packages/views/pnf_descriptor_views.py index 5b970272..76ec07ee 100644 --- a/catalog/packages/views/pnf_descriptor_views.py +++ b/catalog/packages/views/pnf_descriptor_views.py @@ -20,7 +20,7 @@ from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response -from catalog.packages.biz.pnf_descriptor import create, query_multiple, upload +from catalog.packages.biz.pnf_descriptor import create, query_multiple, upload, query_single from catalog.packages.serializers.create_pnfd_info_request import \ CreatePnfdInfoRequestSerializer from catalog.packages.serializers.pnfd_info import PnfdInfoSerializer @@ -31,27 +31,41 @@ logger = logging.getLogger(__name__) @swagger_auto_schema( + method='GET', + operation_description="Query an individual PNF descriptor resource", + request_body=no_body, responses={ - # status.HTTP_200_OK: Serializer(), + status.HTTP_200_OK: PnfdInfoSerializer(), status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" } ) -# @api_view(http_method_names=['GET']) -def query_multiple_pnfds(self, request): - # TODO - return None - - @swagger_auto_schema( + method='DELETE', + operation_description="Delete an individual PNF descriptor resource", + request_body=no_body, responses={ - # status.HTTP_200_OK: Serializer(), + status.HTTP_204_NO_CONTENT: None, status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error" } ) -# @api_view(http_method_names=['GET']) -def query_single_pnfd(self, request): - # TODO - return None +@api_view(http_method_names=['GET', 'DELETE']) +def pnfd_info_rd(request, pnfdInfoId): + if request.method == 'GET': + logger.debug("Query an individual PNF descriptor> %s" % request.data) + try: + res = query_single(pnfdInfoId) + query_serializer = PnfdInfoSerializer(data=res) + if not query_serializer.is_valid(): + raise CatalogException + return Response(data=query_serializer.data, status=status.HTTP_200_OK) + except CatalogException: + logger.error(traceback.format_exc()) + return Response(data={'error': 'Query an individual PNF descriptor failed.'}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) + except Exception as e: + logger.error(e.message) + logger.error(traceback.format_exc()) + return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) @swagger_auto_schema(