Fix vfc-svnfm-driver inst bug
[vfc/nfvo/driver/vnfm/svnfm.git] / zte / vmanager / driver / interfaces / views.py
index ec0342d..dd07d79 100644 (file)
@@ -21,7 +21,7 @@ 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 driver.pub.utils.restcall import req_by_msb, call_aai
 
 logger = logging.getLogger(__name__)
 
@@ -56,17 +56,25 @@ query_vnfm_url = "api/extsys/v1/vnfms/%s"
 query_package_url = "api/nslcm/v1/vnfpackage/%s"
 
 
-# Query VNFM by VNFMID
+# Query vnfm_info from nslcm
+def get_vnfminfo_from_nslcm(vnfmid):
+    ret = req_by_msb("api/nslcm/v1/vnfms/%s" % vnfmid, "GET")
+    return ret
+
+
+# Query vnfm_info from esr
 def vnfm_get(vnfmid):
-    ret = req_by_msb("api/extsys/v1/vnfms/%s" % vnfmid, "GET")
+    ret = call_aai("api/aai-esr-server/v1/vnfms/%s" % vnfmid, "GET")
     return ret
 
 
+# Query vnfd_info from nslcm
 def vnfd_get(vnfpackageid):
     ret = req_by_msb("api/nslcm/v1/vnfpackage/%s" % vnfpackageid, "GET")
     return ret
 
 
+# Query vnfpackage_info from nslcm
 def vnfpackage_get(csarid):
     ret = req_by_msb("api/nslcm/v1/vnfpackage/%s" % csarid, "GET")
     return ret
@@ -87,7 +95,8 @@ create_vnf_param_mapping = {
     "additionalParam": ""}
 create_vnf_resp_mapping = {
     "VNFInstanceID": "vnfInstanceId",
-    "JobId": "jobid",}
+    "JobId": "jobid"
+}
 
 
 @api_view(http_method_names=['POST'])
@@ -95,7 +104,7 @@ def instantiate_vnf(request, *args, **kwargs):
     try:
         logger.debug("[%s] request.data=%s", fun_name(), request.data)
         vnfm_id = ignorcase_get(kwargs, "vnfmid")
-        ret = vnfm_get(vnfm_id)
+        ret = get_vnfminfo_from_nslcm(vnfm_id)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         vnfm_info = json.JSONDecoder().decode(ret[1])
@@ -117,12 +126,13 @@ def instantiate_vnf(request, *args, **kwargs):
         data["NFVOID"] = 1
         data["VNFMID"] = vnfm_id
         vnfdId = ignorcase_get(packageInfo, "vnfdId")
+        # TODO  convert sdc vnf package to vnf vender package
         from urlparse import urlparse
         vnfm_ip = urlparse(ignorcase_get(vnfm_info, "url")).netloc.split(':')[0]
         VNFS = ["SPGW", "MME"]
         if vnfdId in VNFS:
-            data["VNFD"] = "ftp://VMVERSION:vmversion@" + vnfm_ip + ":21/" + vnfdId
-            data["VNFURL"] = "ftp://VMVERSION:vmversion@" + vnfm_ip + ":21/" + vnfdId
+            data["VNFD"] = "ftp://VMVNFM:Vnfm_1g3T@" + vnfm_ip + ":21/" + vnfdId
+            data["VNFURL"] = "ftp://VMVNFM:Vnfm_1g3T@" + vnfm_ip + ":21/" + vnfdId
         else:
             data["VNFD"] = ignorcase_get(packageInfo, "downloadUri")
             data["VNFURL"] = ignorcase_get(packageInfo, "downloadUri")
@@ -141,6 +151,7 @@ def instantiate_vnf(request, *args, **kwargs):
         data["extension"]["vnfid"] = data["VNFD"]
         data["extension"]["multivim"] = 0
         logger.debug("[%s] call_req data=%s", fun_name(), data)
+
         ret = restcall.call_req(
             base_url=ignorcase_get(vnfm_info, "url"),
             user=ignorcase_get(vnfm_info, "userName"),
@@ -149,6 +160,7 @@ def instantiate_vnf(request, *args, **kwargs):
             resource=create_vnf_url,
             method='post',
             content=json.JSONEncoder().encode(data))
+
         logger.debug("[%s] call_req ret=%s", fun_name(), ret)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
@@ -176,7 +188,7 @@ def terminate_vnf(request, *args, **kwargs):
     try:
         logger.debug("[%s] request.data=%s", fun_name(), request.data)
         vnfm_id = ignorcase_get(kwargs, "vnfmid")
-        ret = vnfm_get(vnfm_id)
+        ret = get_vnfminfo_from_nslcm(vnfm_id)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         vnfm_info = json.JSONDecoder().decode(ret[1])
@@ -207,7 +219,8 @@ def terminate_vnf(request, *args, **kwargs):
 
 vnf_detail_url = "v1/vnfs/%s"
 vnf_detail_resp_mapping = {
-    "VNFInstanseStatus": "status",}
+    "VNFInstanseStatus": "status"
+}
 
 
 @api_view(http_method_names=['GET'])
@@ -215,7 +228,7 @@ def query_vnf(request, *args, **kwargs):
     try:
         logger.debug("[%s] request.data=%s", fun_name(), request.data)
         vnfm_id = ignorcase_get(kwargs, "vnfmid")
-        ret = vnfm_get(vnfm_id)
+        ret = get_vnfminfo_from_nslcm(vnfm_id)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         vnfm_info = json.JSONDecoder().decode(ret[1])
@@ -251,7 +264,8 @@ operation_status_resp_map = {
     "ErrorCode": "errorCode",
     "ResponseId": "responseId",
     "ResponseHistoryList": "responseHistoryList",
-    "ResponseDescriptor": "responseDescriptor",}
+    "ResponseDescriptor": "responseDescriptor"
+}
 
 
 @api_view(http_method_names=['GET'])
@@ -260,7 +274,7 @@ def operation_status(request, *args, **kwargs):
     try:
         logger.debug("[%s] request.data=%s", fun_name(), request.data)
         vnfm_id = ignorcase_get(kwargs, "vnfmid")
-        ret = vnfm_get(vnfm_id)
+        ret = get_vnfminfo_from_nslcm(vnfm_id)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         vnfm_info = json.JSONDecoder().decode(ret[1])
@@ -359,7 +373,8 @@ notify_param_map = {
     "VMFlavor": "",
     "VMNumber": "",
     "VMIDlist": "",
-    "VMUUID": "",}
+    "VMUUID": ""
+}
 
 
 @api_view(http_method_names=['POST'])
@@ -433,21 +448,21 @@ def scale(request, *args, **kwargs):
         logger.info("requested_url = %s", request.get_full_path())
         vnfm_id = ignorcase_get(kwargs, "vnfmid")
         nf_instance_id = ignorcase_get(kwargs, "vnfInstanceId")
-        ret = vnfm_get(vnfm_id)
+        ret = get_vnfminfo_from_nslcm(vnfm_id)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         vnfm_info = json.JSONDecoder().decode(ret[1])
         scale_type = ignorcase_get(request.data, "type")
         aspect_id = ignorcase_get(request.data, "aspectId")
         number_of_steps = ignorcase_get(request.data, "numberOfSteps")
-        extension = ignorcase_get(request.data, "additionalParam")
-        vnfd_model = ignorcase_get(extension, "vnfdModel")
+        extension = ignorcase_get(request.data, "additionalParam")
+        vnfd_model = ignorcase_get(extension, "vnfdModel")
         data = {
             'vnfmid': vnfm_id,
             'nfvoid': 1,
             'scaletype': '0' if scale_type == 'SCALE_OUT' else '1',
-            'vmlist': [{'VMNumber':number_of_steps,'VMFlavor':aspect_id}],
-            'extension':''
+            'vmlist': [{'VMNumber': number_of_steps, 'VMFlavor': aspect_id}],
+            'extension': ''
         }
         '''
         for vdu_id in get_vdus(vnfd_model, aspect_id):
@@ -467,16 +482,20 @@ def scale(request, *args, **kwargs):
             content=json.JSONEncoder().encode(data))
         logger.info("ret=%s", ret)
         if ret[0] != 0:
-            return Response(data={'error':'scale error'}, status=ret[2])
+            return Response(data={'error': 'scale error'}, status=ret[2])
         resp_data = json.JSONDecoder().decode(ret[1])
-        jobId = resp_data["jobid"]
+        jobId = resp_data["jobid"]
         logger.info("resp_data=%s", resp_data)
     except Exception as e:
-        logger.error("Error occurred when scaling VNF")
+        logger.error("Error occurred when scaling VNF,error:%s", e.message)
         logger.error(traceback.format_exc())
-        return Response(data={'error':'scale expection'}, status='500')
+        return Response(data={'error': 'scale expection'}, status='500')
     return Response(data=resp_data, status=ret[2])
 
+
+nf_healing_url = '/api/v1/nf_m_i/nfs/{vnfInstanceID}/vms/operation'
+
+
 @api_view(http_method_names=['POST'])
 def heal(request, *args, **kwargs):
     logger.info("====heal_vnf===")
@@ -485,7 +504,7 @@ def heal(request, *args, **kwargs):
         logger.info("requested_url = %s", request.get_full_path())
         vnfm_id = ignorcase_get(kwargs, "vnfmid")
         nf_instance_id = ignorcase_get(kwargs, "vnfInstanceId")
-        ret = vnfm_get(vnfm_id)
+        ret = get_vnfminfo_from_nslcm(vnfm_id)
         if ret[0] != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         vnfm_info = json.JSONDecoder().decode(ret[1])
@@ -499,7 +518,7 @@ def heal(request, *args, **kwargs):
             user=ignorcase_get(vnfm_info, "userName"),
             passwd=ignorcase_get(vnfm_info, "password"),
             auth_type=restcall.rest_no_auth,
-            resource=nf_scaling_url.format(vnfInstanceID=nf_instance_id),
+            resource=nf_healing_url.format(vnfInstanceID=nf_instance_id),
             method='put',  # POST
             content=json.JSONEncoder().encode(data))
         logger.info("ret=%s", ret)
@@ -509,12 +528,12 @@ def heal(request, *args, **kwargs):
         # jobId = resp_data["jobid"]
         logger.info("resp_data=%s", resp_data)
     except Exception as e:
-        logger.error("Error occurred when healing VNF")
+        logger.error("Error occurred when healing VNF,error:%s", e.message)
         logger.error(traceback.format_exc())
         return Response(data={'error': 'heal expection'}, status='500')
     return Response(data=resp_data, status=ret[2])
 
-#@staticmethod
+
 def get_vdus(nf_model, aspect_id):
     associated_group = ''
     members = []