Update python2 to python3
[vfc/nfvo/lcm.git] / lcm / pub / msapi / extsys.py
index 65b7d03..7b04665 100644 (file)
@@ -38,10 +38,28 @@ def get_vims():
     return vims_info
 
 
+def get_vim_by_id_vim_info(cloudowner, cloudregionid):
+    cloud_owner = cloudowner
+    cloud_regionid = cloudregionid
+    ret = call_aai("/cloud-infrastructure/cloud-regions/cloud-region/%s/%s?depth=all"
+                   % (cloud_owner, cloud_regionid), "GET")
+    if ret[0] != 0:
+        logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
+        raise NSLCMException("Failed to query vim(%s__%s) from extsys." % (cloudowner, cloudregionid))
+    # convert vim_info_aai to internal vim_info
+    vim_info_aai = json.JSONDecoder().decode(ret[1])
+    vim_info = convert_vim_info(vim_info_aai)
+    logger.debug("cloud_owner=%s, cloud_regionid=%s, vim_info=%s", cloudowner, cloudregionid, vim_info)
+    return vim_info
+
+
 def get_vim_by_id(vim_id):
-    cloud_owner, cloud_region = split_vim_to_owner_region(vim_id)
+    # cloud_owner, cloud_region = split_vim_to_owner_region(vim_id)
+    vim_id = json.JSONDecoder().decode(vim_id) if isinstance(vim_id, str) else vim_id
+    cloud_owner = vim_id['cloud_owner']
+    cloud_regionid = vim_id['cloud_regionid']
     ret = call_aai("/cloud-infrastructure/cloud-regions/cloud-region/%s/%s?depth=all"
-                   % (cloud_owner, cloud_region), "GET")
+                   % (cloud_owner, cloud_regionid), "GET")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Failed to query vim(%s) from extsys." % vim_id)
@@ -61,6 +79,8 @@ def split_vim_to_owner_region(vim_id):
 
 def convert_vim_info(vim_info_aai):
     vim_id = vim_info_aai["cloud-owner"] + "_" + vim_info_aai["cloud-region-id"]
+    vim_type_aai = vim_info_aai["cloud-type"]
+    vim_type = vim_type_aai if vim_type_aai else "openstack"
     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")
     default_tenant = ignore_case_get(esr_system_info[0], "default-tenant")
@@ -82,8 +102,8 @@ def convert_vim_info(vim_info_aai):
         "vendor": ignore_case_get(esr_system_info[0], "vendor"),
         "version": ignore_case_get(esr_system_info[0], "version"),
         "description": "vim",
-        "domain": "",
-        "type": ignore_case_get(esr_system_info[0], "type"),
+        "domain": ignore_case_get(esr_system_info[0], "cloud-domain"),
+        "type": vim_type,
         "createTime": "",
         "sslCacert": ignore_case_get(esr_system_info[0], "ssl-cacert"),
         "sslInsecure": str(ignore_case_get(esr_system_info[0], "ssl-insecure")),
@@ -171,3 +191,31 @@ def select_vnfm(vnfm_type, vim_id):
         if vnfmtype == vnfm_type and vimid == vim_id:
             return vnfm_info
     raise NSLCMException('No vnfm found with %s in vim(%s)' % (vnfm_type, vim_id))
+
+
+def get_ems_by_id(ems_inst_id):
+    uri = "/external-system/esr-ems-list/esr-ems/%s?depth=all" % ems_inst_id
+    ret = call_aai(uri, "GET")
+    if ret[0] > 0:
+        logger.error('Send get EMS information request to extsys failed.')
+        raise NSLCMException('Send get EMS information request to extsys failed.')
+    # convert vnfm_info_aai to internal vnfm_info
+    ems_info_aai = json.JSONDecoder().decode(ret[1])
+    ems_info = convert_ems_info(ems_info_aai)
+    logger.debug("ems_inst_id=%s, ems_info=%s", ems_inst_id, ems_info)
+    return ems_info
+
+
+def convert_ems_info(ems_info_aai):
+    esr_system_info = ignore_case_get(ignore_case_get(ems_info_aai, "esr-system-info-list"), "esr-system-info")
+    ems_info_aai = {
+        "emsId": ems_info_aai["ems-id"],
+        "type": ignore_case_get(esr_system_info[0], "type"),
+        "vendor": ignore_case_get(esr_system_info[0], "vendor"),
+        "version": ignore_case_get(esr_system_info[0], "version"),
+        "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"),
+        "createTime": ""
+    }
+    return ems_info_aai