From afc432af4d2342a550536967a7c880145266c362 Mon Sep 17 00:00:00 2001 From: Ruby Loo Date: Mon, 15 Jan 2018 10:11:50 -0500 Subject: [PATCH] node_tag_exists(): raise exception if bad node To make tags consistent with traits, change db.api.node_tag_exists() to raise a NodeNotFound exception if the node doesn't exist. This is a follow up to bbff319f0226af11af3c2864ad8f678abef6dcdb. Change-Id: Id0ddf448d97b5ac22ef5dc27154a1b229514a968 Partial-Bug:#1526266 --- ironic/db/api.py | 1 + ironic/db/sqlalchemy/api.py | 1 + ironic/tests/unit/db/test_node_tags.py | 4 ++++ ironic/tests/unit/db/test_nodes.py | 6 ++++-- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ironic/db/api.py b/ironic/db/api.py index a9ab47a701..4d81207a57 100644 --- a/ironic/db/api.py +++ b/ironic/db/api.py @@ -662,6 +662,7 @@ class Connection(object): :param node_id: The id of a node. :param tag: A tag string. :returns: True if the tag exists otherwise False. + :raises: NodeNotFound if the node is not found. """ @abc.abstractmethod diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py index 3e5aaa1170..0201515206 100644 --- a/ironic/db/sqlalchemy/api.py +++ b/ironic/db/sqlalchemy/api.py @@ -968,6 +968,7 @@ class Connection(api.Connection): raise exception.NodeTagNotFound(node_id=node_id, tag=tag) def node_tag_exists(self, node_id, tag): + self._check_node_exists(node_id) q = model_query(models.NodeTag).filter_by(node_id=node_id, tag=tag) return model_query(q.exists()).scalar() diff --git a/ironic/tests/unit/db/test_node_tags.py b/ironic/tests/unit/db/test_node_tags.py index 38c22e4a16..b2903b1d5f 100644 --- a/ironic/tests/unit/db/test_node_tags.py +++ b/ironic/tests/unit/db/test_node_tags.py @@ -108,3 +108,7 @@ class DbNodeTagTestCase(base.DbTestCase): def test_node_tag_not_exists(self): ret = self.dbapi.node_tag_exists(self.node.id, 'tag1') self.assertFalse(ret) + + def test_node_tag_node_not_exist(self): + self.assertRaises(exception.NodeNotFound, + self.dbapi.node_tag_exists, '123', 'tag1') diff --git a/ironic/tests/unit/db/test_nodes.py b/ironic/tests/unit/db/test_nodes.py index ff09b62d9f..473b616478 100644 --- a/ironic/tests/unit/db/test_nodes.py +++ b/ironic/tests/unit/db/test_nodes.py @@ -353,7 +353,8 @@ class DbNodeTestCase(base.DbTestCase): self.assertTrue(self.dbapi.node_tag_exists(node.id, tag.tag)) self.dbapi.destroy_node(node.id) - self.assertFalse(self.dbapi.node_tag_exists(node.id, tag.tag)) + self.assertRaises(exception.NodeNotFound, + self.dbapi.node_tag_exists, node.id, tag.tag) def test_tags_get_destroyed_after_destroying_a_node_by_uuid(self): node = utils.create_test_node() @@ -362,7 +363,8 @@ class DbNodeTestCase(base.DbTestCase): self.assertTrue(self.dbapi.node_tag_exists(node.id, tag.tag)) self.dbapi.destroy_node(node.uuid) - self.assertFalse(self.dbapi.node_tag_exists(node.id, tag.tag)) + self.assertRaises(exception.NodeNotFound, + self.dbapi.node_tag_exists, node.id, tag.tag) def test_volume_connector_get_destroyed_after_destroying_a_node(self): node = utils.create_test_node()