local_file.write(data)
 
 
-def query_single(pnfdInfoId):
+def query_single(pnfd_info_id):
     pkg_info = {}
-    pnf_pkg = PnfPackageModel.objects.filter(pnfPackageId=pnfdInfoId)
+    pnf_pkg = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
     if not pnf_pkg.exists():
-        raise CatalogException('PNF descriptor (%s) does not exist.' % pnfdInfoId)
+        raise CatalogException('PNF descriptor (%s) does not exist.' % pnfd_info_id)
     pkg_info["id"] = pnf_pkg[0].pnfPackageId
     pkg_info["pnfdId"] = pkg_info[0].pnfdId
     pkg_info["pnfdName"] = pnf_pkg[0].pnfdProductName
     pkg_info["userDefinedData"] = pnf_pkg[0].userDefinedData
     pkg_info["_links"] = ""  # TODO
     return pkg_info
+
+
+def delete_pnf(pnfd_info_id):
+    # TODO
+    pnf_pkg = PnfPackageModel.objects.filter(pnfPackageId=pnfd_info_id)
+    if not pnf_pkg.exists():
+        logger.debug('PNF resource(%s) is deleted.' % pnfd_info_id)
+        return
+    pnf_pkg.delete()
+    vnf_pkg_path = os.path.join(CATALOG_ROOT_PATH, pnfd_info_id)
+    fileutil.delete_dirs(vnf_pkg_path)
 
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 
-from catalog.packages.biz.pnf_descriptor import create, query_multiple, upload, query_single
+from catalog.packages.biz.pnf_descriptor import create, query_multiple, upload, query_single, delete_pnf
 from catalog.packages.serializers.create_pnfd_info_request import \
     CreatePnfdInfoRequestSerializer
 from catalog.packages.serializers.pnfd_info import PnfdInfoSerializer
             logger.error(traceback.format_exc())
             return Response(data={'error': 'unexpected exception'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
 
+    if request.method == 'DELETE':
+        logger.debug("Delete an individual PNFD resource> %s" % request.data)
+        try:
+            delete_pnf(pnfdInfoId)
+            return Response(data=None, status=status.HTTP_204_NO_CONTENT)
+        except CatalogException:
+            logger.error(traceback.format_exc())
+            return Response(data={'error': 'Delete an individual PNFD resource 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(
     method='POST',