diff options
author | Stanislav Laznicka <slaznick@redhat.com> | 2016-05-26 15:24:15 +0200 |
---|---|---|
committer | Martin Basti <mbasti@redhat.com> | 2016-06-15 18:11:28 +0200 |
commit | fb4e19713d509a0a14acb7eee37f5fee7a9fb375 (patch) | |
tree | 90b76b4cca29ebc257de9aa6fcb7d14f3317d40f /ipaplatform | |
parent | 01795fca831ca5ce59a56755d261cb3100d6c3d4 (diff) | |
download | freeipa-fb4e19713d509a0a14acb7eee37f5fee7a9fb375.tar.gz freeipa-fb4e19713d509a0a14acb7eee37f5fee7a9fb375.tar.xz freeipa-fb4e19713d509a0a14acb7eee37f5fee7a9fb375.zip |
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 <mbasti@redhat.com>
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipaplatform')
-rw-r--r-- | ipaplatform/base/services.py | 4 | ||||
-rw-r--r-- | ipaplatform/redhat/services.py | 17 |
2 files changed, 19 insertions, 2 deletions
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 |