From fbe970add68e6d9d998fb7f78377368c403e200d Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Mon, 31 Oct 2022 15:15:31 +0100
Subject: [PATCH] tests: Restart iscsid on every InitiatorName change

The test LIO target config expects a specific initiator name as set
by the ACLs. However the iscsid daemon only seems to be reading
the InitiatorName string on startup and in case the service is running
with a different name, the auth tests will fail.

As a workaround, restart the iscsid service after each change.
A proper way through libiscsi or libopeniscsiusr would be nice -> TODO.
---
 src/tests/dbus-tests/test_30_iscsi.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/tests/dbus-tests/test_30_iscsi.py b/src/tests/dbus-tests/test_30_iscsi.py
index f2594d992..09e975f30 100644
--- a/src/tests/dbus-tests/test_30_iscsi.py
+++ b/src/tests/dbus-tests/test_30_iscsi.py
@@ -48,9 +48,21 @@ def _force_lougout(self, target):
     def _set_initiator_name(self):
         manager = self.get_object('/Manager')
 
+        # make backup of INITIATOR_FILE and restore it at the end
+        try:
+            initiatorname_backup = self.read_file(INITIATOR_FILE)
+            self.addCleanup(self.write_file, INITIATOR_FILE, initiatorname_backup)
+        except FileNotFoundError as e:
+            # no existing file, simply remove it once finished
+            self.addCleanup(self.remove_file, INITIATOR_FILE, True)
+
         manager.SetInitiatorName(self.initiator, self.no_options,
                                  dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator')
 
+        # running iscsid needs to be restarted to reflect the change
+        self.run_command('systemctl try-reload-or-restart iscsid.service')
+        # ignore the return code in case of non-systemd distros
+
         init = manager.GetInitiatorName(self.no_options,
                                         dbus_interface=self.iface_prefix + '.Manager.ISCSI.Initiator')
         self.assertEqual(init, self.initiator)
