From cf9188c2d9794a205ec4e09c75d1b890afb86e5d Mon Sep 17 00:00:00 2001 From: Tzu-Mainn Chen Date: Fri, 22 May 2020 15:43:41 +0000 Subject: Allow node lessee to see node's ports Update the port node's filter to allow both owner and lessee to see a node's ports. This filter is only used when listing ports. Change-Id: I568e8d23375239d9c044df95b4bc24d5174c145b --- ironic/tests/unit/db/test_ports.py | 58 +++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'ironic/tests/unit/db') diff --git a/ironic/tests/unit/db/test_ports.py b/ironic/tests/unit/db/test_ports.py index e0d2e1d66..d2434d603 100644 --- a/ironic/tests/unit/db/test_ports.py +++ b/ironic/tests/unit/db/test_ports.py @@ -28,7 +28,8 @@ class DbPortTestCase(base.DbTestCase): # This method creates a port for every test and # replaces a test for creating a port. super(DbPortTestCase, self).setUp() - self.node = db_utils.create_test_node(owner='12345') + self.node = db_utils.create_test_node(owner='12345', + lessee='54321') self.portgroup = db_utils.create_test_portgroup(node_id=self.node.id) self.port = db_utils.create_test_port(node_id=self.node.id, portgroup_id=self.portgroup.id) @@ -56,6 +57,17 @@ class DbPortTestCase(base.DbTestCase): self.port.address, owner='54321') + def test_get_port_by_address_filter_by_project(self): + res = self.dbapi.get_port_by_address(self.port.address, + project=self.node.lessee) + self.assertEqual(self.port.id, res.id) + + def test_get_port_by_address_filter_by_project_no_match(self): + self.assertRaises(exception.PortNotFound, + self.dbapi.get_port_by_address, + self.port.address, + project='55555') + def test_get_port_list(self): uuids = [] for i in range(1, 6): @@ -99,6 +111,30 @@ class DbPortTestCase(base.DbTestCase): res_uuids = [r.uuid for r in res] self.assertCountEqual(uuids, res_uuids) + def test_get_port_list_filter_by_node_project(self): + lessee_node = db_utils.create_test_node(uuid=uuidutils.generate_uuid(), + lessee=self.node.owner) + + uuids = [] + for i in range(1, 3): + port = db_utils.create_test_port(uuid=uuidutils.generate_uuid(), + node_id=lessee_node.id, + address='52:54:00:cf:2d:4%s' % i) + uuids.append(str(port.uuid)) + for i in range(4, 6): + port = db_utils.create_test_port(uuid=uuidutils.generate_uuid(), + address='52:54:00:cf:2d:4%s' % i) + for i in range(7, 9): + port = db_utils.create_test_port(uuid=uuidutils.generate_uuid(), + node_id=self.node.id, + address='52:54:00:cf:2d:4%s' % i) + uuids.append(str(port.uuid)) + # Also add the uuid for the port created in setUp() + uuids.append(str(self.port.uuid)) + res = self.dbapi.get_port_list(project=self.node.owner) + res_uuids = [r.uuid for r in res] + self.assertCountEqual(uuids, res_uuids) + def test_get_ports_by_node_id(self): res = self.dbapi.get_ports_by_node_id(self.node.id) self.assertEqual(self.port.address, res[0].address) @@ -113,6 +149,16 @@ class DbPortTestCase(base.DbTestCase): owner='54321') self.assertEqual([], res) + def test_get_ports_by_node_id_filter_by_node_project(self): + res = self.dbapi.get_ports_by_node_id(self.node.id, + project=self.node.lessee) + self.assertEqual(self.port.address, res[0].address) + + def test_get_ports_by_node_id_filter_by_node_project_no_match(self): + res = self.dbapi.get_ports_by_node_id(self.node.id, + owner='11111') + self.assertEqual([], res) + def test_get_ports_by_node_id_that_does_not_exist(self): self.assertEqual([], self.dbapi.get_ports_by_node_id(99)) @@ -130,6 +176,16 @@ class DbPortTestCase(base.DbTestCase): owner='54321') self.assertEqual([], res) + def test_get_ports_by_portgroup_id_filter_by_node_project(self): + res = self.dbapi.get_ports_by_portgroup_id(self.portgroup.id, + project=self.node.lessee) + self.assertEqual(self.port.address, res[0].address) + + def test_get_ports_by_portgroup_id_filter_by_node_project_no_match(self): + res = self.dbapi.get_ports_by_portgroup_id(self.portgroup.id, + project='11111') + self.assertEqual([], res) + def test_get_ports_by_portgroup_id_that_does_not_exist(self): self.assertEqual([], self.dbapi.get_ports_by_portgroup_id(99)) -- cgit v1.2.1