Merge "Improve NodeLocked exception message"
This commit is contained in:
commit
b7a243b63f
@ -183,7 +183,7 @@ class NodeNotFound(NotFound):
|
||||
|
||||
|
||||
class NodeLocked(InvalidState):
|
||||
message = _("Node %(node)s is locked by another process.")
|
||||
message = _("Node %(node)s is locked by host %(host)s.")
|
||||
|
||||
|
||||
class NodeAssociated(InvalidState):
|
||||
|
@ -146,7 +146,8 @@ def _check_port_change_forbidden(port, session):
|
||||
query = query.filter_by(id=node_id)
|
||||
node_ref = query.one()
|
||||
if node_ref['reservation'] is not None:
|
||||
raise exception.NodeLocked(node=node_id)
|
||||
raise exception.NodeLocked(node=node_id,
|
||||
host=node_ref['reservation'])
|
||||
|
||||
|
||||
def _paginate_query(model, limit=None, marker=None, sort_key=None,
|
||||
@ -165,7 +166,8 @@ def _check_node_already_locked(query, query_by):
|
||||
no_reserv = None
|
||||
locked_ref = query.filter(models.Node.reservation != no_reserv).first()
|
||||
if locked_ref:
|
||||
raise exception.NodeLocked(node=locked_ref[query_by])
|
||||
raise exception.NodeLocked(node=locked_ref[query_by],
|
||||
host=locked_ref['reservation'])
|
||||
|
||||
|
||||
def _handle_node_lock_not_found(nodes, query, query_by):
|
||||
@ -339,7 +341,8 @@ class Connection(api.Connection):
|
||||
except NoResultFound:
|
||||
raise exception.NodeNotFound(node=node_id)
|
||||
if node_ref['reservation'] is not None:
|
||||
raise exception.NodeLocked(node=node_id)
|
||||
raise exception.NodeLocked(node=node_id,
|
||||
host=node_ref['reservation'])
|
||||
if node_ref['instance_uuid'] is not None:
|
||||
raise exception.NodeAssociated(node=node_id,
|
||||
instance=node_ref['instance_uuid'])
|
||||
|
@ -385,6 +385,17 @@ class DbNodeTestCase(base.DbTestCase):
|
||||
self.assertRaises(exception.InvalidIdentity,
|
||||
self.dbapi.reserve_nodes, 'reserv1', [])
|
||||
|
||||
def test_reservation_in_exception_message(self):
|
||||
n = self._create_test_node()
|
||||
uuid = n['uuid']
|
||||
|
||||
r = 'fake-reservation'
|
||||
self.dbapi.reserve_nodes(r, [uuid])
|
||||
try:
|
||||
self.dbapi.reserve_nodes('another', [uuid])
|
||||
except exception.NodeLocked as e:
|
||||
self.assertIn(r, str(e))
|
||||
|
||||
def test_release_overlaping_ranges_fails(self):
|
||||
uuids = self._create_many_test_nodes()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user