summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/db
diff options
context:
space:
mode:
authorTzu-Mainn Chen <tzumainn@redhat.com>2020-05-22 15:43:41 +0000
committerTzu-Mainn Chen <tzumainn@redhat.com>2020-07-23 17:01:10 +0000
commitcf9188c2d9794a205ec4e09c75d1b890afb86e5d (patch)
tree9dc536d09d33656ab6a06b73c56b8aaf0a48bcb2 /ironic/tests/unit/db
parente461e36ee9bbdd9ff06d91cbc4a898d594545488 (diff)
downloadironic-cf9188c2d9794a205ec4e09c75d1b890afb86e5d.tar.gz
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
Diffstat (limited to 'ironic/tests/unit/db')
-rw-r--r--ironic/tests/unit/db/test_ports.py58
1 files changed, 57 insertions, 1 deletions
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))