summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuby Loo <ruby.loo@intel.com>2018-01-15 10:11:50 -0500
committerRuby Loo <ruby.loo@intel.com>2018-01-15 10:11:50 -0500
commitafc432af4d2342a550536967a7c880145266c362 (patch)
tree1b1f2db6494289834ab76330c9bd74127bb88fda
parente9425da77e6dcad3669d0d2e321a5e379fae8890 (diff)
downloadironic-afc432af4d2342a550536967a7c880145266c362.tar.gz
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
-rw-r--r--ironic/db/api.py1
-rw-r--r--ironic/db/sqlalchemy/api.py1
-rw-r--r--ironic/tests/unit/db/test_node_tags.py4
-rw-r--r--ironic/tests/unit/db/test_nodes.py6
4 files changed, 10 insertions, 2 deletions
diff --git a/ironic/db/api.py b/ironic/db/api.py
index a9ab47a70..4d81207a5 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 3e5aaa117..020151520 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 38c22e4a1..b2903b1d5 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 ff09b62d9..473b61647 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()