Add query vnf package from vfc-nfvo-catalog 37/15837/1
authorying.yunlong <ying.yunlong@zte.com.cn>
Wed, 27 Sep 2017 07:51:12 +0000 (15:51 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Wed, 27 Sep 2017 07:51:12 +0000 (15:51 +0800)
Change-Id: Id082d2cf14fa091d90d217ecde60cbca7c8dd948
Issue-ID: VFC-465
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
lcm/ns/ns_instant.py
lcm/ns/tests/test_ns_manual_scale.py
lcm/ns/tests/vnfs/tests.py
lcm/ns/vnfs/create_vnfs.py
lcm/pub/msapi/sdc_run_catalog.py

index 24a8d31..55b7f61 100644 (file)
@@ -24,6 +24,7 @@ from lcm.pub.database.models import DefPkgMappingModel, ServiceBaseInfoModel, In
 from lcm.pub.database.models import NSInstModel, NfPackageModel, VNFFGInstModel, WFPlanModel
 from lcm.pub.msapi.catalog import get_process_id, query_rawdata_from_catalog
 from lcm.pub.msapi.catalog import get_servicetemplate_id, get_servicetemplate
+from lcm.pub.msapi.sdc_run_catalog import query_vnfpackage_by_id
 from lcm.pub.msapi.wso2bpel import workflow_run
 from lcm.pub.msapi.extsys import select_vnfm
 from lcm.pub.utils.jobutil import JobUtil
@@ -78,8 +79,9 @@ class InstantNSService(object):
             plan_dict = json.JSONDecoder().decode(dst_plan)
             for vnf in ignore_case_get(plan_dict, "vnfs"):
                 vnfd_id = vnf['properties']['id']
-                vnfd = NfPackageModel.objects.get(vnfdid=vnfd_id)
-                vnfd_model = json.JSONDecoder().decode(vnfd.vnfdmodel)
+                # vnfd = NfPackageModel.objects.get(vnfdid=vnfd_id)
+                vnfpackage_info = query_vnfpackage_by_id(vnfd_id)
+                vnfd_model = json.JSONDecoder().decode(ignore_case_get(vnfpackage_info["packageInfo"], "vnfdModel"))
                 vnfm_type = vnfd_model["metadata"].get("vnfmType", "ztevmanagerdriver")
                 vimid = self.get_vnf_vim_id(vim_id, location_constraints, vnfd_id)
                 vnfm_info = select_vnfm(vnfm_type=vnfm_type, vim_id=vimid)
index ad7b222..79182fd 100644 (file)
@@ -32,7 +32,6 @@ class TestNsManualScale(TestCase):
         self.ns_package_id = str(uuid.uuid4())
         self.ns_inst_id = str(uuid.uuid4())
         self.job_id = JobUtil.create_job("NS", JOB_TYPE.MANUAL_SCALE_VNF, self.ns_inst_id)
-        NSDModel(id=self.ns_package_id, nsd_id=self.nsd_id, name='name').save()
 
         self.client = Client()
         self.context = '{"vnfs": ["a", "b"], "sfcs": ["c"], "vls": ["d", "e", "f"]}'
index e26e726..e417961 100644 (file)
@@ -97,9 +97,25 @@ class TestCreateVnfViews(TestCase):
     @mock.patch.object(restcall, 'call_req')
     def test_create_vnf_thread(self, mock_call_req):
         nf_inst_id, job_id = create_vnfs.prepare_create_params()
+        nf_package_info = {
+            "csarId": "zte_vbras",
+            "packageInfo": {
+                "vnfdId": "1",
+                "vnfPackageId": "zte_vbras",
+                "vnfdProvider": "1",
+                "vnfdVersion": "1",
+                "vnfVersion": "1",
+                "csarName": "1",
+                "vnfdModel": vnfd_model_dict,
+                "downloadUrl": "1"
+            },
+            "imageInfo": []
+        }
         mock_vals = {
             "/api/ztevmanagerdriver/v1/1/vnfs":
                 [0, json.JSONEncoder().encode({"jobId": self.job_id, "vnfInstanceId": 3}), '200'],
+            "/api/catalog/v1/vnfpackages/zte_vbras":
+                [0, json.JSONEncoder().encode(nf_package_info), '200'],
             "/external-system/esr-vnfm-list/esr-vnfm/1?depth=all":
                 [0, json.JSONEncoder().encode(vnfm_info), '200'],
             "/api/resmgr/v1/vnf":
index 7a17a4b..0a23ad5 100644 (file)
@@ -26,6 +26,7 @@ from lcm.pub.exceptions import NSLCMException
 from lcm.pub.msapi.aai import create_vnf_aai, create_vserver_aai
 from lcm.pub.msapi.extsys import get_vnfm_by_id, split_vim_to_owner_region, get_vim_by_id
 from lcm.pub.msapi.resmgr import create_vnf, create_vnf_creation_info
+from lcm.pub.msapi.sdc_run_catalog import query_vnfpackage_by_id
 from lcm.pub.msapi.vnfmdriver import send_nf_init_request
 from lcm.pub.utils.jobutil import JOB_MODEL_STATUS, JobUtil, JOB_TYPE
 from lcm.pub.utils.share_lock import do_biz_with_share_lock
@@ -127,12 +128,9 @@ class CreateVnfs(Thread):
         raise NSLCMException('Can not found vnf in nsd model')
 
     def check_nf_package_valid(self):
-        nf_package_info = NfPackageModel.objects.filter(vnfdid=self.vnfd_id)
-        if not nf_package_info:
-            logger.info('NF package not exist.')
-            raise NSLCMException('NF package not exist.')
-        self.nf_package_info = nf_package_info[0]
-        self.vnfd_model = json.loads(self.nf_package_info.vnfdmodel)
+        nf_package_info = query_vnfpackage_by_id(self.vnfd_id)
+        self.nf_package_info = nf_package_info["packageInfo"]
+        self.vnfd_model = ignore_case_get(self.nf_package_info, "vnfdModel")
 
     def get_virtual_link_info(self, vnf_id):
         virtual_link_list, ext_virtual_link = [], []
@@ -179,7 +177,7 @@ class CreateVnfs(Thread):
         virtual_link_list, ext_virtual_link = self.get_virtual_link_info(self.vnf_id)
         req_param = json.JSONEncoder().encode({
             'vnfInstanceName': self.vnf_inst_name, 
-            'vnfPackageId': self.nf_package_info.nfpackageid, 
+            'vnfPackageId': ignore_case_get(self.nf_package_info, "vnfPackageId"),
             'vnfDescriptorId': self.vnfd_id,
             'extVirtualLink': ext_virtual_link,
             'additionalParam': {"inputs": self.inputs, 
@@ -193,11 +191,11 @@ class CreateVnfs(Thread):
             mnfinstid=self.vnfm_nf_inst_id,
             nf_name=self.vnf_inst_name,
             vnf_id=self.vnf_id,
-            package_id=self.nf_package_info.nfpackageid,
+            package_id=ignore_case_get(self.nf_package_info, "vnfPackageId"),
             vnfm_inst_id=self.vnfm_inst_id,
             ns_inst_id=self.ns_inst_id,
-            version=self.nf_package_info.vnfversion,
-            vendor=self.nf_package_info.vendor,
+            version=ignore_case_get(self.nf_package_info, "vnfdVersion"),
+            vendor=ignore_case_get(self.nf_package_info, "vnfdProvider"),
             vnfd_model=self.vnfd_model,
             input_params=json.JSONEncoder().encode(self.inputs),
             lastuptime=now_time())
@@ -207,7 +205,7 @@ class CreateVnfs(Thread):
         self.vnfm_inst_name = ignore_case_get(resp_body, 'name')
 
     def send_create_vnf_request_to_resmgr(self):
-        pkg_vnfd = json.loads(self.nf_package_info.vnfdmodel)
+        pkg_vnfd = self.vnfd_model
         data = {
             'nf_inst_id': self.nf_inst_id,
             'vnfm_nf_inst_id': self.vnfm_nf_inst_id,
@@ -222,7 +220,8 @@ class CreateVnfs(Thread):
             'job_id': self.job_id,
             'nf_inst_status': VNF_STATUS.INSTANTIATING,
             'vnf_type': pkg_vnfd['metadata'].get('vnf_type', 'undefined'),
-            'nf_package_id': self.nf_package_info.nfpackageid}
+            'nf_package_id': ignore_case_get(self.nf_package_info, "vnfPackageId")
+        }
         create_vnf(data)
 
     def wait_vnfm_job_finish(self):
index 6e093d9..e62ae6d 100644 (file)
@@ -43,5 +43,13 @@ def query_nspackage_by_id(csar_id):
     ret = req_by_msb("/api/catalog/v1/nspackages/%s" % csar_id, "GET")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
-        raise NSLCMException("Failed to query CSAR(%s) from catalog." % csar_id)
+        raise NSLCMException("Failed to query ns CSAR(%s) from catalog." % csar_id)
+    return json.JSONDecoder().decode(ret[1])
+
+
+def query_vnfpackage_by_id(csar_id):
+    ret = req_by_msb("/api/catalog/v1/vnfpackages/%s" % csar_id, "GET")
+    if ret[0] != 0:
+        logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
+        raise NSLCMException("Failed to query vnf CSAR(%s) from catalog." % csar_id)
     return json.JSONDecoder().decode(ret[1])