Add mask, unmask methods for service

This patch allows mask and unmask services in IPA

Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Reviewed-By: David Kupka <dkupka@redhat.com>
This commit is contained in:
Martin Basti
2014-09-01 10:49:28 +02:00
committed by Martin Kosek
parent b6b19e0cb8
commit 78018dd67d
2 changed files with 59 additions and 0 deletions

View File

@@ -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()

View File

@@ -296,6 +296,15 @@ class Service(object):
def is_enabled(self):
return self.service.is_enabled()
def mask(self):
return self.service.mask()
def unmask(self):
return self.service.unmask()
def is_masked(self):
return self.service.is_masked()
def backup_state(self, key, value):
self.sstore.backup_state(self.service_name, key, value)