aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-09-07 19:43:10 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-09-07 19:43:10 +0800
commit8f8e3d5d7a368e2b7f2f6f19a46d3ebb2e1f05d4 (patch)
tree9154eeeae49d57043cb16245ae0665ba796765ab
parent7c6b512aa0659a2d0d80cf7ac4e2dc84da3c6ff3 (diff)
Update query sdnc api and unit test
Change-Id: Ic5570f9170312623f42121bb0fc0571155177dfd Issue-ID: VFC-312 Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/ns/tests/sfcs/tests.py30
-rw-r--r--lcm/pub/msapi/aai.py33
-rw-r--r--lcm/pub/msapi/extsys.py28
3 files changed, 58 insertions, 33 deletions
diff --git a/lcm/ns/tests/sfcs/tests.py b/lcm/ns/tests/sfcs/tests.py
index d3d2e3cd..8bf813c0 100644
--- a/lcm/ns/tests/sfcs/tests.py
+++ b/lcm/ns/tests/sfcs/tests.py
@@ -49,7 +49,35 @@ class TestSfcDetailViews(TestCase):
@mock.patch.object(restcall, "call_req")
def test_delete_sfc(self, mock_req_by_rest):
- mock_req_by_rest.return_value = [0, '{"test":"test_name","url":"url_add"}']
+ sdnc_info = {
+ "thirdparty-sdnc-id": "example-thirdparty-sdnc-id-val-6524",
+ "location": "example-location-val-78867",
+ "product-name": "example-product-name-val-15818",
+ "esr-system-info-list": {
+ "esr-system-info": [
+ {
+ "esr-system-info-id": "example-esr-system-info-id-val-24165",
+ "system-name": "example-system-name-val-77122",
+ "type": "example-type-val-21280",
+ "vendor": "example-vendor-val-91275",
+ "version": "example-version-val-93343",
+ "service-url": "example-service-url-val-81241",
+ "user-name": "example-user-name-val-1481",
+ "password": "example-password-val-976",
+ "system-type": "example-system-type-val-92280",
+ "protocal": "example-protocal-val-40984",
+ "ssl-cacert": "example-ssl-cacert-val-48921",
+ "ssl-insecure": True,
+ "ip-address": "example-ip-address-val-1363",
+ "port": "example-port-val-90119",
+ "cloud-domain": "example-cloud-domain-val-26113",
+ "default-tenant": "example-default-tenant-val-5704"
+ }
+ ]
+ }
+ }
+ mock_req_by_rest.return_value = [0, json.JSONEncoder().encode(sdnc_info), '200']
+ # mock_req_by_rest.return_value = [0, '{"test":"test_name","url":"url_add"}']
response = self.client.delete("/api/nslcm/v1/ns/sfcs/%s" % self.sfc_inst_id)
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
expect_resp_data = {"result": 0, "detail": "delete sfc success"}
diff --git a/lcm/pub/msapi/aai.py b/lcm/pub/msapi/aai.py
index 51ce836e..1d1b3916 100644
--- a/lcm/pub/msapi/aai.py
+++ b/lcm/pub/msapi/aai.py
@@ -221,6 +221,7 @@ def select_vnfm(vnfm_type, vim_id):
logger.error("Failed to call %s: %s", uri, ret[1])
raise NSLCMException('Failed to get vnfms from extsys.')
vnfms = json.JSONDecoder().decode(ret[1])
+ vnfms = ignore_case_get(vnfms, "esr-vnfm")
for vnfm in vnfms:
esr_system_info = ignore_case_get(vnfm, "esr-system-info")
type = ignore_case_get(esr_system_info, "type")
@@ -250,7 +251,7 @@ def split_vim_to_owner_region(vim_id):
return cloud_owner, cloud_region
def convert_vim_info(vim_info_aai):
- vim_id = vim_info_aai["cloud-owner"] + '_' + vim_info_aai["cloud-region-id"]
+ vim_id = vim_info_aai["cloud-owner"] + "_" + vim_info_aai["cloud-region-id"]
esr_system_info = ignore_case_get(ignore_case_get(vim_info_aai, "esr-system-info-list"), "esr-system-info")
# tenants = ignore_case_get(vim_info_aai, "tenants")
vim_info = {
@@ -278,37 +279,9 @@ def get_vims():
raise NSLCMException("Failed to query vims from extsys.")
# convert vim_info_aai to internal vim_info
vims_aai = json.JSONDecoder().decode(ret[1])
+ vims_aai = ignore_case_get(vims_aai, "cloud-region")
vims_info = []
for vim in vims_aai:
vim = convert_vim_info(vim)
vims_info.append(vim)
return vims_info
-
-
-def get_sdn_controller_by_id(sdn_ontroller_id):
- ret = call_aai("/external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/%s" % sdn_ontroller_id, "GET")
- if ret[0] != 0:
- logger.error("Failed to query sdn ontroller(%s) from extsys. detail is %s.", sdn_ontroller_id, ret[1])
- raise NSLCMException("Failed to query sdn ontroller(%s) from extsys." % sdn_ontroller_id)
- # convert vim_info_aai to internal vim_info
- sdnc_info_aai = json.JSONDecoder().decode(ret[1])
- sdnc_info = convert_sdnc_info(sdnc_info_aai)
- return sdnc_info
-
-def convert_sdnc_info(sdnc_info_aai):
- esr_system_info = ignore_case_get(ignore_case_get(sdnc_info_aai, "esr-system-info-list"), "esr-system-info")
- sdnc_info = {
- "sdnControllerId": sdnc_info_aai["thirdparty-sdnc-id"],
- "name": sdnc_info_aai["thirdparty-sdnc-id"],
- "url": ignore_case_get(esr_system_info[0], "service-url"),
- "userName": ignore_case_get(esr_system_info[0], "user-name"),
- "password": ignore_case_get(esr_system_info[0], "password"),
- "vendor": ignore_case_get(esr_system_info[0], "vendor"),
- "version": ignore_case_get(esr_system_info[0], "version"),
- "description": "",
- "protocol": ignore_case_get(esr_system_info[0], "protocal"),
- "productName": ignore_case_get(sdnc_info_aai, "product-name"),
- "type": ignore_case_get(esr_system_info[0], "type"),
- "createTime": "2016-07-18 12:22:53"
- }
- return sdnc_info
diff --git a/lcm/pub/msapi/extsys.py b/lcm/pub/msapi/extsys.py
index b7955d88..6393ef04 100644
--- a/lcm/pub/msapi/extsys.py
+++ b/lcm/pub/msapi/extsys.py
@@ -16,7 +16,9 @@ import json
import logging
from lcm.pub.exceptions import NSLCMException
+from lcm.pub.msapi.aai import call_aai
from lcm.pub.utils.restcall import req_by_msb
+from lcm.pub.utils.values import ignore_case_get
logger = logging.getLogger(__name__)
@@ -38,11 +40,33 @@ def get_vim_by_id(vim_id):
def get_sdn_controller_by_id(sdn_ontroller_id):
- ret = req_by_msb("/api/aai-esr-server/v1/sdncontrollers/%s" % sdn_ontroller_id, "GET")
+ ret = call_aai("/external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/%s" % sdn_ontroller_id, "GET")
if ret[0] != 0:
logger.error("Failed to query sdn ontroller(%s) from extsys. detail is %s.", sdn_ontroller_id, ret[1])
raise NSLCMException("Failed to query sdn ontroller(%s) from extsys." % sdn_ontroller_id)
- return json.JSONDecoder().decode(ret[1])
+ # convert vim_info_aai to internal vim_info
+ sdnc_info_aai = json.JSONDecoder().decode(ret[1])
+ sdnc_info = convert_sdnc_info(sdnc_info_aai)
+ return sdnc_info
+
+
+def convert_sdnc_info(sdnc_info_aai):
+ esr_system_info = ignore_case_get(ignore_case_get(sdnc_info_aai, "esr-system-info-list"), "esr-system-info")
+ sdnc_info = {
+ "sdnControllerId": sdnc_info_aai["thirdparty-sdnc-id"],
+ "name": sdnc_info_aai["thirdparty-sdnc-id"],
+ "url": ignore_case_get(esr_system_info[0], "service-url"),
+ "userName": ignore_case_get(esr_system_info[0], "user-name"),
+ "password": ignore_case_get(esr_system_info[0], "password"),
+ "vendor": ignore_case_get(esr_system_info[0], "vendor"),
+ "version": ignore_case_get(esr_system_info[0], "version"),
+ "description": "",
+ "protocol": ignore_case_get(esr_system_info[0], "protocal"),
+ "productName": ignore_case_get(sdnc_info_aai, "product-name"),
+ "type": ignore_case_get(esr_system_info[0], "type"),
+ "createTime": "2016-07-18 12:22:53"
+ }
+ return sdnc_info
def get_vnfm_by_id(vnfm_inst_id):