diff options
author | ying.yunlong <ying.yunlong@zte.com.cn> | 2017-09-01 16:18:23 +0800 |
---|---|---|
committer | ying.yunlong <ying.yunlong@zte.com.cn> | 2017-09-01 16:18:23 +0800 |
commit | d4fbe2f11e4e7c10bd811335942dcf391669ddf1 (patch) | |
tree | 63f4f9931060452bc1fd5ef99285e9cbb89cf404 /gvnfmadapter | |
parent | ff463b52520343fbaf840bd82480ecd4a2c34282 (diff) |
GVNFM driver align ESR rest interface
As ESR move to AAI, its rest api is
changed, GVNFM driver align ESR
new rest interface.
Change-Id: Ic0cb9c6a7a684cef730c1af718412b52efe4277e
Issue-ID: VFC-226
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
Diffstat (limited to 'gvnfmadapter')
-rw-r--r-- | gvnfmadapter/driver/interfaces/views.py | 8 | ||||
-rw-r--r-- | gvnfmadapter/driver/pub/config/config.py | 10 | ||||
-rw-r--r-- | gvnfmadapter/driver/pub/utils/restcall.py | 54 |
3 files changed, 67 insertions, 5 deletions
diff --git a/gvnfmadapter/driver/interfaces/views.py b/gvnfmadapter/driver/interfaces/views.py index efd2631..86b2400 100644 --- a/gvnfmadapter/driver/interfaces/views.py +++ b/gvnfmadapter/driver/interfaces/views.py @@ -12,17 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. - - import inspect import json import logging import time + +from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response + from driver.pub.utils import restcall from driver.pub.utils.restcall import req_by_msb -from rest_framework import status # ================================================== vnf_create_url = "api/vnflcm/v1/vnf_instances" @@ -31,7 +31,7 @@ vnf_delete_url = "api/vnflcm/v1/vnf_instances/%s" vnf_terminate_url = "api/vnflcm/v1/vnf_instances/%s/terminate" operation_status_url = "api/vnflcm/v1/vnf_lc_ops/%s?responseId=%s" vnf_detail_url = "api/vnflcm/v1/vnf_instances/%s" -EXTSYS_GET_VNFM = "api/extsys/v1/vnfms/%s" +EXTSYS_GET_VNFM = "api/aai-esr-server/v1/vnfms/%s" vnf_query_url = "api/vnflcm/v1/vnf_instances/%s" notify_url = 'api/nslcm/v1/vnfs/{vnfInstanceId}/Notify' diff --git a/gvnfmadapter/driver/pub/config/config.py b/gvnfmadapter/driver/pub/config/config.py index 198ae76..ab143a1 100644 --- a/gvnfmadapter/driver/pub/config/config.py +++ b/gvnfmadapter/driver/pub/config/config.py @@ -12,6 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +# [AAI] +AAI_SERVICE_IP = '127.0.0.1' +AAI_SERVICE_PORT = '8443' +AAI_BASE_URL = "https://%s:%s/aai/v11" % (AAI_SERVICE_IP, AAI_SERVICE_PORT) +AAI_USER = "AAI" +AAI_PASSWORD = "AAI" +CLOUD_OWNER = "" +CLOUD_REGION_ID = "" +TENANT_ID = "" + # [MSB] MSB_SERVICE_IP = '127.0.0.1' MSB_SERVICE_PORT = '80' diff --git a/gvnfmadapter/driver/pub/utils/restcall.py b/gvnfmadapter/driver/pub/utils/restcall.py index 08f4cf3..0cb7ed4 100644 --- a/gvnfmadapter/driver/pub/utils/restcall.py +++ b/gvnfmadapter/driver/pub/utils/restcall.py @@ -19,7 +19,7 @@ import urllib2 import uuid import httplib2 -from driver.pub.config.config import MSB_SERVICE_IP, MSB_SERVICE_PORT +from driver.pub.config.config import MSB_SERVICE_IP, MSB_SERVICE_PORT, AAI_BASE_URL, AAI_USER, AAI_PASSWORD rest_no_auth, rest_oneway_auth, rest_bothway_auth = 0, 1, 2 HTTP_200_OK, HTTP_201_CREATED, HTTP_204_NO_CONTENT, HTTP_202_ACCEPTED = '200', '201', '204', '202' @@ -93,3 +93,55 @@ def combine_url(base_url, resource): else: full_url = base_url + '/' + resource return full_url + +def call_req_aai(base_url, user, passwd, auth_type, resource, method, content=''): + callid = str(uuid.uuid1()) + logger.debug("[%s]call_req('%s','%s','%s',%s,'%s','%s','%s')" % ( + callid, base_url, user, passwd, auth_type, resource, method, content)) + ret = None + resp_status = '' + try: + full_url = combine_url(base_url, resource) + headers = {'content-type': 'application/json', 'accept': 'application/json', + 'X-FromAppId': 'VFC-SVNFM-ZTE-DRIVER', 'X-TransactionId': str(uuid.uuid1())} + if user: + headers['Authorization'] = 'Basic ' + ('%s:%s' % (user, passwd)).encode("base64") + ca_certs = None + for retry_times in range(3): + http = httplib2.Http(ca_certs=ca_certs, disable_ssl_certificate_validation=(auth_type == rest_no_auth)) + http.follow_all_redirects = True + try: + resp, resp_content = http.request(full_url, method=method.upper(), body=content, headers=headers) + resp_status, resp_body = resp['status'], resp_content.decode('UTF-8') + logger.debug("[%s][%d]status=%s,resp_body=%s)" % (callid, retry_times, resp_status, resp_body)) + if resp_status in status_ok_list: + ret = [0, resp_body, resp_status] + else: + ret = [1, resp_body, resp_status] + break + except Exception as ex: + if 'httplib.ResponseNotReady' in str(sys.exc_info()): + logger.debug("retry_times=%d", retry_times) + logger.error(traceback.format_exc()) + ret = [1, "Unable to connect to %s" % full_url, resp_status] + continue + raise ex + except urllib2.URLError as err: + ret = [2, str(err), resp_status] + except Exception as ex: + logger.error(traceback.format_exc()) + logger.error("[%s]ret=%s" % (callid, str(sys.exc_info()))) + res_info = str(sys.exc_info()) + if 'httplib.ResponseNotReady' in res_info: + res_info = "The URL[%s] request failed or is not responding." % full_url + ret = [3, res_info, resp_status] + except: + logger.error(traceback.format_exc()) + ret = [4, str(sys.exc_info()), resp_status] + + logger.debug("[%s]ret=%s" % (callid, str(ret))) + return ret + + +def call_aai(resource, method, data=''): + return call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, method, data) |