diff options
author | Bin Yang <bin.yang@windriver.com> | 2017-08-29 16:18:45 +0800 |
---|---|---|
committer | Bin Yang <bin.yang@windriver.com> | 2017-08-29 16:18:45 +0800 |
commit | cb7770b35559af5d63cf44e20ea425b89046c096 (patch) | |
tree | c76f092a302a65b9bd4b2bc60c83f6ba411da542 /newton/newton/pub | |
parent | 74e6b85a978ea6e98cd11f1984baef197712520c (diff) |
Add OpenStack proxy for newton
refactor seed code for newton
add proxy for identiy,service, add registration, extension
management
Issue-Id: MULTICLOUD-58
Change-Id: I6a7a21427af4c88b7f060470c1176009c13fc19e
Signed-off-by: Bin Yang <bin.yang@windriver.com>
Diffstat (limited to 'newton/newton/pub')
-rw-r--r-- | newton/newton/pub/config/config.py | 30 | ||||
-rw-r--r-- | newton/newton/pub/msapi/extsys.py | 78 |
2 files changed, 63 insertions, 45 deletions
diff --git a/newton/newton/pub/config/config.py b/newton/newton/pub/config/config.py index e27682bd..fc7775b5 100644 --- a/newton/newton/pub/config/config.py +++ b/newton/newton/pub/config/config.py @@ -13,35 +13,7 @@ import os # [MSB] MSB_SERVICE_IP = '127.0.0.1' -MSB_SERVICE_PORT = '10080' +MSB_SERVICE_PORT = '80' # [IMAGE LOCAL PATH] ROOT_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) - -# [REDIS] -REDIS_HOST = '127.0.0.1' -REDIS_PORT = '6379' -REDIS_PASSWD = '' - -# [mysql] -DB_IP = "127.0.0.1" -DB_PORT = 3306 -DB_NAME = "multivimnewton" -DB_USER = "root" -DB_PASSWD = "password" - -# [register] -REG_TO_MSB_WHEN_START = True -REG_TO_MSB_REG_URL = "/openoapi/microservices/v1/services" -REG_TO_MSB_REG_PARAM = { - "serviceName": "multivim-newton", - "version": "v1", - "url": "/openoapi/multivim-newton/v1", - "protocol": "REST", - "visualRange": "1", - "nodes": [{ - "ip": "127.0.0.1", - "port": "9003", - "ttl": 0 - }] -} diff --git a/newton/newton/pub/msapi/extsys.py b/newton/newton/pub/msapi/extsys.py index daab5037..449ad5b5 100644 --- a/newton/newton/pub/msapi/extsys.py +++ b/newton/newton/pub/msapi/extsys.py @@ -11,6 +11,7 @@ import json import logging +import re from rest_framework import status from newton.pub.exceptions import VimDriverNewtonException @@ -18,22 +19,67 @@ from newton.pub.utils.restcall import req_by_msb logger = logging.getLogger(__name__) +def get_vim_by_id(vim_id): -def get_vims(): - retcode, content, status_code = \ - req_by_msb("/openoapi/extsys/v1/vims", "GET") - if retcode != 0: - logger.error("Status code is %s, detail is %s.", status_code, content) - raise VimDriverNewtonException("Failed to query VIMs from extsys.") - return json.JSONDecoder().decode(content) + cloud_owner,cloud_region_id = decode_vim_id(vim_id) + if cloud_owner and cloud_region_id: + retcode, content, status_code = \ + req_by_msb("/api/aai-cloudInfrastructure/v1/cloud-infrastructure/cloud-regions/cloud-region/%s/%s" + % (cloud_owner,cloud_region_id), "GET") + if retcode != 0: + logger.error("Status code is %s, detail is %s.", status_code, content) + raise VimDriverNewtonException( + "Failed to query VIM with id (%s:%s,%s) from extsys." % (vim_id,cloud_owner,cloud_region_id), + status_code, content) + tmp_viminfo = json.JSONDecoder().decode(content) + #convert vim information + #tbd + + if tmp_viminfo: + viminfo = {} + viminfo['vimId'] = vim_id + viminfo['cloud_owner'] = cloud_owner + viminfo['cloud_region_id'] = cloud_region_id + viminfo['type'] = tmp_viminfo['cloud-type'] + viminfo['name'] = tmp_viminfo['complex-name'] + viminfo['version'] = tmp_viminfo['cloud-region-version'] + viminfo['cloud_extra_info'] = tmp_viminfo['cloud-extra-info'] + viminfo['cloud_epa_caps'] = tmp_viminfo['cloud-epa-caps'] + + tmp_authinfo = tmp_viminfo['auth-info-items'][0] + if tmp_authinfo: + viminfo['userName'] = tmp_authinfo['username'] + viminfo['password'] = tmp_authinfo['password'] + viminfo['domain'] = tmp_authinfo['cloud-domain'] + viminfo['url'] = tmp_authinfo['auth-url'] + viminfo['tenant'] = tmp_authinfo['defaultTenant']['name'] if not tmp_authinfo['defaultTenant'] else None + viminfo['cacert'] = tmp_authinfo['ssl-cacert'] + viminfo['insecure'] = tmp_authinfo['ssl-insecure'] + + return viminfo + else: + return None + else: + return None + +def delete_vim_by_id(vim_id): + cloud_owner, cloud_region_id = decode_vim_id(vim_id) + if cloud_owner and cloud_region_id: + retcode, content, status_code = \ + req_by_msb("/api/aai-cloudInfrastructure/v1/cloud-infrastructure/cloud-regions/cloud-region/%s/%s" + % ( cloud_owner, cloud_region_id), "DELETE") + if retcode != 0: + logger.error("Status code is %s, detail is %s.", status_code, content) + raise VimDriverNewtonException( + "Failed to delete VIM in AAI with id (%s:%s,%s) from extsys." % (vim_id,cloud_owner,cloud_region_id), + status_code, content) + return 0 + # return non zero if failed to decode cloud owner and region id + return 1 + +def decode_vim_id(vim_id): + m = re.search(r'^([0-9a-zA-Z-]+)_([0-9a-zA-Z_-]+)$', vim_id) + cloud_owner, cloud_region_id = m.group(1), m.group(2) + return cloud_owner, cloud_region_id -def get_vim_by_id(vim_id): - retcode, content, status_code = \ - req_by_msb("/openoapi/extsys/v1/vims/%s" % vim_id, "GET") - if retcode != 0: - logger.error("Status code is %s, detail is %s.", status_code, content) - raise VimDriverNewtonException( - "Failed to query VIM with id (%s) from extsys." % vim_id, - status.HTTP_404_NOT_FOUND, content) - return json.JSONDecoder().decode(content) |