summaryrefslogtreecommitdiff
path: root/whatmaps
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-05-02 17:28:38 +0200
committerGuido Günther <agx@sigxcpu.org>2014-06-28 21:34:51 +0200
commite1b9e7fe3b1fa6b6e829f7eb5787b67d9894cfd1 (patch)
tree80c713e5c54872f286cb38c4f726a2377b498c80 /whatmaps
parentac817c1fc37bd7e831b33f32028005b612eb76eb (diff)
pkg_services: Check if a service is actually installed
So far we returned the full list from pkg_services. This is o.k. for many to one mappings like apache but not for one to many like openjdk. To avoid to print out services that aren't installed check that beforehand.
Diffstat (limited to 'whatmaps')
-rw-r--r--whatmaps/debiandistro.py10
-rw-r--r--whatmaps/distro.py8
2 files changed, 15 insertions, 3 deletions
diff --git a/whatmaps/debiandistro.py b/whatmaps/debiandistro.py
index 4a3d0db..3a47d50 100644
--- a/whatmaps/debiandistro.py
+++ b/whatmaps/debiandistro.py
@@ -26,7 +26,7 @@ except ImportError:
lsb_release = None
import logging
-import string
+import os
import subprocess
import sys
@@ -35,7 +35,7 @@ from . debianpkg import DebianPkg
from . pkg import PkgError
class DebianDistro(Distro):
- "Debian (dpkg) based distribution"""
+ "Debian (dpkg) based distribution"
id = 'Debian'
_pkg_services = { 'apache2-mpm-worker': [ 'apache2' ],
@@ -73,9 +73,15 @@ class DebianDistro(Distro):
@classmethod
def restart_service_cmd(klass, name):
+ """The command that should be used to start a service"""
return ['invoke-rc.d', name, 'restart']
@classmethod
+ def is_service_installed(klass, name):
+ """Whether the system has this service"""
+ return os.path.exists('/etc/init.d/%s' % name)
+
+ @classmethod
def has_apt(klass):
return True
diff --git a/whatmaps/distro.py b/whatmaps/distro.py
index e4f417f..5625955 100644
--- a/whatmaps/distro.py
+++ b/whatmaps/distro.py
@@ -49,12 +49,18 @@ class Distro(object):
subprocess.call(klass.restart_service_cmd(service))
@classmethod
+ def is_service_installed(klass, service):
+ """Check wether a service exists on the system"""
+ return True
+
+ @classmethod
def pkg_services(klass, pkg):
"""
List of services that package pkg needs restarted that aren't part
of pkg itself
"""
- return klass._pkg_services.get(pkg.name, [])
+ return [ s for s in klass._pkg_services.get(pkg.name, [])
+ if klass.is_service_installed(s) ]
@classmethod
def pkg_service_blacklist(klass, pkg):