Improve PKI subsystem detection
The dogtaginstance.is_installed() method currently relies on
the presence of the directory /var/lib/pki/pki-tomcat/{ca|kra},
even if it is empty.
An unwanted consequence is ipa-server-upgrade wrongly assuming the KRA
is installed and crashing when trying to upgrade a not-installed
component.
The fix relies on the command "pki-server subsystem-show {ca|kra}" to
detect if a subsystem is installed. The command does not require PKI
to be running (hence can be called anytime) and is delivered by
the pki-server package which is already required by ipa server pkg.
Fixes: https://pagure.io/freeipa/issue/8596
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
1 parent
184997e85d
commit
cf30cc3f63
1 file changed
+8
-2
@@ -177,8 +177,14 @@ class DogtagInstance(service.Service):
|
||||
|
||||
Returns True/False
|
||||
"""
|
||||
return os.path.exists(os.path.join(
|
||||
paths.VAR_LIB_PKI_TOMCAT_DIR, self.subsystem.lower()))
|
||||
try:
|
||||
result = ipautil.run(
|
||||
['pki-server', 'subsystem-show', self.subsystem.lower()],
|
||||
capture_output=True)
|
||||
# parse the command output
|
||||
return 'Enabled: True' in result.output
|
||||
except ipautil.CalledProcessError:
|
||||
return False
|
||||
|
||||
def spawn_instance(self, cfg_file, nolog_list=()):
|
||||
"""
|
||||
|
||||
Reference in new issue
Block a user