From 067281684018c9328337cb4dbb500342d53ad3ff Mon Sep 17 00:00:00 2001 From: biancunkang Date: Thu, 16 Aug 2018 12:44:24 +0800 Subject: Add a test Modify grant_vnf.py Change-Id: I33f2633b84e4d3df499fa441ee4afce1205917aa Issue-ID: VFC-1015 Signed-off-by: biancunkang --- lcm/v2/grant_vnf.py | 7 ++-- lcm/v2/tests.py | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 3 deletions(-) diff --git a/lcm/v2/grant_vnf.py b/lcm/v2/grant_vnf.py index 38b1fbc2..47348500 100644 --- a/lcm/v2/grant_vnf.py +++ b/lcm/v2/grant_vnf.py @@ -49,12 +49,12 @@ class GrantVnf(object): if not has_res_tpl: m_vnf_inst_id = ignore_case_get(self.data, "vnfInstanceId") - additional_param = ignore_case_get(self.data, "additionalparam") + additional_param = ignore_case_get(self.data, "additionalparams") vnfm_inst_id = ignore_case_get(additional_param, "vnfmid") vim_id = ignore_case_get(additional_param, "vimid") vnfinsts = NfInstModel.objects.filter( - mnfinstid=m_vnf_inst_id, vnfm_inst_id=vnfm_inst_id) + nfinstid=m_vnf_inst_id, vnfm_inst_id=vnfm_inst_id) if not vnfinsts: raise NSLCMException("Vnfinst(%s) is not found in vnfm(%s)" % ( m_vnf_inst_id, vnfm_inst_id)) @@ -67,7 +67,8 @@ class GrantVnf(object): req_param = { "vnfInstanceId": m_vnf_inst_id, "vimId": vim_id, - "additionalParam": additional_param, + "vnfLcmOpOccId": ignore_case_get(self.data, "vnfLcmOpOccId"), + "additionalParams": additional_param, grant_type: [] } for res in ignore_case_get(self.data, grant_type): diff --git a/lcm/v2/tests.py b/lcm/v2/tests.py index d665a1e4..82b53e7d 100644 --- a/lcm/v2/tests.py +++ b/lcm/v2/tests.py @@ -167,6 +167,98 @@ class VnfGrantViewTest(unittest.TestCase): response = self.client.post("/api/nslcm/v2/grants", data=data, format='json') self.failUnlessEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code) + @mock.patch.object(restcall, 'call_req') + def test_grant_vnf(self, mock_call_req): + data = { + "vnfInstanceId": "1", + "vnfLcmOpOccId": "2", + "vnfdId": "3", + "flavourId": "4", + "operation": "INSTANTIATE", + "isAutomaticInvocation": True, + "instantiationLevelId": "5", + "addResources": [ + { + "id": "1", + "type": "COMPUTE", + "vduId": "2", + "resourceTemplateId": "3", + } + ], + "additionalParams": {"vnfmid": "3"}, + "_links": { + "vnfLcmOpOcc": { + "href": "1" + }, + "vnfInstance": { + "href": "2" + } + } + } + vnfdModel = { + "volume_storages": [], + "vdus": [], + "image_files": [], + "routers": [], + "local_storages": [], + "vnf_exposed": { + "external_cps": [], + "forward_cps": [] + }, + "vls": [], + "cps": [], + "metadata": { + "designer": "sdno", + "name": "underlayervpn", + "csarVersion": "1.0", + "csarType": "SSAR", + "csarProvider": "huawei", + "version": "1.0", + "type": "SSAR", + "id": "ns_underlayervpn_1_0" + } + } + + vnfpackage_info = { + "imageInfo": [], + "csarId": "vOpenNAT", + "packageInfo": { + "csarName": "vOpenNAT.csar", + "vnfdModel": json.dumps(vnfdModel), + "vnfdProvider": "Intel", + "vnfdId": "openNAT_1.0", + "downloadUrl": "http://10.96.33.39:8806/static/catalog/vOpenNAT/vOpenNAT.csar", + "vnfVersion": "v1.0", + "vnfdVersion": "v1.0", + "vnfPackageId": "vOpenNAT" + } + } + vimConnections = { + "id": "1", + "vimId": "1", + } + NfInstModel.objects.create(nfinstid='1', + package_id="2", + vnfm_inst_id='3') + get_vnfpackage = [0, json.JSONEncoder().encode(vnfpackage_info), '200'] + get_vimConnections = [0, json.JSONEncoder().encode(vimConnections), '200'] + mock_call_req.side_effect = [get_vnfpackage, get_vimConnections] + response = self.client.post("/api/nslcm/v2/grants", data=data, format='json') + self.assertEqual(status.HTTP_201_CREATED, response.status_code, response.content) + resp_data = json.loads(response.content) + expect_resp_data = { + "id": resp_data.get("id"), + "vnfInstanceId": "1", + "vnfLcmOpOccId": "2", + "vimConnections": [ + { + "id": "1", + "vimId": "1" + } + ] + } + self.assertEqual(expect_resp_data, resp_data) + def test_get_notify_vnf_normal(self): response = self.client.get("/api/nslcm/v2/ns/1/vnfs/1/Notify") self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code, response.content) -- cgit 1.2.3-korg