+@swagger_auto_schema(
+ auto_schema=EtsiCatalogFileAutoSchema,
+ method="GET",
+ operation_description="Read VNFD of an on-boarded VNF package",
+ tags=[TAG_VNF_PACKAGE_API],
+ request_body=no_body,
+ responses={
+ status.HTTP_200_OK: openapi.Response('VNFD of an on-boarded VNF package',
+ schema=openapi.Schema(format=openapi.FORMAT_BINARY,
+ type=openapi.TYPE_STRING)),
+ status.HTTP_404_NOT_FOUND: openapi.Response("VNF package does not exist",
+ schema=openapi.Schema(type=openapi.TYPE_STRING)),
+ status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response("Internal error",
+ schema=openapi.Schema(type=openapi.TYPE_STRING))
+ },
+ operation_id='VNFD of an on-boarded VNF package'
+)
+@api_view(http_method_names=["GET"])
+@view_safe_call_with_log(logger=logger)
+def vnfd_rd(request, **kwargs):
+ """
+ Get the VNFD by VNF package id
+ :param request:
+ :param kwargs:
+ :return:
+ """
+ vnf_pkg_id = kwargs.get("vnfPkgId")
+ logger.debug("Read VNFD for VNF package %s" % vnf_pkg_id)
+ try:
+ file_iterator = VnfPackage().download_vnfd(vnf_pkg_id)
+ return StreamingHttpResponse(file_iterator, status=status.HTTP_200_OK)
+ except Exception as e:
+ logger.error(e)
+ raise e
+
+