From a81a4a502b020e0b0d91e6018914ea18b4e3e47e Mon Sep 17 00:00:00 2001 From: Felipe Barreto Date: Wed, 20 Sep 2017 09:51:44 -0300 Subject: [PATCH] Checks if Dir Server is installed and running before IPA installation In cases when IPA is installed in two steps (external CA), it's necessary to check (in the second step) if Dir. Server is running before continue with the installation. If it's not, start Directory Server. https://pagure.io/freeipa/issue/6611 Reviewed-By: Fraser Tweedale Reviewed-By: Christian Heimes --- ipaplatform/redhat/services.py | 4 ++++ ipaserver/install/server/install.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/ipaplatform/redhat/services.py b/ipaplatform/redhat/services.py index 8fae1f3cc5b12dba0fa0192f21bc6d2d369941eb..57aa15ad9a4d83366ff02e5a5ca6e4574561e1fa 100644 --- a/ipaplatform/redhat/services.py +++ b/ipaplatform/redhat/services.py @@ -119,6 +119,10 @@ class RedHatDirectoryService(RedHatService): return True + def is_installed(self, instance_name): + file_path = "{}/{}-{}".format(paths.ETC_DIRSRV, "slapd", instance_name) + return os.path.exists(file_path) + def restart(self, instance_name="", capture_output=True, wait=True, ldapi=False): # We need to explicitly enable instances to install proper symlinks as diff --git a/ipaserver/install/server/install.py b/ipaserver/install/server/install.py index 97cbc6d8c84ee8fc21b6f8983c7897dc5d30c42d..422474fa915b4876530f304ef9424f6b31cf26cc 100644 --- a/ipaserver/install/server/install.py +++ b/ipaserver/install/server/install.py @@ -616,6 +616,14 @@ def install_check(installer): # check addresses here, dns module is doing own check no_matching_interface_for_ip_address_warning(ip_addresses) + instance_name = "-".join(realm_name.split(".")) + dirsrv = services.knownservices.dirsrv + if (options.external_cert_files + and dirsrv.is_installed(instance_name) + and not dirsrv.is_running(instance_name)): + root_logger.debug('Starting Directory Server') + services.knownservices.dirsrv.start(instance_name) + if options.setup_adtrust: adtrust.install_check(False, options, api) -- 2.13.6