Fix vfc-catalog pep8 E123,E125,W391 issue
[vfc/nfvo/catalog.git] / catalog / packages / ns_package.py
index a5ee049..bd700b9 100644 (file)
@@ -18,14 +18,13 @@ import os
 import sys
 import traceback
 
-from catalog.pub.config.config import CATALOG_ROOT_PATH
+from catalog.pub.config.config import CATALOG_ROOT_PATH, CATALOG_URL_PATH
+from catalog.pub.config.config import REG_TO_MSB_REG_PARAM
 from catalog.pub.database.models import NSPackageModel, VnfPackageModel
 from catalog.pub.exceptions import CatalogException
-from catalog.pub.msapi import nfvolcm
 from catalog.pub.msapi import sdc
 from catalog.pub.utils import fileutil
 from catalog.pub.utils import toscaparser
-from rest_framework import status
 
 logger = logging.getLogger(__name__)
 
@@ -50,24 +49,16 @@ def ns_on_distribute(csar_id):
     return fmt_ns_pkg_rsp(STATUS_SUCCESS, ret[1], "")
 
 
-def ns_delete_csar(csar_id, force_delete):
+def ns_delete_csar(csar_id):
     ret = None
-    nsinstances = []
     try:
-       if force_delete:
-           ret = NsPackage().delete_csar(csar_id)
-           return fmt_ns_pkg_rsp(STATUS_SUCCESS, ret[1], "")
-       nsinstances = nfvolcm.get_nsInstances(csar_id)
-       if nsinstances:
-          if len(nsinstances) > 0:
-              return fmt_ns_pkg_rsp(STATUS_FAILED, "NS instances using the CSAR exists!",status.HTTP_412_PRECONDITION_FAILED)
-       ret = NsPackage().delete_csar(csar_id)
-       return fmt_ns_pkg_rsp(STATUS_SUCCESS, ret[1], "")
+        ret = NsPackage().delete_csar(csar_id)
     except CatalogException as e:
         return fmt_ns_pkg_rsp(STATUS_FAILED, e.message)
     except:
         logger.error(traceback.format_exc())
         return fmt_ns_pkg_rsp(STATUS_FAILED, str(sys.exc_info()))
+    return fmt_ns_pkg_rsp(STATUS_SUCCESS, ret[1], "")
 
 
 def ns_get_csars():
@@ -96,9 +87,10 @@ def parse_nsd(csar_id, inputs):
     ret= None
     try:
         ns_pkg = NSPackageModel.objects.filter(nsPackageId=csar_id)
-        if ns_pkg:
-            csar_path = ns_pkg[0].localFilePath
-            ret = {"model": toscaparser.parse_nsd(csar_path, inputs)}
+        if not ns_pkg:
+            raise CatalogException("NS CSAR(%s) does not exist." % csar_id)
+        csar_path = ns_pkg[0].localFilePath
+        ret = {"model": toscaparser.parse_nsd(csar_path, inputs)}
     except CatalogException as e:
         return [1, e.message]
     except:
@@ -119,7 +111,14 @@ class NsPackage(object):
         if NSPackageModel.objects.filter(nsPackageId=csar_id):
             raise CatalogException("NS CSAR(%s) already exists." % csar_id)
 
-        nsd,local_file_name,nsd_json = self.get_nsd(csar_id)
+        artifact = sdc.get_artifact(sdc.ASSETTYPE_SERVICES, csar_id)
+        local_path = os.path.join(CATALOG_ROOT_PATH, csar_id)
+        csar_name = "%s.csar" % artifact.get("name", csar_id)
+        local_file_name = sdc.download_artifacts(artifact["toscaModelURL"], 
+            local_path, csar_name)
+        
+        nsd_json = toscaparser.parse_nsd(local_file_name)
+        nsd = json.JSONDecoder().decode(nsd_json)
 
         nsd_id = nsd["metadata"]["id"]
         if NSPackageModel.objects.filter(nsdId=nsd_id):
@@ -127,7 +126,7 @@ class NsPackage(object):
 
         for vnf in nsd["vnfs"]:
             vnfd_id = vnf["properties"]["id"]
-            pkg = VnfPackageModel.objects.filter(vnfdId = vnfd_id)
+            pkg = VnfPackageModel.objects.filter(vnfdId=vnfd_id)
             if not pkg:
                 raise CatalogException("VNF package(%s) is not distributed." % vnfd_id)
 
@@ -138,46 +137,30 @@ class NsPackage(object):
             nsdDesginer=nsd["metadata"].get("vendor", "undefined"),
             nsdDescription=nsd["metadata"].get("description", ""),
             nsdVersion=nsd["metadata"].get("version", "undefined"),
-            nsPackageUri=local_file_name,
+            nsPackageUri=csar_name,
             sdcCsarId=csar_id,
             localFilePath=local_file_name,
             nsdModel=nsd_json
-            ).save()
+        ).save()
 
         return [0, "CSAR(%s) distributed successfully." % csar_id]
 
-    def get_nsd(self, csar_id):
-        artifact = sdc.get_artifact(sdc.ASSETTYPE_SERVICES, csar_id)
-        local_path = os.path.join(CATALOG_ROOT_PATH, csar_id)
-        local_file_name = sdc.download_artifacts(artifact["toscaModelURL"], local_path)
-
-        nsd_json = toscaparser.parse_nsd(local_file_name)
-        nsd = json.JSONDecoder().decode(nsd_json)
-
-        return nsd,local_file_name,nsd_json
-
     def delete_csar(self, csar_id):
-        '''
-        if force_delete:
-            NSInstModel.objects.filter(nspackage_id=csar_id).delete()
-        else:
-            if NSInstModel.objects.filter(nspackage_id=csar_id):
-                raise CatalogException("CSAR(%s) is in using, cannot be deleted." % csar_id)
-        '''
-        #nfvolcm.delete_ns_inst_mock()
         NSPackageModel.objects.filter(nsPackageId=csar_id).delete()
+        self.delete_catalog(csar_id)
         return [0, "Delete CSAR(%s) successfully." % csar_id]
 
-
     def get_csars(self):
-        csars = []
+        csars = {"csars": []}
         nss = NSPackageModel.objects.filter()
         for ns in nss:
-            csars.append({
+            csars["csars"].append({
                 "csarId": ns.nsPackageId,
-                "nsdId": ns.nsdId
+                "nsdId": ns.nsdId,
+                "nsdProvider": ns.nsdDesginer,
+                "nsdVersion": ns.nsdVersion
             })
-        return [0,csars]
+        return [0, csars]
 
     def get_csar(self, csar_id):
         package_info = {}
@@ -186,16 +169,15 @@ class NsPackage(object):
             package_info["nsdId"] = csars[0].nsdId
             package_info["nsdProvider"] = csars[0].nsdDesginer
             package_info["nsdVersion"] = csars[0].nsdVersion
-
-        #nss = NSInstModel.objects.filter(nspackage_id=csar_id)
-        nss = nfvolcm.get_nsInstances(csar_id)
-        ns_instance_info = [{
-            "nsInstanceId": ns["nsInstanceId"],
-            "nsInstanceName": ns["nsName"]} for ns in nss]
-
-        return [0, {"csarId": csar_id, 
-            "packageInfo": package_info, 
-            "nsInstanceInfo": ns_instance_info}]
+            package_info["csarName"] = csars[0].nsPackageUri
+            package_info["downloadUrl"] = "http://%s:%s/%s/%s/%s" % (
+                REG_TO_MSB_REG_PARAM["nodes"][0]["ip"],
+                REG_TO_MSB_REG_PARAM["nodes"][0]["port"],
+                CATALOG_URL_PATH,
+                csar_id,
+                csars[0].nsPackageUri)
+
+        return [0, {"csarId": csar_id, "packageInfo": package_info}]
 
     def delete_catalog(self, csar_id):
         local_path = os.path.join(CATALOG_ROOT_PATH, csar_id)