From: Alfredo Deza Date: Tue, 23 Sep 2014 12:54:13 +0000 (-0400) Subject: create a is_systemd helper X-Git-Tag: v1.5.16~8^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=82bd9a2c5303b7c5d54722b100bcfed11d8e3b9c;p=ceph-deploy.git create a is_systemd helper Signed-off-by: Alfredo Deza --- diff --git a/ceph_deploy/util/system.py b/ceph_deploy/util/system.py index 74e33c2..7665dff 100644 --- a/ceph_deploy/util/system.py +++ b/ceph_deploy/util/system.py @@ -1,4 +1,5 @@ from ceph_deploy.exc import ExecutableNotFound +from ceph_deploy.lib import remoto def executable_path(conn, executable): @@ -13,3 +14,45 @@ def executable_path(conn, executable): if not executable_path: raise ExecutableNotFound(executable, conn.hostname) return executable_path + + +def is_systemd(conn): + """ + Attempt to detect if a remote system is a systemd one or not + by looking into ``/proc`` just like the ceph init script does:: + + # detect systemd + # SYSTEMD=0 + grep -qs systemd /proc/1/comm && SYSTEMD=1 + """ + return conn.remote_module.grep( + 'systemd', + '/proc/1/comm' + ) + + +def enable_service(conn, service='ceph'): + """ + Enable a service on a remote host depending on the type of init system. + Obviously, this should be done for RHEL/Fedora/CentOS systems. + + This function does not do any kind of detection. + """ + if is_systemd(conn): + remoto.process.run( + conn, + [ + 'systemctl', + 'enable', + 'ceph', + ] + ) + else: + remoto.process.run( + conn, + [ + 'chkconfig', + 'ceph', + 'on', + ] + )