Fix duplicate object error messages

Fixed an issue where creation of duplicate listeners or members may have
not returned the correct error message to users.
The API would traceback with AttributeError: 'NoneType' object has no attribute 'to_dict'

Story: 2009128
Task: 43045
Change-Id: Ibbccda5859c8c6129d43e0742b28b319b49ddd1f
This commit is contained in:
Michael Johnson
2022-06-21 14:36:05 +00:00
parent 2877bf77bc
commit f166bb1481
2 changed files with 8 additions and 20 deletions
+4 -10
View File
@@ -333,16 +333,10 @@ class ListenersController(base.BaseController):
lock_session, id=db_listener.id)
return db_listener
except odb_exceptions.DBDuplicateEntry as de:
column_list = ['load_balancer_id', 'protocol', 'protocol_port']
constraint_list = ['uq_listener_load_balancer_id_protocol_port']
if ['id'] == de.columns:
raise exceptions.IDAlreadyExists()
if (set(column_list) == set(de.columns) or
set(constraint_list) == set(de.columns)):
raise exceptions.DuplicateListenerEntry(
protocol=listener_dict.get('protocol'),
port=listener_dict.get('protocol_port'))
except odb_exceptions.DBDuplicateEntry as e:
raise exceptions.DuplicateListenerEntry(
protocol=listener_dict.get('protocol'),
port=listener_dict.get('protocol_port')) from e
except odb_exceptions.DBError as e:
raise exceptions.InvalidOption(value=listener_dict.get('protocol'),
option='protocol') from e
+4 -10
View File
@@ -119,16 +119,10 @@ class MemberController(base.BaseController):
"""Validate creating member on pool."""
try:
return self.repositories.member.create(lock_session, **member_dict)
except odb_exceptions.DBDuplicateEntry as de:
column_list = ['pool_id', 'ip_address', 'protocol_port']
constraint_list = ['uq_member_pool_id_address_protocol_port']
if ['id'] == de.columns:
raise exceptions.IDAlreadyExists()
if (set(column_list) == set(de.columns) or
set(constraint_list) == set(de.columns)):
raise exceptions.DuplicateMemberEntry(
ip_address=member_dict.get('ip_address'),
port=member_dict.get('protocol_port'))
except odb_exceptions.DBDuplicateEntry as e:
raise exceptions.DuplicateMemberEntry(
ip_address=member_dict.get('ip_address'),
port=member_dict.get('protocol_port')) from e
except odb_exceptions.DBError as e:
# TODO(blogan): will have to do separate validation protocol
# before creation or update since the exception messages