From 78018dd67d28fd4c58dbfd68014907cb46f3eff1 Mon Sep 17 00:00:00 2001 From: Martin Basti Date: Mon, 1 Sep 2014 10:49:28 +0200 Subject: Add mask, unmask methods for service This patch allows mask and unmask services in IPA Reviewed-By: Jan Cholasta Reviewed-By: David Kupka --- ipaplatform/base/services.py | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'ipaplatform') diff --git a/ipaplatform/base/services.py b/ipaplatform/base/services.py index ea066b283..4861a5a4b 100644 --- a/ipaplatform/base/services.py +++ b/ipaplatform/base/services.py @@ -134,12 +134,21 @@ class PlatformService(object): def is_enabled(self, instance_name=""): return False + def is_masked(self, instance_name=""): + return False + def enable(self, instance_name=""): return def disable(self, instance_name=""): return + def mask(self, instance_name=""): + return + + def unmask(self, instance_name=""): + return + def install(self, instance_name=""): return @@ -327,6 +336,21 @@ class SystemdService(PlatformService): enabled = False return enabled + def is_masked(self, instance_name=""): + masked = False + try: + (sout, serr, rcode) = ipautil.run( + [paths.SYSTEMCTL, + "is-enabled", + self.service_instance(instance_name)]) + + if rcode == 1 and sout == 'masked': + masked = True + + except ipautil.CalledProcessError: + pass + return masked + def enable(self, instance_name=""): if self.lib_path_exists is None: self.lib_path_exists = os.path.exists(self.lib_path) @@ -402,6 +426,18 @@ class SystemdService(PlatformService): else: self.__disable(instance_name) + def mask(self, instance_name=""): + if instance_name != "": + srv_tgt = os.path.join(paths.ETC_SYSTEMD_SYSTEM_DIR, instance_name) + # remove instance file or link before masking + if os.path.islink(srv_tgt): + os.unlink(srv_tgt) + + self.__mask(instance_name) + + def unmask(self, instance_name=""): + self.__unmask(instance_name) + def __enable(self, instance_name=""): try: ipautil.run([paths.SYSTEMCTL, "enable", @@ -416,6 +452,20 @@ class SystemdService(PlatformService): except ipautil.CalledProcessError: pass + def __mask(self, instance_name=""): + try: + ipautil.run([paths.SYSTEMCTL, "mask", + self.service_instance(instance_name)]) + except ipautil.CalledProcessError: + pass + + def __unmask(self, instance_name=""): + try: + ipautil.run([paths.SYSTEMCTL, "unmask", + self.service_instance(instance_name)]) + except ipautil.CalledProcessError: + pass + def install(self): self.enable() -- cgit