9a0544
From fbe970add68e6d9d998fb7f78377368c403e200d Mon Sep 17 00:00:00 2001
9a0544
From: Tomas Bzatek <tbzatek@redhat.com>
9a0544
Date: Mon, 31 Oct 2022 15:15:31 +0100
9a0544
Subject: [PATCH] tests: Restart iscsid on every InitiatorName change
9a0544
9a0544
The test LIO target config expects a specific initiator name as set
9a0544
by the ACLs. However the iscsid daemon only seems to be reading
9a0544
the InitiatorName string on startup and in case the service is running
9a0544
with a different name, the auth tests will fail.
9a0544
9a0544
As a workaround, restart the iscsid service after each change.
9a0544
A proper way through libiscsi or libopeniscsiusr would be nice -> TODO.
9a0544
---
9a0544
 src/tests/dbus-tests/test_30_iscsi.py | 12 ++++++++++++
9a0544
 1 file changed, 12 insertions(+)
9a0544
9a0544
diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py
9a0544
index f2594d992..09e975f30 100644
9a0544
--- a/src/tests/dbus-tests/test_30_iscsi.py
9a0544
+++ b/src/tests/dbus-tests/test_30_iscsi.py
9a0544
@@ -48,9 +48,21 @@ def _force_lougout(self, target):
9a0544
     def _set_initiator_name(self):
9a0544
         manager = self.get_object('/Manager')
9a0544
 
9a0544
+        # make backup of INITIATOR_FILE and restore it at the end
9a0544
+        try:
9a0544
+            initiatorname_backup = self.read_file(INITIATOR_FILE)
9a0544
+            self.addCleanup(self.write_file, INITIATOR_FILE, initiatorname_backup)
9a0544
+        except FileNotFoundError as e:
9a0544
+            # no existing file, simply remove it once finished
9a0544
+            self.addCleanup(self.remove_file, INITIATOR_FILE, True)
9a0544
+
9a0544
         manager.SetInitiatorName(self.initiator, self.no_options,
9a0544
                                  dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator')
9a0544
 
9a0544
+        # running iscsid needs to be restarted to reflect the change
9a0544
+        self.run_command('systemctl try-reload-or-restart iscsid.service')
9a0544
+        # ignore the return code in case of non-systemd distros
9a0544
+
9a0544
         init = manager.GetInitiatorName(self.no_options,
9a0544
                                         dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator')
9a0544
         self.assertEqual(init, self.initiator)