from catalog.pub.config.config import CATALOG_ROOT_PATH
 from catalog.pub.database.models import NSPackageModel, PnfPackageModel
-from catalog.pub.exceptions import CatalogException
+from catalog.pub.exceptions import CatalogException, ResourceNotFoundException
 from catalog.pub.utils import fileutil, toscaparser
 from catalog.pub.utils.values import ignore_case_get
 
 
 def query_multiple():
     pnf_pkgs = PnfPackageModel.objects.all()
-    if not pnf_pkgs.exists():
-        logger.error('PNFDs do not exist.')
-        raise CatalogException('PNFDs do not exist.')
     response_data = []
     for pnf_pkg in pnf_pkgs:
         data = fill_response_data(pnf_pkg)
     pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
     if not pnf_pkgs.exists():
         logger.error('PNFD(%s) does not exist.' % pnfd_info_id)
-        raise CatalogException('PNFD(%s) does not exist.' % pnfd_info_id)
+        raise ResourceNotFoundException('PNFD(%s) does not exist.' % pnfd_info_id)
     return fill_response_data(pnf_pkgs[0])
 
 
     pnf_pkgs = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
     if not pnf_pkgs.exists():
         logger.error('PNFD(%s) does not exist.' % pnfd_info_id)
-        raise CatalogException('PNFD(%s) does not exist.' % pnfd_info_id)
+        raise ResourceNotFoundException('PNFD(%s) does not exist.' % pnfd_info_id)
     if pnf_pkgs[0].onboardingState != 'ONBOARDED':
         logger.error('PNFD(%s) is not ONBOARDED.' % pnfd_info_id)
         raise CatalogException('PNFD(%s) is not ONBOARDED.' % pnfd_info_id)
     if not pnf_pkgs.exists():
         logger.info('PNFD(%s) is deleted.' % pnfd_info_id)
         return
-
+    '''
     if pnf_pkgs[0].usageState != 'NOT_IN_USE':
         logger.info('PNFD(%s) shall be NOT_IN_USE.' % pnfd_info_id)
         raise CatalogException('PNFD(%s) shall be NOT_IN_USE.' % pnfd_info_id)
+    '''
     ns_pkgs = NSPackageModel.objects.all()
     for ns_pkg in ns_pkgs:
         pnf_info_ids = []
 
 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
+from catalog.pub.exceptions import CatalogException, ResourceNotFoundException
 from drf_yasg.utils import no_body, swagger_auto_schema
 from rest_framework import status
 from rest_framework.decorators import api_view
     request_body=no_body,
     responses={
         status.HTTP_200_OK: PnfdInfoSerializer(),
+        status.HTTP_404_NOT_FOUND: "PNFD does not exist.",
         status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
     }
 )
             data = query_single(pnfdInfoId)
             pnfd_info = validate_data(data, PnfdInfoSerializer)
             return Response(data=pnfd_info.data, status=status.HTTP_200_OK)
+        except ResourceNotFoundException as e:
+            logger.error(e.message)
+            return Response(data={'error': "PNFD does not exist."}, status=status.HTTP_404_NOT_FOUND)
         except CatalogException as e:
             logger.error(e.message)
             error_msg = {'error': 'Query of a PNFD failed.'}
     request_body=no_body,
     responses={
         status.HTTP_204_NO_CONTENT: 'PNFD file',
+        status.HTTP_404_NOT_FOUND: "PNFD does not exist.",
         status.HTTP_500_INTERNAL_SERVER_ERROR: "Internal error"
     }
 )
         try:
             upload(files[0], pnfd_info_id)
             return Response(data=None, status=status.HTTP_204_NO_CONTENT)
+        except CatalogException as e:
+            logger.error(e.message)
+            error_msg = {'error': 'Uploading PNFD content failed.'}
         except Exception as e:
             logger.error(e.message)
             logger.error(traceback.format_exc())
             response['Content-Disposition'] = 'attachment; filename=%s' % file_name.encode('utf-8')
             response['Content-Length'] = os.path.getsize(file_path)
             return response
+        except ResourceNotFoundException as e:
+            logger.error(e.message)
+            return Response(data={'error': "PNFD does not exist."}, status=status.HTTP_404_NOT_FOUND)
+        except CatalogException as e:
+            logger.error(e.message)
+            error_msg = {'error': 'Downloading PNFD content failed.'}
         except Exception as e:
             logger.error(e.message)
             logger.error(traceback.format_exc())