aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryangyan <yangyanyj@chinamobile.com>2019-12-31 09:35:45 +0800
committeryangyan <yangyanyj@chinamobile.com>2020-01-06 16:11:35 +0800
commit532da7ce294b32260a288b7f092a8eba96af564b (patch)
tree895834f0de68e5b2cd4d3fa4c9bf9edaabea2487
parent19699104d4cacbf4eb0202aecbe4fcf377bcc157 (diff)
Fix deduplication AAI resource issues
Change-Id: I2c140abda7f71bbde785cb2a922c0d88c67ea77f Issue-ID: VFC-1595 Signed-off-by: yangyan <yangyanyj@chinamobile.com>
-rw-r--r--lcm/ns_vnfs/biz/handle_notification.py39
-rw-r--r--lcm/pub/exceptions.py4
-rw-r--r--lcm/pub/msapi/aai.py8
3 files changed, 34 insertions, 17 deletions
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]