diff options
-rw-r--r-- | ironic/db/sqlalchemy/api.py | 8 | ||||
-rw-r--r-- | ironic/tests/api/test_chassis.py | 6 | ||||
-rw-r--r-- | ironic/tests/api/test_nodes.py | 8 | ||||
-rw-r--r-- | ironic/tests/db/test_nodes.py | 11 | ||||
-rw-r--r-- | ironic/tests/db/test_ports.py | 12 |
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) |