[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