From f0d6c4821ef4c405e3e3d5637dc2e8665422a469 Mon Sep 17 00:00:00 2001 From: Vojtech Trefny Date: Wed, 19 Jul 2023 10:38:45 +0200 Subject: [PATCH] tests: Improve iscsi_test.ISCSITestCase Changed how we create the initiator name ACLs based on RTT test case for rhbz#2084043 and also improved the test case itself. --- tests/storage_tests/iscsi_test.py | 36 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/tests/storage_tests/iscsi_test.py b/tests/storage_tests/iscsi_test.py index 335b05d5e..714183c26 100644 --- a/tests/storage_tests/iscsi_test.py +++ b/tests/storage_tests/iscsi_test.py @@ -77,21 +77,17 @@ def create_iscsi_target(fpath, initiator_name=None): _delete_backstore(store_name) raise RuntimeError("Failed to create a new iscsi target") - if initiator_name: - status = subprocess.call(["targetcli", "/iscsi/%s/tpg1/acls create %s" % (iqn, initiator_name)], stdout=subprocess.DEVNULL) - if status != 0: - delete_iscsi_target(iqn, store_name) - raise RuntimeError("Failed to set ACLs for '%s'" % iqn) - with udev_settle(): status = subprocess.call(["targetcli", "/iscsi/%s/tpg1/luns create /backstores/fileio/%s" % (iqn, store_name)], stdout=subprocess.DEVNULL) if status != 0: delete_iscsi_target(iqn, store_name) raise RuntimeError("Failed to create a new LUN for '%s' using '%s'" % (iqn, store_name)) - status = subprocess.call(["targetcli", "/iscsi/%s/tpg1 set attribute generate_node_acls=1" % iqn], stdout=subprocess.DEVNULL) - if status != 0: - raise RuntimeError("Failed to set ACLs for '%s'" % iqn) + if initiator_name: + status = subprocess.call(["targetcli", "/iscsi/%s/tpg1/acls create %s" % (iqn, initiator_name)], stdout=subprocess.DEVNULL) + if status != 0: + delete_iscsi_target(iqn, store_name) + raise RuntimeError("Failed to set ACLs for '%s'" % iqn) return iqn, store_name @@ -130,6 +126,7 @@ def test_discover_login(self): if not has_iscsi() or not iscsi.available: self.skipTest("iSCSI not available, skipping") + # initially set the initiator to the correct/allowed one iscsi.initiator = self.initiator nodes = iscsi.discover("127.0.0.1") self.assertTrue(nodes) @@ -141,11 +138,28 @@ def test_discover_login(self): self.assertEqual(nodes[0].port, 3260) self.assertEqual(nodes[0].name, self.dev) - # change the initiator name + # change the initiator name to a wrong one iscsi.initiator = self.initiator + "_1" self.assertEqual(iscsi.initiator, self.initiator + "_1") - # try to login + # check the change made it to /etc/iscsi/initiatorname.iscsi + initiator_file = read_file("/etc/iscsi/initiatorname.iscsi").strip() + self.assertEqual(initiator_file, "InitiatorName=%s" % self.initiator + "_1") + + # try to login (should fail) + ret, err = iscsi.log_into_node(nodes[0]) + self.assertFalse(ret) + self.assertIn("authorization failure", err) + + # change the initiator name back to the correct one + iscsi.initiator = self.initiator + self.assertEqual(iscsi.initiator, self.initiator) + + # check the change made it to /etc/iscsi/initiatorname.iscsi + initiator_file = read_file("/etc/iscsi/initiatorname.iscsi").strip() + self.assertEqual(initiator_file, "InitiatorName=%s" % self.initiator) + + # try to login (should work now) ret, err = iscsi.log_into_node(nodes[0]) self.assertTrue(ret, "Login failed: %s" % err)