From 6abf69cd449c083eeb7d33b72de81e13682c3941 Mon Sep 17 00:00:00 2001 From: "ying.yunlong" Date: Wed, 27 Sep 2017 15:51:12 +0800 Subject: Add query vnf package from vfc-nfvo-catalog Change-Id: Id082d2cf14fa091d90d217ecde60cbca7c8dd948 Issue-ID: VFC-465 Signed-off-by: ying.yunlong --- lcm/ns/ns_instant.py | 6 ++++-- lcm/ns/tests/test_ns_manual_scale.py | 1 - lcm/ns/tests/vnfs/tests.py | 16 ++++++++++++++++ lcm/ns/vnfs/create_vnfs.py | 23 +++++++++++------------ lcm/pub/msapi/sdc_run_catalog.py | 10 +++++++++- 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/lcm/ns/ns_instant.py b/lcm/ns/ns_instant.py index 24a8d314..55b7f610 100644 --- a/lcm/ns/ns_instant.py +++ b/lcm/ns/ns_instant.py @@ -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) diff --git a/lcm/ns/tests/test_ns_manual_scale.py b/lcm/ns/tests/test_ns_manual_scale.py index ad7b2223..79182fda 100644 --- a/lcm/ns/tests/test_ns_manual_scale.py +++ b/lcm/ns/tests/test_ns_manual_scale.py @@ -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"]}' diff --git a/lcm/ns/tests/vnfs/tests.py b/lcm/ns/tests/vnfs/tests.py index e26e7265..e4179617 100644 --- a/lcm/ns/tests/vnfs/tests.py +++ b/lcm/ns/tests/vnfs/tests.py @@ -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": diff --git a/lcm/ns/vnfs/create_vnfs.py b/lcm/ns/vnfs/create_vnfs.py index 7a17a4b5..0a23ad5b 100644 --- a/lcm/ns/vnfs/create_vnfs.py +++ b/lcm/ns/vnfs/create_vnfs.py @@ -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): diff --git a/lcm/pub/msapi/sdc_run_catalog.py b/lcm/pub/msapi/sdc_run_catalog.py index 6e093d93..e62ae6d6 100644 --- a/lcm/pub/msapi/sdc_run_catalog.py +++ b/lcm/pub/msapi/sdc_run_catalog.py @@ -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]) -- cgit 1.2.3-korg