Deal with nfPackage 95/61995/1
authorbiancunkang <bian.cunkang@zte.com.cn>
Thu, 23 Aug 2018 07:14:01 +0000 (15:14 +0800)
committerbiancunkang <bian.cunkang@zte.com.cn>
Thu, 23 Aug 2018 07:14:01 +0000 (15:14 +0800)
deal with delete_vnf_pkg

Change-Id: Ibdf1857825f3d23648f70c7402f2375a41c397ae
Issue-ID: VFC-1038
Signed-off-by: biancunkang <bian.cunkang@zte.com.cn>
catalog/packages/biz/vnf_package.py
catalog/packages/views/vnf_package_views.py

index 1b77d57..a98336d 100644 (file)
@@ -24,6 +24,7 @@ from catalog.pub.config.config import CATALOG_ROOT_PATH
 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__)
 
@@ -82,8 +83,20 @@ def query_single(vnfPkgId):
     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):
index 4915f20..1659661 100644 (file)
@@ -27,7 +27,7 @@ from catalog.packages.serializers.create_vnf_pkg_info_req import CreateVnfPkgInf
 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__)
 
@@ -181,7 +181,7 @@ def vnf_package_rd(request, vnfPkgId):
     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())