Merge "Improve NodeLocked exception message"
This commit is contained in:
commit
b7a243b63f
@ -183,7 +183,7 @@ class NodeNotFound(NotFound):
|
|||||||
|
|
||||||
|
|
||||||
class NodeLocked(InvalidState):
|
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):
|
class NodeAssociated(InvalidState):
|
||||||
|
@ -146,7 +146,8 @@ def _check_port_change_forbidden(port, session):
|
|||||||
query = query.filter_by(id=node_id)
|
query = query.filter_by(id=node_id)
|
||||||
node_ref = query.one()
|
node_ref = query.one()
|
||||||
if node_ref['reservation'] is not None:
|
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,
|
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
|
no_reserv = None
|
||||||
locked_ref = query.filter(models.Node.reservation != no_reserv).first()
|
locked_ref = query.filter(models.Node.reservation != no_reserv).first()
|
||||||
if locked_ref:
|
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):
|
def _handle_node_lock_not_found(nodes, query, query_by):
|
||||||
@ -339,7 +341,8 @@ class Connection(api.Connection):
|
|||||||
except NoResultFound:
|
except NoResultFound:
|
||||||
raise exception.NodeNotFound(node=node_id)
|
raise exception.NodeNotFound(node=node_id)
|
||||||
if node_ref['reservation'] is not None:
|
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:
|
if node_ref['instance_uuid'] is not None:
|
||||||
raise exception.NodeAssociated(node=node_id,
|
raise exception.NodeAssociated(node=node_id,
|
||||||
instance=node_ref['instance_uuid'])
|
instance=node_ref['instance_uuid'])
|
||||||
|
@ -385,6 +385,17 @@ class DbNodeTestCase(base.DbTestCase):
|
|||||||
self.assertRaises(exception.InvalidIdentity,
|
self.assertRaises(exception.InvalidIdentity,
|
||||||
self.dbapi.reserve_nodes, 'reserv1', [])
|
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):
|
def test_release_overlaping_ranges_fails(self):
|
||||||
uuids = self._create_many_test_nodes()
|
uuids = self._create_many_test_nodes()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user