aboutsummaryrefslogtreecommitdiff
path: root/whatmaps/distro.py
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2016-09-23 12:55:47 +0200
committerGuido Günther <agx@sigxcpu.org>2016-09-23 13:14:14 +0200
commit39f306f1783b47cae11c80ba31c86be677eff226 (patch)
tree53ac2c8f16d26144b98703d4e10032b45cca9d41 /whatmaps/distro.py
parent04ec8384e2b7332c5f7d047ed28b91c9d15c7327 (diff)
Allow to filter service by regular expressions
Diffstat (limited to 'whatmaps/distro.py')
-rw-r--r--whatmaps/distro.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/whatmaps/distro.py b/whatmaps/distro.py
index ebeab32..29d2dc2 100644
--- a/whatmaps/distro.py
+++ b/whatmaps/distro.py
@@ -17,6 +17,7 @@
import logging
import os
+import re
import subprocess
@@ -33,6 +34,8 @@ class Distro(object):
@cvar id: distro id as returned by lsb-release
@cvar service_blacklist: services that should never be restarted
+ @cvar service_blacklist_re: regex list of services that should
+ never be restartet
@cvar _pkg_services: A C{dict} that maps packages to services. In
case we find binaries that match a key in this hash restart
the services listed in values.
@@ -41,6 +44,8 @@ class Distro(object):
"""
id = None
service_blacklist = set()
+ service_blacklist_re = set()
+
_pkg_services = {}
_pkg_blacklist = {}
_pkg_service_blacklist = {}
@@ -87,6 +92,17 @@ class Distro(object):
"""
return klass._pkg_service_blacklist.get(pkg.name, [])
+ def filter_services(self, services):
+ """
+ Filter out servies that match service_blacklist_re
+ """
+ ret = []
+ matchers = [re.compile(b) for b in self.service_blacklist_re]
+ for s in services:
+ if not any([m.match(s) for m in matchers]):
+ ret.append(s)
+ return set(ret)
+
@classmethod
def has_apt(klass):
"""Does the distribution use apt"""