Re: [Freeipa-devel] [PATCH 0117] Allow to mask and unmask services

2014-09-02 Thread Jan Cholasta

Hi,
Dne 1.9.2014 v 16:54 Martin Basti napsal(a):

This is required by DNSSEC installer

Patch attached


IMO masking/unmasking should be part of disabling/enabling a service in 
systemd. AFAIK in most other init systems when you disable a service, it 
has the same effect as masking the service in systemd - it will never be 
started until it is enabled/unmasked again.


Honza

--
Jan Cholasta

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


[Freeipa-devel] [PATCH 0117] Allow to mask and unmask services

2014-09-01 Thread Martin Basti

This is required by DNSSEC installer

Patch attached

--
Martin Basti

From 57a1beb4a3f554d65a6f9734e0a3b6b4856c5092 Mon Sep 17 00:00:00 2001
From: Martin Basti 
Date: Mon, 1 Sep 2014 10:49:28 +0200
Subject: [PATCH] Add mask, unmask methods for service

This patch allows mask and unmask services in IPA
---
 ipaplatform/base/services.py | 41 +
 1 file changed, 41 insertions(+)

diff --git a/ipaplatform/base/services.py b/ipaplatform/base/services.py
index ea066b283d776ba3ff555d050a830c6d8ecc60cc..2dc8b778ec811b12b50fe7fc801145a577408f4e 100644
--- a/ipaplatform/base/services.py
+++ b/ipaplatform/base/services.py
@@ -327,6 +327,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 +417,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 +443,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()
 
-- 
1.8.3.1

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel