From 9c62b95ffade6f289138b9096027c87196dd8258 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Tue, 10 Nov 2015 12:53:38 +0100 Subject: [PATCH] Properly order node deletion from cache In databases that actually support foreign keys (like MySQL), we need to delete everything linking to a node before deleting a node. Change-Id: I320d8547697c3c13b7acb2e3fee117347550e264 Closes-Bug: #1511187 --- ironic_inspector/node_cache.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ironic_inspector/node_cache.py b/ironic_inspector/node_cache.py index 671de7c35..772be148a 100644 --- a/ironic_inspector/node_cache.py +++ b/ironic_inspector/node_cache.py @@ -340,14 +340,12 @@ def _delete_node(uuid, session=None): """Delete information about a node. :param uuid: Ironic node UUID + :param session: optional existing database session """ with db.ensure_transaction(session) as session: - (db.model_query(db.Node, session=session).filter_by(uuid=uuid). - delete()) - (db.model_query(db.Attribute, session=session).filter_by(uuid=uuid). - delete(synchronize_session=False)) - (db.model_query(db.Option, session=session).filter_by(uuid=uuid). - delete()) + for model in (db.Attribute, db.Option, db.Node): + db.model_query(model, + session=session).filter_by(uuid=uuid).delete() def active_macs():