aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFu Jinhua <fu.jinhua@zte.com.cn>2018-08-16 05:49:49 +0000
committerGerrit Code Review <gerrit@onap.org>2018-08-16 05:49:49 +0000
commit6a1b89e3a563014f7f09366223079d138484a386 (patch)
tree3eea8d76fa99e435db1799b59cd1005432592f29
parent45aac2b2145038cd7cc2a33cc65629db84408844 (diff)
parent067281684018c9328337cb4dbb500342d53ad3ff (diff)
Merge "Add a test"
-rw-r--r--lcm/v2/grant_vnf.py7
-rw-r--r--lcm/v2/tests.py92
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)