--- a/pcs/lib/external.py +++ b/pcs/lib/external.py @@ -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 [] --- a/pcs/settings_default.py +++ b/pcs/settings_default.py @@ -1,8 +1,8 @@ import os.path systemctl_binary = "/bin/systemctl" -chkconfig_binary = "/sbin/chkconfig" -service_binary = "/sbin/service" +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/" @@ -41,7 +41,7 @@ crm_mon_schema = "/usr/share/pacemaker/crm_mon.rng" agent_metadata_schema = "/usr/share/resource-agents/ra-api-1.dtd" pcsd_var_location = "/var/lib/pcsd/" -pcsd_ruby_socket = "/run/pcsd-ruby.socket" +pcsd_ruby_socket = "/run/pcsd-daemon.socket" pcsd_cert_location = os.path.join(pcsd_var_location, "pcsd.crt") pcsd_key_location = os.path.join(pcsd_var_location, "pcsd.key") pcsd_known_hosts_location = os.path.join(pcsd_var_location, "known-hosts") @@ -59,7 +59,7 @@ pacemaker_gname = "haclient" sbd_binary = "/usr/sbin/sbd" sbd_watchdog_default = "/dev/watchdog" -sbd_config = "/etc/sysconfig/sbd" +sbd_config = "/etc/default/sbd" # this limit is also mentioned in docs, change there as well sbd_max_device_num = 3 # message types are also mentioned in docs, change there as well --- a/pcs/settings.py.debian +++ b/pcs/settings.py.debian @@ -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" --- a/pcs/utils.py +++ b/pcs/utils.py @@ -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 --- a/pcsd/pcs.rb +++ b/pcsd/pcs.rb @@ -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 = ['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) 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 = ['rc-service', service, 'status'] end _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) return (retcode == 0) @@ -1775,7 +1786,8 @@ class ServiceInstalledCheckerChkconfig < ServiceInstalledChecker protected def run_command - return run_cmd(PCSAuth.getSuperuserAuth(), 'chkconfig') + cmd = ['rc-config', 'list'] + return run_cmd(PCSAuth.getSuperuserAuth(), *cmd) end def contains_line_service?(line, service) @@ -1802,7 +1814,7 @@ cmd = ['systemctl', 'enable', "#{service}.service"] else # fails when the service is not installed - cmd = ['chkconfig', service, 'on'] + cmd = ['rc-config', 'add', service, 'default'] end _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) return (retcode == 0) @@ -1817,7 +1829,7 @@ if ISSYSTEMCTL cmd = ['systemctl', 'disable', "#{service}.service"] else - cmd = ['chkconfig', service, 'off'] + cmd = ['rc-config', 'delete', service, 'default'] end _, _, retcode = run_cmd(PCSAuth.getSuperuserAuth(), *cmd) return (retcode == 0) @@ -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) --- a/pcsd/settings.rb +++ b/pcsd/settings.rb @@ -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' --- a/pcsd/settings.rb.debian +++ b/pcsd/settings.rb.debian @@ -3,7 +3,7 @@ PCSD_EXEC_LOCATION = '/usr/share/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' --- a/pcs_test/tier0/lib/test_external.py +++ b/pcs_test/tier0/lib/test_external.py @@ -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"] ) @@ -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"] ) 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