diff --git a/sys-cluster/pcs/files/openrc-0.10.7.patch b/sys-cluster/pcs/files/openrc-0.10.7.patch index aad70cb107..5efe85ec84 100644 --- a/sys-cluster/pcs/files/openrc-0.10.7.patch +++ b/sys-cluster/pcs/files/openrc-0.10.7.patch @@ -1,37 +1,181 @@ ---- a/pcs/settings_default.py 2019-06-12 23:35:02.146909492 +0900 -+++ b/pcs/settings_default.py 2019-06-12 23:31:27.795771910 +0900 +diff -uPNr pcs-0.10.7/pcs/lib/external.py pcs-0.10.7-openrc/pcs/lib/external.py +--- pcs-0.10.7/pcs/lib/external.py 2020-12-15 17:02:49.055879169 +0100 ++++ pcs-0.10.7-openrc/pcs/lib/external.py 2020-12-15 21:13:41.878627331 +0100 +@@ -13,8 +13,8 @@ + from pcs.lib.errors import LibraryError + + +-_chkconfig = settings.chkconfig_binary +-_service = settings.service_binary ++_rc_config = settings.rc_config_binary ++_rc_service = settings.rc_service_binary + _systemctl = settings.systemctl_binary + + +@@ -192,7 +192,7 @@ + [_systemctl, "disable", _get_service_name(service, instance)] + ) + else: +- stdout, stderr, retval = runner.run([_chkconfig, service, "off"]) ++ stdout, stderr, retval = runner.run([_rc_config, 'delete', service, "default"]) + if retval != 0: + raise DisableServiceError( + service, join_multilines([stderr, stdout]), instance +@@ -214,7 +214,7 @@ + [_systemctl, "enable", _get_service_name(service, instance)] + ) + else: +- stdout, stderr, retval = runner.run([_chkconfig, service, "on"]) ++ stdout, stderr, retval = runner.run([_rc_config, 'add', service, "default"]) + if retval != 0: + raise EnableServiceError( + service, join_multilines([stderr, stdout]), instance +@@ -234,7 +234,7 @@ + [_systemctl, "start", _get_service_name(service, instance)] + ) + else: +- stdout, stderr, retval = runner.run([_service, service, "start"]) ++ stdout, stderr, retval = runner.run([_rc_service, service, "start"]) + if retval != 0: + raise StartServiceError( + service, join_multilines([stderr, stdout]), instance +@@ -254,7 +254,7 @@ + [_systemctl, "stop", _get_service_name(service, instance)] + ) + else: +- stdout, stderr, retval = runner.run([_service, service, "stop"]) ++ stdout, stderr, retval = runner.run([_rc_service, service, "stop"]) + if retval != 0: + raise StopServiceError( + service, join_multilines([stderr, stdout]), instance +@@ -295,8 +295,12 @@ + [_systemctl, "is-enabled", _get_service_name(service, instance)] + ) + else: +- dummy_stdout, dummy_stderr, retval = runner.run([_chkconfig, service]) +- ++ stdout, dummy_stderr, dummy_retval = runner.run([_rc_config, 'list', 'default']) ++ retval = 1 ++ for line in stdout.splitlines(): ++ line = line.split(' ')[0] ++ if service == line: ++ retval = 0 + return retval == 0 + + +@@ -316,7 +320,7 @@ + ) + else: + dummy_stdout, dummy_stderr, retval = runner.run( +- [_service, service, "status"] ++ [_rc_service, service, "status"] + ) + + return retval == 0 +@@ -344,8 +348,7 @@ + """ + if is_systemctl(): + return [] +- +- stdout, dummy_stderr, return_code = runner.run([_chkconfig]) ++ stdout, dummy_stderr, return_code = runner.run([_rc_config, "list"]) + if return_code != 0: + return [] + +diff -uPNr pcs-0.10.7/pcs/settings_default.py pcs-0.10.7-openrc/pcs/settings_default.py +--- pcs-0.10.7/pcs/settings_default.py 2020-12-15 17:02:49.056879154 +0100 ++++ pcs-0.10.7-openrc/pcs/settings_default.py 2020-12-15 20:31:14.156706578 +0100 @@ -1,8 +1,8 @@ import os.path - systemctl_binary = "/bin/systemctl" +-systemctl_binary = "/bin/systemctl" -chkconfig_binary = "/sbin/chkconfig" -service_binary = "/sbin/service" -+chkconfig_binary = "/usr/bin/rc-config" -+service_binary = "/sbin/rc-service" ++systemctl_binary="/bin/systemctl" ++rc_config_binary="/usr/bin/rc-config" ++rc_service_binary="/sbin/rc-service" pacemaker_binaries = "/usr/sbin/" crm_resource_binary = os.path.join(pacemaker_binaries, "crm_resource") corosync_binaries = "/usr/sbin/" ---- a/pcsd/pcs.rb 2019-06-12 23:35:13.882862268 +0900 -+++ b/pcsd/pcs.rb 2019-06-12 23:31:11.357838047 +0900 -@@ -1712,7 +1712,7 @@ +diff -uPNr pcs-0.10.7/pcs/settings.py.debian pcs-0.10.7-openrc/pcs/settings.py.debian +--- pcs-0.10.7/pcs/settings.py.debian 2020-12-15 17:02:49.055879169 +0100 ++++ pcs-0.10.7-openrc/pcs/settings.py.debian 2020-12-16 09:36:10.493104892 +0100 +@@ -1,10 +1,10 @@ + from pcs.settings_default import * +-service_binary = "/usr/sbin/service" ++rc-service_binary = "/sbin/rc-service" + corosync_log_file = "/var/log/corosync/corosync.log" +-pacemaker_schedulerd = "/usr/lib/pacemaker/pacemaker-schedulerd" +-pacemaker_controld = "/usr/lib/pacemaker/pacemaker-controld" +-pacemaker_based = "/usr/lib/pacemaker/pacemaker-based" +-pacemaker_fenced = "/usr/lib/pacemaker/pacemaker-fenced" ++pacemaker_schedulerd = "/usr/libexec/pacemaker/pacemaker-schedulerd" ++pacemaker_controld = "/usr/libexec/pacemaker/pacemaker-controld" ++pacemaker_based = "/usr/libexec/pacemaker/pacemaker-based" ++pacemaker_fenced = "/usr/libexec/pacemaker/pacemaker-fenced" + pcsd_exec_location = "/usr/share/pcsd/" + pcsd_gem_path = None + pcsd_config = "/etc/default/pcsd" +diff -uPNr pcs-0.10.7/pcs/utils.py pcs-0.10.7-openrc/pcs/utils.py +--- pcs-0.10.7/pcs/utils.py 2020-12-15 17:02:49.056879154 +0100 ++++ pcs-0.10.7-openrc/pcs/utils.py 2020-12-15 17:36:27.914500816 +0100 +@@ -2187,7 +2187,7 @@ + ) + else: + stdout, stderr, retval = cmd_runner().run( +- [settings.service_binary, service, "start"] ++ [settings.rc-service_binary, service, "start"] + ) + return join_multilines([stderr, stdout]), retval + +@@ -2202,7 +2202,7 @@ + ) + else: + stdout, stderr, retval = cmd_runner().run( +- [settings.service_binary, service, "stop"] ++ [settings.rc-service_binary, service, "stop"] + ) + return join_multilines([stderr, stdout]), retval + +diff -uPNr pcs-0.10.7/pcsd/pcs.rb pcs-0.10.7-openrc/pcsd/pcs.rb +--- pcs-0.10.7/pcsd/pcs.rb 2020-12-15 17:02:49.063879050 +0100 ++++ pcs-0.10.7-openrc/pcsd/pcs.rb 2020-12-16 09:19:41.341318599 +0100 +@@ -1708,11 +1708,22 @@ + def is_service_enabled?(service) if ISSYSTEMCTL cmd = ['systemctl', 'is-enabled', "#{service}.service"] ++ _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) ++ return (retcode == 0) else - cmd = ['chkconfig', service] -+ cmd = ['/usr/bin/rc-config','list default|/bin/grep -q', service] ++ cmd = ['rc-config', 'list', 'default'] ++ stdout, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) ++ if retcode != 0 ++ return false ++ end ++ stdout.each { |line| ++ line = line.split(' ') ++ if line[0] == service ++ return true ++ end ++ } ++ return false end - _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) - return (retcode == 0) -@@ -1722,7 +1722,7 @@ - if ISSYSTEMCTL - cmd = ['systemctl', 'status', "#{service}.service"] +- _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) +- return (retcode == 0) + end + + def is_service_running?(service) +@@ -1722,7 +1733,7 @@ + # encoding/decoding errors. We are not interested in the lines anyway. + cmd = ['systemctl', 'status', '--lines=0', "#{service}.service"] else - cmd = ['service', service, 'status'] -+ cmd = ['/bin/rc-status', 'default|/bin/grep started| /bin/grep -q', service] ++ cmd = ['rc-service', service, 'status'] end _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) return (retcode == 0) -@@ -1778,11 +1778,12 @@ +@@ -1775,7 +1786,8 @@ class ServiceInstalledCheckerChkconfig < ServiceInstalledChecker protected def run_command @@ -41,78 +185,224 @@ end def contains_line_service?(line, service) -- return line.split(' ')[0] == service -+ return line.strip == service - end - end - -@@ -1765,7 +1766,7 @@ +@@ -1802,7 +1814,7 @@ cmd = ['systemctl', 'enable', "#{service}.service"] else # fails when the service is not installed - cmd = ['chkconfig', service, 'on'] -+ cmd = ['/usr/bin/rc-config', 'add', service, 'default'] ++ cmd = ['rc-config', 'add', service, 'default'] end _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) return (retcode == 0) -@@ -1780,7 +1781,7 @@ +@@ -1817,7 +1829,7 @@ if ISSYSTEMCTL cmd = ['systemctl', 'disable', "#{service}.service"] else - cmd = ['chkconfig', service, 'off'] -+ cmd = ['/usr/bin/rc-config', 'delete', service, 'default'] ++ cmd = ['rc-config', 'delete', service, 'default'] end _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) return (retcode == 0) ---- a/pcs/lib/external.py 2019-06-12 23:35:06.017893916 +0900 -+++ b/pcs/lib/external.py 2019-06-12 23:31:18.962807448 +0900 -@@ -69,7 +69,7 @@ - _systemctl, "disable", _get_service_name(service, instance) - ]) - else: -- stdout, stderr, retval = runner.run([_chkconfig, service, "off"]) -+ stdout, stderr, retval = runner.run([_chkconfig, 'delete', service, "default"]) - if retval != 0: - raise DisableServiceError( - service, -@@ -93,7 +93,7 @@ - _systemctl, "enable", _get_service_name(service, instance) - ]) - else: -- stdout, stderr, retval = runner.run([_chkconfig, service, "on"]) -+ stdout, stderr, retval = runner.run([_chkconfig, 'add', service, "default"]) - if retval != 0: - raise EnableServiceError( - service, -@@ -177,8 +177,12 @@ - [_systemctl, "is-enabled", _get_service_name(service, instance)] +@@ -1827,7 +1839,7 @@ + if ISSYSTEMCTL + cmd = ['systemctl', 'start', "#{service}.service"] + else +- cmd = ['service', service, 'start'] ++ cmd = ['rc-service', service, 'start'] + end + _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) + return (retcode == 0) +@@ -1840,7 +1852,7 @@ + if ISSYSTEMCTL + cmd = ['systemctl', 'stop', "#{service}.service"] + else +- cmd = ['service', service, 'stop'] ++ cmd = ['rc-service', service, 'stop'] + end + _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) + return (retcode == 0) +diff -uPNr pcs-0.10.7/pcsd/settings.rb pcs-0.10.7-openrc/pcsd/settings.rb +--- pcs-0.10.7/pcsd/settings.rb 2020-12-15 17:02:49.065879020 +0100 ++++ pcs-0.10.7-openrc/pcsd/settings.rb 2020-12-16 09:26:46.782426991 +0100 +@@ -3,7 +3,7 @@ + PCSD_EXEC_LOCATION = '/usr/lib/pcsd/' + PCSD_VAR_LOCATION = '/var/lib/pcsd/' + PCSD_DEFAULT_PORT = 2224 +-PCSD_RUBY_SOCKET = '/run/pcsd-ruby.socket' ++PCSD_RUBY_SOCKET = '/run/pcsd-daemon.socket' + + CRT_FILE = PCSD_VAR_LOCATION + 'pcsd.crt' + KEY_FILE = PCSD_VAR_LOCATION + 'pcsd.key' +diff -uPNr pcs-0.10.7/pcs_test/tier0/lib/test_external.py pcs-0.10.7-openrc/pcs_test/tier0/lib/test_external.py +--- pcs-0.10.7/pcs_test/tier0/lib/test_external.py 2020-12-15 17:02:49.061879080 +0100 ++++ pcs-0.10.7-openrc/pcs_test/tier0/lib/test_external.py 2020-12-15 17:44:33.382213643 +0100 +@@ -16,8 +16,8 @@ + import pcs.lib.external as lib + + +-_chkconfig = settings.chkconfig_binary +-_service = settings.service_binary ++_rc-config = settings.rc-config_binary ++_rc-service = settings.rc-service_binary + _systemctl = settings.systemctl_binary + + +@@ -415,7 +415,7 @@ + self.mock_runner, self.service, None + ) + self.mock_runner.run.assert_called_once_with( +- [_chkconfig, self.service, "off"] ++ [_rc-config, "delete", self.service, "default"] + ) + + def test_not_systemctl_failed(self, mock_is_installed, mock_systemctl): +@@ -430,7 +430,7 @@ + self.mock_runner, self.service, None + ) + self.mock_runner.run.assert_called_once_with( +- [_chkconfig, self.service, "off"] ++ [_rc-config, "delete", self.service, "default"] + ) + + def test_systemctl_not_installed(self, mock_is_installed, mock_systemctl): +@@ -480,7 +480,7 @@ + self.mock_runner, self.service, instance + ) + self.mock_runner.run.assert_called_once_with( +- [_chkconfig, self.service, "off"] ++ [_rc-config, "delete", self.service, "default"] ) - else: -- dummy_stdout, dummy_stderr, retval = runner.run([_chkconfig, service]) -- -+ stdout, dummy_stderr, dummy_retval = runner.run([_chkconfig, 'list', 'default']) -+ retval = 1 -+ for line in stdout.splitlines(): -+ line = line.strip() -+ if service == line: -+ retval = 0 - return retval == 0 -@@ -225,14 +229,13 @@ - """ - if is_systemctl(): - return [] -- -- stdout, dummy_stderr, return_code = runner.run([_chkconfig]) -+ stdout, dummy_stderr, return_code = runner.run([_chkconfig, "list"]) - if return_code != 0: - return [] +@@ -514,7 +514,7 @@ + self.mock_runner.run.return_value = ("", "", 0) + lib.enable_service(self.mock_runner, self.service) + self.mock_runner.run.assert_called_once_with( +- [_chkconfig, self.service, "on"] ++ [_rc-config, "add", self.service, "default"] + ) - service_list = [] - for service in stdout.splitlines(): -- service = service.split(" ", 1)[0] -+ service = service.strip().split(' ')[0] - if service: - service_list.append(service) - return service_list + def test_not_systemctl_failed(self, mock_systemctl): +@@ -525,7 +525,7 @@ + lambda: lib.enable_service(self.mock_runner, self.service), + ) + self.mock_runner.run.assert_called_once_with( +- [_chkconfig, self.service, "on"] ++ [_rc-config, "add", self.service, "default"] + ) + + def test_instance_systemctl(self, mock_systemctl): +@@ -545,7 +545,7 @@ + self.mock_runner.run.return_value = ("", "", 0) + lib.enable_service(self.mock_runner, self.service, instance="test") + self.mock_runner.run.assert_called_once_with( +- [_chkconfig, self.service, "on"] ++ [_rc-config, "add", self.service, "default"] + ) + + +@@ -579,7 +579,7 @@ + self.mock_runner.run.return_value = ("Starting...", "", 0) + lib.start_service(self.mock_runner, self.service) + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "start"] ++ [_rc-service, self.service, "start"] + ) + + def test_not_systemctl_failed(self, mock_systemctl): +@@ -590,7 +590,7 @@ + lambda: lib.start_service(self.mock_runner, self.service), + ) + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "start"] ++ [_rc-service, self.service, "start"] + ) + + def test_instance_systemctl(self, mock_systemctl): +@@ -610,7 +610,7 @@ + self.mock_runner.run.return_value = ("Starting...", "", 0) + lib.start_service(self.mock_runner, self.service, instance="test") + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "start"] ++ [_rc-service, self.service, "start"] + ) + + +@@ -644,7 +644,7 @@ + self.mock_runner.run.return_value = ("Stopping...", "", 0) + lib.stop_service(self.mock_runner, self.service) + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "stop"] ++ [_rc-service, self.service, "stop"] + ) + + def test_not_systemctl_failed(self, mock_systemctl): +@@ -655,7 +655,7 @@ + lambda: lib.stop_service(self.mock_runner, self.service), + ) + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "stop"] ++ [_rc-service, self.service, "stop"] + ) + + def test_instance_systemctl(self, mock_systemctl): +@@ -671,7 +671,7 @@ + self.mock_runner.run.return_value = ("Stopping...", "", 0) + lib.stop_service(self.mock_runner, self.service, instance="test") + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "stop"] ++ [_rc-service, self.service, "stop"] + ) + + +@@ -734,13 +734,13 @@ + mock_systemctl.return_value = False + self.mock_runner.run.return_value = ("", "", 0) + self.assertTrue(lib.is_service_enabled(self.mock_runner, self.service)) +- self.mock_runner.run.assert_called_once_with([_chkconfig, self.service]) ++ self.mock_runner.run.assert_called_once_with([_rc-config, self.service]) + + def test_not_systemctl_disabled(self, mock_systemctl): + mock_systemctl.return_value = False + self.mock_runner.run.return_value = ("", "", 3) + self.assertFalse(lib.is_service_enabled(self.mock_runner, self.service)) +- self.mock_runner.run.assert_called_once_with([_chkconfig, self.service]) ++ self.mock_runner.run.assert_called_once_with([_rc-config, self.service]) + + + @mock.patch("pcs.lib.external.is_systemctl") +@@ -770,7 +770,7 @@ + self.mock_runner.run.return_value = ("is running", "", 0) + self.assertTrue(lib.is_service_running(self.mock_runner, self.service)) + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "status"] ++ [_rc-service, self.service, "status"] + ) + + def test_not_systemctl_not_running(self, mock_systemctl): +@@ -778,7 +778,7 @@ + self.mock_runner.run.return_value = ("is stopped", "", 3) + self.assertFalse(lib.is_service_running(self.mock_runner, self.service)) + self.mock_runner.run.assert_called_once_with( +- [_service, self.service, "status"] ++ [_rc-service, self.service, "status"] + ) + + +@@ -942,14 +942,14 @@ + ["pcsd", "sbd", "pacemaker"], + ) + self.assertEqual(mock_is_systemctl.call_count, 1) +- self.mock_runner.run.assert_called_once_with([_chkconfig]) ++ self.mock_runner.run.assert_called_once_with([_rc-config]) + + def test_failed(self, mock_is_systemctl): + mock_is_systemctl.return_value = False + self.mock_runner.run.return_value = ("stdout", "failed", 1) + self.assertEqual(lib.get_non_systemd_services(self.mock_runner), []) + self.assertEqual(mock_is_systemctl.call_count, 1) +- self.mock_runner.run.assert_called_once_with([_chkconfig]) ++ self.mock_runner.run.assert_called_once_with([_rc-config]) + + def test_systemd(self, mock_is_systemctl): + mock_is_systemctl.return_value = True