[Freeipa-devel] [PATCH 2 of 8] Add service.is_enabled() helper
Mark McLoughlin
markmc at redhat.com
Fri Jan 11 12:00:39 UTC 2008
# HG changeset patch
# User Mark McLoughlin <markmc at redhat.com>
# Date 1200047785 0
# Node ID 454a6aa17f5a039c1d96e30df02c49599b15f972
# Parent b5037ba7a95d0ec53356625778d28da508545ab0
Add service.is_enabled() helper
Add a simple helper to check whether a service is enabled.
Signed-off-by: Mark McLoughlin <markmc at redhat.com>
diff -r b5037ba7a95d -r 454a6aa17f5a ipa-python/ipautil.py
--- a/ipa-python/ipautil.py Fri Jan 11 10:36:25 2008 +0000
+++ b/ipa-python/ipautil.py Fri Jan 11 10:36:25 2008 +0000
@@ -82,6 +82,8 @@ def run(args, stdin=None):
if p.returncode != 0:
raise CalledProcessError(p.returncode, ' '.join(args))
+
+ return (stdout, stderr)
def file_exists(filename):
try:
diff -r b5037ba7a95d -r 454a6aa17f5a ipa-server/ipaserver/service.py
--- a/ipa-server/ipaserver/service.py Fri Jan 11 10:36:25 2008 +0000
+++ b/ipa-server/ipaserver/service.py Fri Jan 11 10:36:25 2008 +0000
@@ -34,7 +34,7 @@ def is_running(service_name):
ret = True
try:
ipautil.run(["/sbin/service", service_name, "status"])
- except CalledProcessError:
+ except ipautil.CalledProcessError:
ret = False
return ret
@@ -43,6 +43,26 @@ def chkconfig_on(service_name):
def chkconfig_off(service_name):
ipautil.run(["/sbin/chkconfig", service_name, "off"])
+
+def is_enabled(service_name):
+ (stdout, stderr) = ipautil.run(["/sbin/chkconfig", "--list", service_name])
+
+ runlevels = {}
+ for runlevel in range(0, 7):
+ runlevels[runlevel] = False
+
+ for line in stdout.split("\n"):
+ parts = line.split()
+ if parts[0] == service_name:
+ for s in parts[1:]:
+ (runlevel, status) = s.split(":")[0:2]
+ try:
+ runlevels[int(runlevel)] = status == "on"
+ except ValueError:
+ pass
+ break
+
+ return (runlevels[3] and runlevels[4] and runlevels[5])
def print_msg(message, output_fd=sys.stdout):
logging.debug(message)
@@ -77,6 +97,9 @@ class Service:
def chkconfig_off(self):
chkconfig_off(self.service_name)
+ def is_enabled(self):
+ return is_enabled(self.service_name)
+
def print_msg(self, message):
print_msg(message, self.output_fd)
More information about the Freeipa-devel
mailing list