diff options
Diffstat (limited to 'newton/newton/pub/msapi/extsys.py')
-rw-r--r-- | newton/newton/pub/msapi/extsys.py | 78 |
1 files changed, 62 insertions, 16 deletions
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) |