From fbe970add68e6d9d998fb7f78377368c403e200d Mon Sep 17 00:00:00 2001 From: Tomas Bzatek 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)