summaryrefslogtreecommitdiffstats
path: root/newton/newton/pub
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2017-08-29 16:18:45 +0800
committerBin Yang <bin.yang@windriver.com>2017-08-29 16:18:45 +0800
commitcb7770b35559af5d63cf44e20ea425b89046c096 (patch)
treec76f092a302a65b9bd4b2bc60c83f6ba411da542 /newton/newton/pub
parent74e6b85a978ea6e98cd11f1984baef197712520c (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.py30
-rw-r--r--newton/newton/pub/msapi/extsys.py78
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)