aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-09-27 15:51:12 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-09-27 15:51:12 +0800
commit6abf69cd449c083eeb7d33b72de81e13682c3941 (patch)
treee5a01557c4ad5bd5478b028b72144339be361952
parent841223af12a9db964e9b6d5684b36f71567198b6 (diff)
Add query vnf package from vfc-nfvo-catalog
Change-Id: Id082d2cf14fa091d90d217ecde60cbca7c8dd948 Issue-ID: VFC-465 Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/ns/ns_instant.py6
-rw-r--r--lcm/ns/tests/test_ns_manual_scale.py1
-rw-r--r--lcm/ns/tests/vnfs/tests.py16
-rw-r--r--lcm/ns/vnfs/create_vnfs.py23
-rw-r--r--lcm/pub/msapi/sdc_run_catalog.py10
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])