Blob Blame History Raw
From d644d5533a7ccf61cc557f8fe8a5ee1d93bc19fd Mon Sep 17 00:00:00 2001
From: Jan Cholasta <jcholast@redhat.com>
Date: Wed, 16 Sep 2015 09:05:20 +0200
Subject: [PATCH] install: always export KRA agent PEM file

Export the file even when KRA is not installed locally so that vault commands
work on all IPA replicas.

https://fedorahosted.org/freeipa/ticket/5302

Reviewed-By: Martin Basti <mbasti@redhat.com>
---
 install/restart_scripts/renew_ra_cert | 3 +--
 ipaserver/install/cainstance.py       | 8 ++++++--
 ipaserver/install/krainstance.py      | 2 --
 ipaserver/install/server/upgrade.py   | 5 ++---
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/install/restart_scripts/renew_ra_cert b/install/restart_scripts/renew_ra_cert
index 8a6bf3f7c1081db9710cf29e0f8e5f705d920b72..3a36f739ae53391e502356f7b6b4fd96a536c3a6 100644
--- a/install/restart_scripts/renew_ra_cert
+++ b/install/restart_scripts/renew_ra_cert
@@ -61,8 +61,7 @@ def _main():
             # Load it into dogtag
             cainstance.update_people_entry(dercert)
 
-        kra = krainstance.KRAInstance(api.env.realm)
-        if kra.is_installed():
+        if api.Command.kra_is_enabled()['result']:
             krainstance.export_kra_agent_pem()
     finally:
         shutil.rmtree(tmpdir)
diff --git a/ipaserver/install/cainstance.py b/ipaserver/install/cainstance.py
index a4504a35a42b8c8ea2a96738c82c546ebebf569f..dfe023c08c9b8d1b28f1659b7c5a6395f3afe879 100644
--- a/ipaserver/install/cainstance.py
+++ b/ipaserver/install/cainstance.py
@@ -62,8 +62,8 @@ from ipaserver.install import certs
 from ipaserver.install import dsinstance
 from ipaserver.install import installutils
 from ipaserver.install import service
-from ipaserver.install.dogtaginstance import DogtagInstance
-from ipaserver.install.dogtaginstance import PKI_USER, DEFAULT_DSPORT
+from ipaserver.install.dogtaginstance import (
+    DEFAULT_DSPORT, PKI_USER, export_kra_agent_pem, DogtagInstance)
 from ipaserver.plugins import ldap2
 
 
@@ -885,6 +885,8 @@ class CAInstance(DogtagInstance):
         finally:
             os.remove(agent_name)
 
+        export_kra_agent_pem()
+
     def import_ra_cert(self, rafile):
         """
         Cloned RAs will use the same RA agent cert as the master so we
@@ -903,6 +905,8 @@ class CAInstance(DogtagInstance):
 
         self.configure_agent_renewal()
 
+        export_kra_agent_pem()
+
     def __create_ca_agent(self):
         """
         Create CA agent, assign a certificate, and add the user to
diff --git a/ipaserver/install/krainstance.py b/ipaserver/install/krainstance.py
index 0000192745b6d7f9f402267e435f7223f1bf8849..69fe636732e6d3a8c1e0c460b641f061e519df92 100644
--- a/ipaserver/install/krainstance.py
+++ b/ipaserver/install/krainstance.py
@@ -262,8 +262,6 @@ class KRAInstance(DogtagInstance):
 
         shutil.move(paths.KRA_BACKUP_KEYS_P12, paths.KRACERT_P12)
 
-        export_kra_agent_pem()
-
         self.log.debug("completed creating KRA instance")
 
     def __create_kra_agent(self):
diff --git a/ipaserver/install/server/upgrade.py b/ipaserver/install/server/upgrade.py
index ab08c62352c0e5cf145f299e7727886b2f295037..51a2dd3d0e3693c12f11579a84175c7719651da9 100644
--- a/ipaserver/install/server/upgrade.py
+++ b/ipaserver/install/server/upgrade.py
@@ -1252,9 +1252,8 @@ def export_kra_agent_pem():
         root_logger.info("KRA agent PEM file already exported")
         return
 
-    kra = krainstance.KRAInstance(api.env.realm)
-    if not kra.is_installed():
-        root_logger.info("KRA is not installed")
+    if not api.Command.kra_is_enabled()['result']:
+        root_logger.info("KRA is not enabled")
         return
 
     krainstance.export_kra_agent_pem()
-- 
2.4.3