Hi,

Enable and start the oddjobd service as part of the
ipa-adtrust-install for the new IPA installations and upgraded ones.

Tomas
From 66d39f12a77d23e8d8ac2c11650258ed9f3eb200 Mon Sep 17 00:00:00 2001
From: Tomas Babej <tba...@redhat.com>
Date: Wed, 8 Jul 2015 15:44:13 +0200
Subject: [PATCH] adtrustinstance: Enable and start oddjobd

Enable and start the oddjobd service as part of the
ipa-adtrust-install for the new IPA installations.
---
 ipaserver/install/adtrustinstance.py | 19 +++++++++++++++++++
 ipaserver/install/installutils.py    | 11 +++++++++++
 2 files changed, 30 insertions(+)

diff --git a/ipaserver/install/adtrustinstance.py b/ipaserver/install/adtrustinstance.py
index 8343f81826b661e0ab5a34073b0df9b477589ffa..ff0e8cc3e6dd7a78bd5a6ab06918757ca343970c 100644
--- a/ipaserver/install/adtrustinstance.py
+++ b/ipaserver/install/adtrustinstance.py
@@ -706,6 +706,9 @@ class ADTRUSTInstance(service.Service):
         except Exception, e:
             root_logger.critical("Enabling nsswitch support in slapi-nis failed with error '%s'" % e)
 
+    def  __enable_and_start_oddjobd(self):
+        installutils.enable_and_start_oddjobd(self.sstore)
+
     def __start(self):
         try:
             self.start()
@@ -852,6 +855,7 @@ class ADTRUSTInstance(service.Service):
         self.step("adding Default Trust View", self.__add_default_trust_view)
         self.step("setting SELinux booleans", \
                   self.__configure_selinux_for_smbd)
+        self.step("enabling oddjobd", self.__enable_and_start_oddjobd)
         self.step("starting CIFS services", self.__start)
 
         if self.add_sids:
@@ -880,6 +884,21 @@ class ADTRUSTInstance(service.Service):
         except Exception:
             pass
 
+        # Restore oddjobd to its original state
+        oddjobd = services.service('oddjobd')
+
+        if not self.sstore.restore_state('oddjobd', 'running'):
+            try:
+                oddjobd.stop()
+            except Exception:
+                pass
+
+        if not self.sstore.restore_state('oddjobd', 'enabled'):
+            try:
+                oddjobd.disable()
+            except Exception:
+                pass
+
         # Since we do not guarantee restoring back to working samba state,
         # we should not restore smb.conf
 
diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py
index 08620c472b9478511d7d08a0d174e7da3f732207..02e8526317dbab909ed48a1823000922ce6e6b7a 100644
--- a/ipaserver/install/installutils.py
+++ b/ipaserver/install/installutils.py
@@ -1081,3 +1081,14 @@ def check_version():
 
 def realm_to_serverid(realm_name):
     return "-".join(realm_name.split("."))
+
+def enable_and_start_oddjobd(sstore):
+    oddjobd = services.service('oddjobd')
+    sstore.backup_state('oddjobd', 'running', oddjobd.is_running())
+    sstore.backup_state('oddjobd', 'enabled', oddjobd.is_enabled())
+
+    try:
+        oddjobd.enable()
+        oddjobd.start()
+    except Exception as e:
+        root_logger.critical("Unable to start oddjobd: {0}".format(str(e)))
-- 
2.1.0

From c6135d634cbccbdbb30ab3906c32cd3720bca95e Mon Sep 17 00:00:00 2001
From: Tomas Babej <tba...@redhat.com>
Date: Wed, 8 Jul 2015 15:45:18 +0200
Subject: [PATCH] upgrade: Enable and start oddjobd if adtrust is available

If ipa-adtrust-install has already been run on the system,
enable and start the oddjobd service.
---
 install/updates/90-post_upgrade_plugins.update |  1 +
 ipaserver/install/plugins/adtrust.py           | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/install/updates/90-post_upgrade_plugins.update b/install/updates/90-post_upgrade_plugins.update
index 8e8fe09414eac57d2e8c15dcfc4aed64b6e35cd5..3df3a4574705dbd8df8f25149c13877898afb66b 100644
--- a/install/updates/90-post_upgrade_plugins.update
+++ b/install/updates/90-post_upgrade_plugins.update
@@ -18,3 +18,4 @@ plugin: update_managed_post
 plugin: update_managed_permissions
 plugin: update_idrange_baserid
 plugin: update_passync_privilege_update
+plugin: update_oddjobd_for_adtrust
diff --git a/ipaserver/install/plugins/adtrust.py b/ipaserver/install/plugins/adtrust.py
index d96bfe83e3b9d1d3e64b9fde385fbf520ed20a3a..45bcc5f2fe532446342300ff0c5e1e7149cf023b 100644
--- a/ipaserver/install/plugins/adtrust.py
+++ b/ipaserver/install/plugins/adtrust.py
@@ -19,8 +19,11 @@
 
 from ipalib import api, errors
 from ipalib import Updater
+from ipaplatform.paths import paths
 from ipapython.dn import DN
 from ipapython.ipa_log_manager import *
+from ipapython import sysrestore
+from ipaserver.install import installutils
 
 DEFAULT_ID_RANGE_SIZE = 200000
 
@@ -161,5 +164,26 @@ class update_default_trust_view(Updater):
 
         return False, [update]
 
+
+class update_oddjobd_for_adtrust(Updater):
+    """
+    Enables and starts oddjobd daemon if ipa-adtrust-install has been run
+    on this system.
+    """
+
+    def execute(self, **options):
+        adtrust_is_enabled = self.api.Command['adtrust_is_enabled']()['result']
+
+        if adtrust_is_enabled:
+            self.log.debug('Try to enable and start oddjobd')
+            sstore = sysrestore.StateFile(paths.SYSRESTORE)
+            installutils.enable_and_start_oddjobd(sstore)
+        else:
+            self.log.debug('ADTrust not configured on this server, do not '
+                           'start and enable oddjobd')
+
+        return False, []
+
 api.register(update_default_range)
 api.register(update_default_trust_view)
+api.register(update_oddjobd_for_adtrust)
-- 
2.1.0

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to