From: yangyan Date: Tue, 31 Dec 2019 01:35:45 +0000 (+0800) Subject: Fix deduplication AAI resource issues X-Git-Tag: 1.3.7~17 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=vfc%2Fnfvo%2Flcm.git;a=commitdiff_plain;h=532da7ce294b32260a288b7f092a8eba96af564b Fix deduplication AAI resource issues Change-Id: I2c140abda7f71bbde785cb2a922c0d88c67ea77f Issue-ID: VFC-1595 Signed-off-by: yangyan --- diff --git a/lcm/ns_vnfs/biz/handle_notification.py b/lcm/ns_vnfs/biz/handle_notification.py index a66946da..4e957d1a 100644 --- a/lcm/ns_vnfs/biz/handle_notification.py +++ b/lcm/ns_vnfs/biz/handle_notification.py @@ -16,6 +16,7 @@ import logging import traceback import uuid + from rest_framework import status from rest_framework.response import Response @@ -23,7 +24,7 @@ from lcm.ns_vnfs.enum import INST_TYPE from lcm.pub.config.config import REPORT_TO_AAI from lcm.pub.database.models import (CPInstModel, NfInstModel, PortInstModel, VLInstModel, VmInstModel, VNFCInstModel) -from lcm.pub.exceptions import NSLCMException +from lcm.pub.exceptions import NSLCMException, RequestException from lcm.pub.msapi.aai import (create_network_aai, create_vserver_aai, delete_network_aai, delete_vserver_aai, query_network_aai, query_vserver_aai) @@ -216,12 +217,15 @@ class HandleVnfLcmOocNotification(object): try: # query network in aai, get resource_version customer_info = query_network_aai(vlInstanceId) - resource_version = customer_info["resource-version"] - - # delete network from aai - resp_data, resp_status = delete_network_aai(vlInstanceId, resource_version) - logger.debug("Success to delete network[%s] from aai, resp_status: [%s]." - % (vlInstanceId, resp_status)) + if customer_info: + resource_version = customer_info["resource-version"] + + # delete network from aai + resp_data, resp_status = delete_network_aai(vlInstanceId, resource_version) + logger.debug("Success to delete network[%s] from aai, resp_status: [%s]." + % (vlInstanceId, resp_status)) + except RequestException: + logger.debug("Network has been delted in aai") except NSLCMException as e: logger.debug("Fail to delete network[%s] to aai, detail message: %s" % (vlInstanceId, e.args[0])) except: @@ -277,15 +281,18 @@ class HandleVnfLcmOocNotification(object): # query vserver instance in aai, get resource_version vserver_info = query_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id) - resource_version = vserver_info["resource-version"] - - # delete vserver instance from aai - resp_data, resp_status = delete_vserver_aai(cloud_owner, cloud_region_id, - tenant_id, vserver_id, resource_version) - logger.debug( - "Success to delete vserver instance[%s] from aai, resp_status: [%s]." % - (vserver_id, resp_status)) - logger.debug("delete_vserver_in_aai end!") + if vserver_info: + resource_version = vserver_info["resource-version"] + + # delete vserver instance from aai + resp_data, resp_status = delete_vserver_aai(cloud_owner, cloud_region_id, + tenant_id, vserver_id, resource_version) + logger.debug( + "Success to delete vserver instance[%s] from aai, resp_status: [%s]." % + (vserver_id, resp_status)) + logger.debug("delete_vserver_in_aai end!") + except RequestException: + logger.debug("Vserver has been deleted from aai") except NSLCMException as e: logger.debug("Fail to delete vserver from aai, detail message: %s" % e.args[0]) except: diff --git a/lcm/pub/exceptions.py b/lcm/pub/exceptions.py index 798a8abb..9b71f2bf 100644 --- a/lcm/pub/exceptions.py +++ b/lcm/pub/exceptions.py @@ -26,6 +26,10 @@ class BadRequestException(BaseException): pass +class RequestException(BaseException): + pass + + class NSLCMException(BaseException): pass diff --git a/lcm/pub/msapi/aai.py b/lcm/pub/msapi/aai.py index 7c814487..e6fe545f 100644 --- a/lcm/pub/msapi/aai.py +++ b/lcm/pub/msapi/aai.py @@ -17,7 +17,7 @@ import logging import uuid from lcm.pub.config.config import AAI_BASE_URL, AAI_USER, AAI_PASSWD -from lcm.pub.exceptions import NSLCMException +from lcm.pub.exceptions import NSLCMException, RequestException from lcm.pub.utils import restcall @@ -230,6 +230,9 @@ def delete_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id, reso if ret[0] != 0: logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) raise NSLCMException("Vserver delete exception in AAI") + if ret[2] == 404: + logger.error("Vserver has been deleted in aai") + raise RequestException("Vserver delete exception in AAI") return json.JSONDecoder().decode(ret[1]) if ret[1] else ret[1], ret[2] @@ -283,6 +286,9 @@ def delete_network_aai(network_id, resource_version=""): if ret[0] != 0: logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) raise NSLCMException("Network delete exception in AAI") + if ret[2] == 404: + logger.error("Network has been deleted in aai") + raise RequestException("Network delete exception in AAI") return json.JSONDecoder().decode(ret[1]) if ret[1] else ret[1], ret[2]