summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/db
diff options
context:
space:
mode:
authorTzu-Mainn Chen <tzumainn@redhat.com>2019-11-19 00:08:54 +0000
committerTzu-Mainn Chen <tzumainn@redhat.com>2020-01-02 15:12:43 +0000
commit6f16a2268ce9c7e17c09a3ebd5f48c544e93c808 (patch)
tree5efd12ffda6abdb91a323ef1cc259e32ee993879 /ironic/tests/unit/db
parent2a43e371f17e78ea749bb0d17c98df24652aeb0c (diff)
downloadironic-6f16a2268ce9c7e17c09a3ebd5f48c544e93c808.tar.gz
Allow node owners to administer associated ports
Expose a port's node's owner to policy, giving Ironic admins the option of modifying the policy file to allow users specified by a node's owner field to perform API actions on that node's associated ports. Change-Id: I47ecbad9729f18dacc703e2a625ef3e92bfb00ed Story: #2006506 Task: #37539
Diffstat (limited to 'ironic/tests/unit/db')
-rw-r--r--ironic/tests/unit/db/test_ports.py49
1 files changed, 48 insertions, 1 deletions
diff --git a/ironic/tests/unit/db/test_ports.py b/ironic/tests/unit/db/test_ports.py
index fa12c4c25..e0d2e1d66 100644
--- a/ironic/tests/unit/db/test_ports.py
+++ b/ironic/tests/unit/db/test_ports.py
@@ -28,7 +28,7 @@ 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()
+ self.node = db_utils.create_test_node(owner='12345')
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)
@@ -45,6 +45,17 @@ class DbPortTestCase(base.DbTestCase):
res = self.dbapi.get_port_by_address(self.port.address)
self.assertEqual(self.port.id, res.id)
+ def test_get_port_by_address_filter_by_owner(self):
+ res = self.dbapi.get_port_by_address(self.port.address,
+ owner=self.node.owner)
+ self.assertEqual(self.port.id, res.id)
+
+ def test_get_port_by_address_filter_by_owner_no_match(self):
+ self.assertRaises(exception.PortNotFound,
+ self.dbapi.get_port_by_address,
+ self.port.address,
+ owner='54321')
+
def test_get_port_list(self):
uuids = []
for i in range(1, 6):
@@ -72,10 +83,36 @@ class DbPortTestCase(base.DbTestCase):
self.assertRaises(exception.InvalidParameterValue,
self.dbapi.get_port_list, sort_key='foo')
+ def test_get_port_list_filter_by_node_owner(self):
+ uuids = []
+ for i in range(1, 3):
+ port = db_utils.create_test_port(uuid=uuidutils.generate_uuid(),
+ address='52:54:00:cf:2d:4%s' % i)
+ for i in range(4, 6):
+ 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(owner=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)
+ def test_get_ports_by_node_id_filter_by_node_owner(self):
+ res = self.dbapi.get_ports_by_node_id(self.node.id,
+ owner=self.node.owner)
+ self.assertEqual(self.port.address, res[0].address)
+
+ def test_get_ports_by_node_id_filter_by_node_owner_no_match(self):
+ res = self.dbapi.get_ports_by_node_id(self.node.id,
+ owner='54321')
+ 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))
@@ -83,6 +120,16 @@ class DbPortTestCase(base.DbTestCase):
res = self.dbapi.get_ports_by_portgroup_id(self.portgroup.id)
self.assertEqual(self.port.address, res[0].address)
+ def test_get_ports_by_portgroup_id_filter_by_node_owner(self):
+ res = self.dbapi.get_ports_by_portgroup_id(self.portgroup.id,
+ owner=self.node.owner)
+ self.assertEqual(self.port.address, res[0].address)
+
+ def test_get_ports_by_portgroup_id_filter_by_node_owner_no_match(self):
+ res = self.dbapi.get_ports_by_portgroup_id(self.portgroup.id,
+ owner='54321')
+ 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))