summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ironic/db/sqlalchemy/api.py8
-rw-r--r--ironic/tests/api/test_chassis.py6
-rw-r--r--ironic/tests/api/test_nodes.py8
-rw-r--r--ironic/tests/db/test_nodes.py11
-rw-r--r--ironic/tests/db/test_ports.py12
5 files changed, 31 insertions, 14 deletions
diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py
index 0eab5f11c..3c3c03e80 100644
--- a/ironic/db/sqlalchemy/api.py
+++ b/ironic/db/sqlalchemy/api.py
@@ -192,8 +192,10 @@ class Connection(api.Connection):
@objects.objectify(objects.Node)
def get_nodes_by_chassis(self, chassis, limit=None, marker=None,
sort_key=None, sort_dir=None):
+ # get_chassis() to raise an exception if the chassis is not found
+ chassis_obj = self.get_chassis(chassis)
query = model_query(models.Node)
- query = add_node_filter_by_chassis(query, chassis)
+ query = query.filter_by(chassis_id=chassis_obj.id)
return _paginate_query(models.Node, limit, marker,
sort_key, sort_dir, query)
@@ -368,8 +370,10 @@ class Connection(api.Connection):
@objects.objectify(objects.Port)
def get_ports_by_node(self, node, limit=None, marker=None,
sort_key=None, sort_dir=None):
+ # get_node() to raise an exception if the node is not found
+ node_obj = self.get_node(node)
query = model_query(models.Port)
- query = add_port_filter_by_node(query, node)
+ query = query.filter_by(node_id=node_obj.id)
return _paginate_query(models.Port, limit, marker,
sort_key, sort_dir, query)
diff --git a/ironic/tests/api/test_chassis.py b/ironic/tests/api/test_chassis.py
index 25ba1ae14..efb6f189b 100644
--- a/ironic/tests/api/test_chassis.py
+++ b/ironic/tests/api/test_chassis.py
@@ -123,6 +123,12 @@ class TestListChassis(base.FunctionalTest):
response = self.get_json('/chassis/nodes', expect_errors=True)
self.assertEqual(response.status_int, 400)
+ def test_nodes_subresource_chassis_not_found(self):
+ non_existent_uuid = 'eeeeeeee-cccc-aaaa-bbbb-cccccccccccc'
+ response = self.get_json('/chassis/%s/nodes' % non_existent_uuid,
+ expect_errors=True)
+ self.assertEqual(response.status_int, 404)
+
class TestPatch(base.FunctionalTest):
diff --git a/ironic/tests/api/test_nodes.py b/ironic/tests/api/test_nodes.py
index 4b4fd6ad0..eb90cffaf 100644
--- a/ironic/tests/api/test_nodes.py
+++ b/ironic/tests/api/test_nodes.py
@@ -152,7 +152,7 @@ class TestListNodes(base.FunctionalTest):
self.assertEqual(len(data['ports']), 1)
self.assertIn('next', data.keys())
- def test_nodes_subresource_noid(self):
+ def test_ports_subresource_noid(self):
ndict = dbutils.get_test_node()
self.dbapi.create_node(ndict)
pdict = dbutils.get_test_port(node_id=ndict['id'])
@@ -161,6 +161,12 @@ class TestListNodes(base.FunctionalTest):
response = self.get_json('/nodes/ports', expect_errors=True)
self.assertEqual(response.status_int, 400)
+ def test_ports_subresource_node_not_found(self):
+ non_existent_uuid = 'eeeeeeee-cccc-aaaa-bbbb-cccccccccccc'
+ response = self.get_json('/nodes/%s/ports' % non_existent_uuid,
+ expect_errors=True)
+ self.assertEqual(response.status_int, 404)
+
def test_state(self):
ndict = dbutils.get_test_node()
self.dbapi.create_node(ndict)
diff --git a/ironic/tests/db/test_nodes.py b/ironic/tests/db/test_nodes.py
index 378ebd13e..d655104dd 100644
--- a/ironic/tests/db/test_nodes.py
+++ b/ironic/tests/db/test_nodes.py
@@ -85,11 +85,12 @@ class DbNodeTestCase(base.DbTestCase):
self.assertEqual(n['id'], nodes[0]['id'])
def test_get_nodes_by_chassis_that_does_not_exist(self):
- nodes = self.dbapi.get_nodes_by_chassis(33)
- self.assertEqual(0, len(nodes))
-
- nodes = self.dbapi.get_nodes_by_chassis("1231231-123123-123123")
- self.assertEqual(0, len(nodes))
+ self.assertRaises(exception.ChassisNotFound,
+ self.dbapi.get_nodes_by_chassis,
+ 33)
+ self.assertRaises(exception.ChassisNotFound,
+ self.dbapi.get_nodes_by_chassis,
+ '12345678-9999-0000-aaaa-123456789012')
def test_get_node_by_id(self):
n = self._create_test_node()
diff --git a/ironic/tests/db/test_ports.py b/ironic/tests/db/test_ports.py
index e440bb3ba..206ebfe6f 100644
--- a/ironic/tests/db/test_ports.py
+++ b/ironic/tests/db/test_ports.py
@@ -84,12 +84,12 @@ class DbPortTestCase(base.DbTestCase):
def test_get_ports_by_node_that_does_not_exist(self):
self.dbapi.create_port(self.p)
- res = self.dbapi.get_ports_by_node(99)
- self.assertEqual(0, len(res))
-
- res = self.dbapi.get_ports_by_node(
- '12345678-9999-0000-aaaa-123456789012')
- self.assertEqual(0, len(res))
+ self.assertRaises(exception.NodeNotFound,
+ self.dbapi.get_ports_by_node,
+ 99)
+ self.assertRaises(exception.NodeNotFound,
+ self.dbapi.get_ports_by_node,
+ '12345678-9999-0000-aaaa-123456789012')
def test_destroy_port(self):
self.dbapi.create_port(self.p)