aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryangyan <yangyanyj@chinamobile.com>2019-04-08 15:09:06 +0800
committeryangyan <yangyanyj@chinamobile.com>2019-04-08 15:12:39 +0800
commit0dd1bf3686a487f56a594a6a55ecaaafbe8793a7 (patch)
treecaa33a18ef116b4f9a076fbbc2bd94a417a7db3b
parent4e78e21f8c923123c6a5feff98933dceaa5b6959 (diff)
Add testcase for ns instantiate
Change-Id: I9c12488703dac3ad96ab14109e3c19eec6d6f090 Signed-off-by: yangyan <yangyanyj@chinamobile.com> Issue-ID: VFC-1341
-rw-r--r--lcm/ns/biz/ns_instant.py33
-rw-r--r--lcm/ns/tests/test_ns_instant.py73
-rw-r--r--lcm/ns/tests/test_sol_ns_instantiate_api.py8
3 files changed, 77 insertions, 37 deletions
diff --git a/lcm/ns/biz/ns_instant.py b/lcm/ns/biz/ns_instant.py
index 706ff3f7..c16a21b1 100644
--- a/lcm/ns/biz/ns_instant.py
+++ b/lcm/ns/biz/ns_instant.py
@@ -64,15 +64,6 @@ class InstantNSService(object):
ns_inst = NSInstModel.objects.get(id=self.ns_inst_id)
vim_id = {}
- # input_parameters = []
- # if 'additionalParamForNs' in self.req_data:
- # for key, val in self.req_data['additionalParamForNs'].items():
- # input_parameters.append({"key": key, "value": val})
- # if 'location' in self.req_data['additionalParamForNs']:
- # vim_id = self.req_data['additionalParamForNs']['location']
- # params_json = json.JSONEncoder().encode(self.req_data["additionalParamForNs"])
- # else:
- # params_json = json.JSONEncoder().encode({})
input_parameters = []
if 'additionalParamForNs' in self.req_data:
for key, val in self.req_data['additionalParamForNs'].items():
@@ -82,7 +73,6 @@ class InstantNSService(object):
cloud_owner = self.req_data['additionalParamForNs']['location'].split('_')[0]
cloud_regionid = self.req_data["additionalParamForNs"]["location"].split('_')[1]
vim_id = {"cloud_owner": cloud_owner, "cloud_regionid": cloud_regionid}
- logger.info('vim_id::::::::::::%s', type(vim_id))
params_json = json.JSONEncoder().encode(self.req_data["additionalParamForNs"])
else:
params_json = json.JSONEncoder().encode({})
@@ -230,23 +220,16 @@ class InstantNSService(object):
run_ns_instantiate(plan_input, occ_id)
return dict(data={'jobId': job_id}, status=status.HTTP_200_OK, occ_id=occ_id)
- # @staticmethod
- # def get_vnf_vim_id(vim_id, location_constraints, vnfdid):
- # for location in location_constraints:
- # if "vnfProfileId" in location and vnfdid == location["vnfProfileId"]:
- # return location["locationConstraints"]["vimId"]
- # if vim_id:
- # return vim_id
- # raise NSLCMException("No Vim info is found for vnf(%s)." % vnfdid)
@staticmethod
def get_vnf_vim_id(vim_id, location_constraints, vnfdid):
for location in location_constraints:
if "vnfProfileId" in location and vnfdid == location["vnfProfileId"]:
- if 'vimId' in location['locationConstraints']:
+ # if 'vimId' in location['locationConstraints']:
+ if len(location['locationConstraints']) == 1:
cloud_owner = location['locationConstraints']["vimId"].split('_')[0]
cloud_regionid = location['locationConstraints']["vimId"].split('_')[1]
vim_id = {"cloud_owner": cloud_owner, "cloud_regionid": cloud_regionid}
- else:
+ elif len(location['locationConstraints']) == 2:
cloud_owner = location['locationConstraints']["cloudOwner"]
cloud_regionid = location['locationConstraints']["cloudRegionId"]
vim_id = {"cloud_owner": cloud_owner, "cloud_regionid": cloud_regionid}
@@ -266,19 +249,17 @@ class InstantNSService(object):
for depend in vnf["dependencies"]:
vl_vnf[depend["vl_id"]] = vnf['properties']['id']
vnf_vim = {}
- # for location in location_constraints:
- # if "vnfProfileId" in location:
- # vnfd_id = location["vnfProfileId"]
- # vnf_vim[vnfd_id] = location["locationConstraints"]["vimId"]
+
for location in location_constraints:
if "vnfProfileId" in location:
vnfd_id = location["vnfProfileId"]
- if 'vimId' in location["locationConstraints"]:
+ # if 'vimId' in location["locationConstraints"]:
+ if len(location['locationConstraints']) == 1:
cloud_owner = location["locationConstraints"]["vimId"].split('_')[0]
cloud_regionid = location["locationConstraints"]["vimId"].split('_')[1]
vim_id = {"cloud_owner": cloud_owner, "cloud_regionid": cloud_regionid}
vnf_vim[vnfd_id] = vim_id
- else:
+ elif len(location['locationConstraints']) == 2:
cloud_owner = location["locationConstraints"]["cloudOwner"]
cloud_regionid = location["locationConstraints"]["cloudRegionId"]
vim_id = {"cloud_owner": cloud_owner, "cloud_regionid": cloud_regionid}
diff --git a/lcm/ns/tests/test_ns_instant.py b/lcm/ns/tests/test_ns_instant.py
index 9629da21..e5ad9cab 100644
--- a/lcm/ns/tests/test_ns_instant.py
+++ b/lcm/ns/tests/test_ns_instant.py
@@ -158,15 +158,16 @@ class TestNsInstant(TestCase):
mock_call_req.side_effect = [ret for i in range(1, 20)]
data = {
"additionalParamForNs": {
- "sdnControllerId": "2"
+ "sdnControllerId": "2",
+ "location": "CPE-DC_Region"
},
"locationConstraints": [{
"vnfProfileId": "zte_ran_cucp_0001",
- "locationConstraints": {"vimId": '{"cloud_owner": "VCPE", "cloud_regionid": "RegionOne"}'}
+ "locationConstraints": {}
},
{
"vnfProfileId": "zte_ran_cuup_0001",
- "locationConstraints": {"vimId": '{"cloud_owner": "VCPE", "cloud_regionid": "RegionOne"}'}
+ "locationConstraints": {}
}
],
"addpnfData": [{
@@ -179,3 +180,69 @@ class TestNsInstant(TestCase):
# response = self.client.post("/api/nslcm/v1/ns/1/instantiate", data=data, format='json')
ack = InstantNSService(1, data).do_biz()
self.assertEqual(ack['status'], status.HTTP_200_OK)
+
+ @mock.patch.object(restcall, 'call_req')
+ @mock.patch('lcm.pub.msapi.sdc_run_catalog.parse_nsd', MagicMock(return_value=nsd))
+ @mock.patch('lcm.pub.msapi.extsys.select_vnfm', MagicMock(return_value=vnfminfo))
+ def test_ns_instantiate_with_vimid_1(self, mock_call_req):
+ config.WORKFLOW_OPTION = "grapflow"
+ NSInstModel(id="1", name="test_ns", nspackage_id="1", status="created").save()
+ ret = [0, json.JSONEncoder().encode({'jobId': "1", "responseDescriptor": {"progress": 100}}), '200']
+ mock_call_req.side_effect = [ret for i in range(1, 20)]
+ data = {
+ "additionalParamForNs": {
+ "sdnControllerId": "2"
+ },
+ "locationConstraints": [{
+ "vnfProfileId": "zte_ran_cucp_0001",
+ "locationConstraints": {
+ "cloudOwner": "CPE-DC",
+ "cloudRegionId": "RegionOne"}
+ },
+ {
+ "vnfProfileId": "zte_ran_cuup_0001",
+ "locationConstraints": {
+ "cloudOwner": "CPE-DC",
+ "cloudRegionId": "RegionOne"}
+ }
+ ],
+ "addpnfData": [{
+ "pnfId": 1,
+ "pnfName": "test_pnf",
+ "pnfdId": "zte_ran_du_0001",
+ "pnfProfileId": "du"
+ }]
+ }
+ ack = InstantNSService(1, data).do_biz()
+ self.assertEqual(ack['status'], status.HTTP_200_OK)
+
+ @mock.patch.object(restcall, 'call_req')
+ @mock.patch('lcm.pub.msapi.sdc_run_catalog.parse_nsd', MagicMock(return_value=nsd))
+ @mock.patch('lcm.pub.msapi.extsys.select_vnfm', MagicMock(return_value=vnfminfo))
+ def test_ns_instantiate_with_different_vimid_2(self, mock_call_req):
+ config.WORKFLOW_OPTION = "grapflow"
+ NSInstModel(id="1", name="test_ns", nspackage_id="1", status="created").save()
+ ret = [0, json.JSONEncoder().encode({'jobId': "1", "responseDescriptor": {"progress": 100}}), '200']
+ mock_call_req.side_effect = [ret for i in range(1, 20)]
+ data = {
+ "additionalParamForNs": {
+ "sdnControllerId": "2"
+ },
+ "locationConstraints": [{
+ "vnfProfileId": "zte_ran_cucp_0001",
+ "locationConstraints": {"vimId": "CPE-DC_RegionOne"}
+ },
+ {
+ "vnfProfileId": "zte_ran_cuup_0001",
+ "locationConstraints": {"vimId": "CPE-DC_RegionOne"}
+ }
+ ],
+ "addpnfData": [{
+ "pnfId": 1,
+ "pnfName": "test_pnf",
+ "pnfdId": "zte_ran_du_0001",
+ "pnfProfileId": "du"
+ }]
+ }
+ ack = InstantNSService(1, data).do_biz()
+ self.assertEqual(ack['status'], status.HTTP_200_OK)
diff --git a/lcm/ns/tests/test_sol_ns_instantiate_api.py b/lcm/ns/tests/test_sol_ns_instantiate_api.py
index 598124c6..bd2e0081 100644
--- a/lcm/ns/tests/test_sol_ns_instantiate_api.py
+++ b/lcm/ns/tests/test_sol_ns_instantiate_api.py
@@ -373,14 +373,6 @@ class TestInstantiateNsApi(TestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_method_not_allowed(self):
- # response = self.client.put(self.url % '1', data=self.req_data, format='json')
- # self.failUnlessEqual(status.HTTP_405_METHOD_NOT_ALLOWED, response.status_code)
- # response = self.client.patch(self.url % '1', data=self.req_data, format='json')
- # self.failUnlessEqual(status.HTTP_405_METHOD_NOT_ALLOWED, response.status_code)
- # response = self.client.delete(self.url % '1', data=self.req_data, format='json')
- # self.failUnlessEqual(status.HTTP_405_METHOD_NOT_ALLOWED, response.status_code)
- # response = self.client.get(self.url % '1', data=self.req_data, format='json')
- # self.failUnlessEqual(status.HTTP_405_METHOD_NOT_ALLOWED, response.status_code)
response = self.client.put(self.url % self.nsInstanceId, data=self.req_data, format='json')
self.failUnlessEqual(status.HTTP_405_METHOD_NOT_ALLOWED, response.status_code)
response = self.client.patch(self.url % self.nsInstanceId, data=self.req_data, format='json')