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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user