From fb4e19713d509a0a14acb7eee37f5fee7a9fb375 Mon Sep 17 00:00:00 2001 From: Stanislav Laznicka Date: Thu, 26 May 2016 15:24:15 +0200 Subject: Fixes CA always being presented as running Even after manually stopping the pki-tomcatd service instance the service's is_running() method would still return True. https://fedorahosted.org/freeipa/ticket/5898 Reviewed-By: Martin Basti Reviewed-By: Jan Cholasta --- ipaplatform/base/services.py | 4 ++-- ipaplatform/redhat/services.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'ipaplatform') diff --git a/ipaplatform/base/services.py b/ipaplatform/base/services.py index 641a65418..a36b2f4ff 100644 --- a/ipaplatform/base/services.py +++ b/ipaplatform/base/services.py @@ -148,7 +148,7 @@ class PlatformService(object): def restart(self, instance_name="", capture_output=True, wait=True): return - def is_running(self, instance_name=""): + def is_running(self, instance_name="", wait=True): return False def is_installed(self): @@ -303,7 +303,7 @@ class SystemdService(PlatformService): if wait and self.is_running(instance_name): self.wait_for_open_ports(self.service_instance(instance_name)) - def is_running(self, instance_name=""): + def is_running(self, instance_name="", wait=True): instance = self.service_instance(instance_name, 'is-active') while True: diff --git a/ipaplatform/redhat/services.py b/ipaplatform/redhat/services.py index 92dae452a..849737059 100644 --- a/ipaplatform/redhat/services.py +++ b/ipaplatform/redhat/services.py @@ -222,6 +222,23 @@ class RedHatCAService(RedHatService): if wait: self.wait_until_running() + def is_running(self, instance_name="", wait=True): + if instance_name: + return super(RedHatCAService, self).is_running(instance_name) + try: + status = dogtag.ca_status() + if status == 'running': + return True + elif status == 'starting' and wait: + # Exception is raised if status is 'starting' even after wait + self.wait_until_running() + return True + except Exception as e: + root_logger.debug( + 'Failed to check CA status: {err}'.format(err=e) + ) + return False + # Function that constructs proper Red Hat OS family-specific server classes for # services of specified name -- cgit