aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbiancunkang <bian.cunkang@zte.com.cn>2018-08-16 12:44:24 +0800
committerbiancunkang <bian.cunkang@zte.com.cn>2018-08-16 12:54:58 +0800
commit067281684018c9328337cb4dbb500342d53ad3ff (patch)
tree5fa4e351d685e649825b62d6599cdecf52f73e05
parent1e4ba0f074a64476adee70866fcf8f5dd7bfdc80 (diff)
Add a test
Modify grant_vnf.py Change-Id: I33f2633b84e4d3df499fa441ee4afce1205917aa Issue-ID: VFC-1015 Signed-off-by: biancunkang <bian.cunkang@zte.com.cn>
-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)