from rest_framework.decorators import api_view
from rest_framework.response import Response
-from catalog.packages.biz.pnf_descriptor import create, upload
+from catalog.packages.biz.pnf_descriptor import create, query_multiple, upload
from catalog.packages.serializers.create_pnfd_info_request import \
CreatePnfdInfoRequestSerializer
from catalog.packages.serializers.pnfd_info import PnfdInfoSerializer
+from catalog.packages.serializers.pnfd_infos import PnfdInfosSerializer
from catalog.pub.exceptions import CatalogException
logger = logging.getLogger(__name__)
status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
}
)
-@api_view(http_method_names=['POST'])
+@swagger_auto_schema(
+ method='GET',
+ operation_description="Query multiple PNF descriptor resources",
+ request_body=no_body,
+ responses={
+ status.HTTP_200_OK: PnfdInfosSerializer(),
+ status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
+ }
+)
+@api_view(http_method_names=['POST', 'GET'])
def pnf_descriptors_rc(request, *args, **kwargs):
- try:
- create_pnfd_info_request = CreatePnfdInfoRequestSerializer(data=request.data)
- if not create_pnfd_info_request.is_valid():
- raise CatalogException
- data = create(create_pnfd_info_request.data)
- pnfd_info = PnfdInfoSerializer(data=data)
- if not pnfd_info.is_valid():
- raise CatalogException
- return Response(data=pnfd_info.data, status=status.HTTP_201_CREATED)
- except CatalogException:
- logger.error(traceback.format_exc())
- return Response(data={'error': 'Creating pnfd info failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ if request.method == 'POST':
+ try:
+ create_pnfd_info_request = CreatePnfdInfoRequestSerializer(data=request.data)
+ if not create_pnfd_info_request.is_valid():
+ raise CatalogException
+ data = create(create_pnfd_info_request.data)
+ pnfd_info = PnfdInfoSerializer(data=data)
+ if not pnfd_info.is_valid():
+ raise CatalogException
+ return Response(data=pnfd_info.data, status=status.HTTP_201_CREATED)
+ except CatalogException:
+ logger.error(traceback.format_exc())
+ return Response(data={'error': 'Creating pnfd info failed.'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+ if request.method == 'GET':
+ try:
+ data = query_multiple()
+ pnfd_infos = PnfdInfosSerializer(data=data)
+ if not pnfd_infos.is_valid():
+ raise CatalogException
+ return Response(data=pnfd_infos.data, status=status.HTTP_200_OK)
+ except CatalogException:
+ logger.error(traceback.format_exc())
+ return Response(
+ data={'error': 'Query of multiple PNF descriptor resources failed.'},
+ status=status.HTTP_500_INTERNAL_SERVER_ERROR
+ )
@swagger_auto_schema(