from catalog.pub.database.models import VnfPackageModel
 from catalog.pub.exceptions import CatalogException
 from catalog.pub.utils.values import ignore_case_get
+from catalog.pub.utils import fileutil
 
 logger = logging.getLogger(__name__)
 
     return pkg_info
 
 
-def delete_single(vnfPkgId):
-    return None
+def delete_vnf_pkg(vnfPkgId):
+    vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId=vnfPkgId)
+    if not vnf_pkg.exists():
+        logger.debug('VNF package(%s) is deleted.' % vnfPkgId)
+        return
+    if vnf_pkg[0].onboardingState != "CREATED":
+        raise CatalogException("The VNF package (%s) is not on-boarded" % vnfPkgId)
+    if vnf_pkg[0].operationalState != "DISABLED":
+        raise CatalogException("The VNF package (%s) is not disabled" % vnfPkgId)
+    if vnf_pkg[0].usageState != "NOT_IN_USE":
+        raise CatalogException("The VNF package (%s) is in use" % vnfPkgId)
+    vnf_pkg.delete()
+    vnf_pkg_path = os.path.join(CATALOG_ROOT_PATH, vnfPkgId)
+    fileutil.delete_dirs(vnf_pkg_path)
 
 
 class VnfpkgUploadThread(threading.Thread):
 
 from catalog.packages.serializers.vnf_pkg_info import VnfPkgInfoSerializer
 from catalog.packages.serializers.vnf_pkg_infos import VnfPkgInfosSerializer
 from catalog.packages.biz.vnf_package import create_vnf_pkg, query_multiple, VnfpkgUploadThread, \
-    query_single, delete_single
+    query_single, delete_vnf_pkg
 
 logger = logging.getLogger(__name__)
 
     if request.method == 'DELETE':
         logger.debug("Delete an individual VNF package> %s" % request.data)
         try:
-            delete_single(vnfPkgId)
+            delete_vnf_pkg(vnfPkgId)
             return Response(data=None, status=status.HTTP_204_NO_CONTENT)
         except CatalogException:
             logger.error(traceback.format_exc())