Fix vfc-catalog pep8 E123,E125,W391 issue
[vfc/nfvo/catalog.git] / catalog / packages / ns_package.py
index 5c32e4e..bd700b9 100644 (file)
 
 import json
 import logging
-
-import traceback
-import sys
 import os
+import sys
+import traceback
 
-from catalog.pub.database.models import NSDModel, NfPackageModel
-from catalog.pub.utils.values import ignore_case_get
+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 sdc
-from catalog.pub.config.config import CATALOG_ROOT_PATH
-from catalog.pub.utils import toscaparser
 from catalog.pub.utils import fileutil
-from catalog.pub.msapi import nfvolcm
+from catalog.pub.utils import toscaparser
 
 logger = logging.getLogger(__name__)
 
@@ -51,10 +49,10 @@ 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
     try:
-        ret = NsPackage().delete_csar(csar_id, force_delete)
+        ret = NsPackage().delete_csar(csar_id)
     except CatalogException as e:
         return fmt_ns_pkg_rsp(STATUS_FAILED, e.message)
     except:
@@ -62,6 +60,7 @@ def ns_delete_csar(csar_id, force_delete):
         return fmt_ns_pkg_rsp(STATUS_FAILED, str(sys.exc_info()))
     return fmt_ns_pkg_rsp(STATUS_SUCCESS, ret[1], "")
 
+
 def ns_get_csars():
     ret = None
     try:
@@ -84,21 +83,21 @@ def ns_get_csar(csar_id):
         return [1, str(sys.exc_info())]
     return ret
 
-def parser_nsmodel(csar_id,inputs):
-    ret = None
+def parse_nsd(csar_id, inputs):
+    ret= None
     try:
-        nf_pkg = NSDModel.objects.filter(id=csar_id)
-        if nf_pkg:
-             csar_path=nf_pkg["nsd_path"]
-             ret=toscaparser.parse_nsd(csar_path,inputs)
+        ns_pkg = NSPackageModel.objects.filter(nsPackageId=csar_id)
+        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:
         logger.error(traceback.format_exc())
         return [1, str(sys.exc_info())]
-    return ret
+    return [0, ret]
 
-###############################################################################################################
 
 class NsPackage(object):
     """
@@ -109,88 +108,77 @@ class NsPackage(object):
         pass
 
     def on_distribute(self, csar_id):
-        if NSDModel.objects.filter(id=csar_id):
+        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 NSDModel.objects.filter(nsd_id=nsd_id):
+        if NSPackageModel.objects.filter(nsdId=nsd_id):
             raise CatalogException("NSD(%s) already exists." % nsd_id)
 
         for vnf in nsd["vnfs"]:
             vnfd_id = vnf["properties"]["id"]
-            pkg = NfPackageModel.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)
 
-        NSDModel(
-            id=csar_id,
-            nsd_id=nsd_id,
-            name=nsd["metadata"].get("name", nsd_id),
-            vendor=nsd["metadata"].get("vendor", "undefined"),
-            description=nsd["metadata"].get("description", ""),
-            version=nsd["metadata"].get("version", "undefined"),
-            nsd_path=local_file_name,
-            nsd_model=nsd_json).save()
+        NSPackageModel(
+            nsPackageId=csar_id,
+            nsdId=nsd_id,
+            nsdName=nsd["metadata"].get("name", nsd_id),
+            nsdDesginer=nsd["metadata"].get("vendor", "undefined"),
+            nsdDescription=nsd["metadata"].get("description", ""),
+            nsdVersion=nsd["metadata"].get("version", "undefined"),
+            nsPackageUri=csar_name,
+            sdcCsarId=csar_id,
+            localFilePath=local_file_name,
+            nsdModel=nsd_json
+        ).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, force_delete):
-        '''
-        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()
-        NSDModel.objects.filter(id=csar_id).delete()
+    def delete_csar(self, csar_id):
+        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 = []
-        nss = NSDModel.objects.filter()
+        csars = {"csars": []}
+        nss = NSPackageModel.objects.filter()
         for ns in nss:
-            csars.append({
-                "csarId": ns.id,
-                "nsdId": ns.nsd_id
+            csars["csars"].append({
+                "csarId": ns.nsPackageId,
+                "nsdId": ns.nsdId,
+                "nsdProvider": ns.nsdDesginer,
+                "nsdVersion": ns.nsdVersion
             })
         return [0, csars]
 
     def get_csar(self, csar_id):
         package_info = {}
-        csars = NSDModel.objects.filter(id=csar_id)
+        csars = NSPackageModel.objects.filter(nsPackageId=csar_id)
         if csars:
-            package_info["nsdId"] = csars[0].nsd_id
-            package_info["nsdProvider"] = csars[0].vendor
-            package_info["nsdVersion"] = csars[0].version
-
-        #nss = NSInstModel.objects.filter(nspackage_id=csar_id)
-        nss = nfvolcm.getNsInsts_mock()
-        ns_instance_info = [{
-            "nsInstanceId": ns.id, 
-            "nsInstanceName": ns.name} for ns in nss]
-
-        return [0, {"csarId": csar_id, 
-            "packageInfo": package_info, 
-            "nsInstanceInfo": ns_instance_info}]
+            package_info["nsdId"] = csars[0].nsdId
+            package_info["nsdProvider"] = csars[0].nsdDesginer
+            package_info["nsdVersion"] = csars[0].nsdVersion
+            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)
         fileutil.delete_dirs(local_path)
-
-
-
-       
\ No newline at end of file