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
url(r'^api/nsd/v1/pnf_descriptors/(?P<pnfdInfoId>[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<pnfdInfoId>[0-9a-zA-Z\-\_]+)$', pnfd_info.as_view(), name='pnfd_info_rd'),
+ url(r'^api/nsd/v1/pnf_descriptors/(?P<pnfdInfoId>[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<subscriptionId>[0-9a-zA-Z\-\_]+)$', nsd_subscription.as_view(), name='subscription_rd'),
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
@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(