- Remove ipa-pki-proxy.conf when IPA is uninstalled
- Move file removal to httpinstance.py and use remove_file()
- Add a version stanza
- Create the file if it doesn't exist on upgraded installs

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

rob
>From 7852db92caaace209b8ab226c4945c250d971ada Mon Sep 17 00:00:00 2001
From: Rob Crittenden <rcrit...@redhat.com>
Date: Fri, 9 Sep 2011 17:07:09 -0400
Subject: [PATCH] Improved handling for ipa-pki-proxy.conf

- Remove ipa-pki-proxy.conf when IPA is uninstalled
- Move file removal to httpinstance.py and use remove_file()
- Add a version stanza
- Create the file if it doesn't exist on upgraded installs

https://fedorahosted.org/freeipa/ticket/1771
---
 install/conf/ipa-pki-proxy.conf   |    2 ++
 install/tools/ipa-server-install  |    6 +-----
 install/tools/ipa-upgradeconfig   |   21 +++++++++++++++++----
 ipaserver/install/httpinstance.py |    8 ++++++++
 4 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/install/conf/ipa-pki-proxy.conf b/install/conf/ipa-pki-proxy.conf
index 275f32645be6b41063ec5c20f0e0923f61efbaaa..91a99aaf9cd9ce3669fbe12450bfae1b220fa67b 100644
--- a/install/conf/ipa-pki-proxy.conf
+++ b/install/conf/ipa-pki-proxy.conf
@@ -1,3 +1,5 @@
+# VERSION 1 - DO NOT REMOVE THIS LINE
+
 ProxyRequests Off
 
 # matches for ee port
diff --git a/install/tools/ipa-server-install b/install/tools/ipa-server-install
index 0572d4f2640fbb6eecb64060ebb8de1807d81aef..03cb2e06c283276b64b7fad0b448265e8c432af2 100755
--- a/install/tools/ipa-server-install
+++ b/install/tools/ipa-server-install
@@ -490,12 +490,8 @@ def uninstall():
         os.remove(ANSWER_CACHE)
     except Exception:
         pass
+
     # ipa-client-install removes /etc/ipa/default.conf
-    try:
-        os.remove("/etc/httpd/conf.d/ipa-rewrite.conf")
-        os.remove("/etc/httpd/conf.d/ipa.conf")
-    except:
-        pass
 
     sstore._load()
     group_exists = sstore.restore_state("install", "group_exists")
diff --git a/install/tools/ipa-upgradeconfig b/install/tools/ipa-upgradeconfig
index 4ac3092888b0daa14159d6e789e8e60f425ebb40..1b08382e40788b9be80d538607bd605320279d8e 100644
--- a/install/tools/ipa-upgradeconfig
+++ b/install/tools/ipa-upgradeconfig
@@ -52,7 +52,13 @@ def backup_file(filename, ext):
     while os.path.exists(backupfile):
         backupfile = backupfile + "." + str(ext)
 
-    shutil.copy2(filename, backupfile)
+    try:
+        shutil.copy2(filename, backupfile)
+    except IOError, e:
+        if e.errno == 2: # No such file or directory
+            pass
+        else:
+            raise e
 
 def update_conf(sub_dict, filename, template_filename):
     template = ipautil.template_file(template_filename, sub_dict)
@@ -93,18 +99,24 @@ def find_version(filename):
     else:
         return -1
 
-def upgrade(sub_dict, filename, template):
+def upgrade(sub_dict, filename, template, add=False):
+    """
+    Get the version from the current and template files and update the
+    installed configuration file if there is a new template.
+
+    If add is True then create a new configuration file.
+    """
     old = int(find_version(filename))
     new = int(find_version(template))
 
-    if old < 0:
+    if old < 0 and not add:
         print "%s not found." % filename
         sys.exit(1)
 
     if new < 0:
         print "%s not found." % template
 
-    if old < new:
+    if old < new or add:
         backup_file(filename, new)
         update_conf(sub_dict, filename, template)
         print "Upgraded %s to version %d" % (filename, new)
@@ -149,6 +161,7 @@ def main():
 
     upgrade(sub_dict, "/etc/httpd/conf.d/ipa.conf", ipautil.SHARE_DIR + "ipa.conf")
     upgrade(sub_dict, "/etc/httpd/conf.d/ipa-rewrite.conf", ipautil.SHARE_DIR + "ipa-rewrite.conf")
+    upgrade(sub_dict, "/etc/httpd/conf.d/ipa-pki-proxy.conf", ipautil.SHARE_DIR + "ipa-pki-proxy.conf", add=True)
 
 try:
     if __name__ == "__main__":
diff --git a/ipaserver/install/httpinstance.py b/ipaserver/install/httpinstance.py
index 4294bee1b75c64fc3af9bee2cfaf19c45629e6b6..266d72783e380b3840600d890fbf894cd1f76133 100644
--- a/ipaserver/install/httpinstance.py
+++ b/ipaserver/install/httpinstance.py
@@ -281,6 +281,14 @@ class HTTPInstance(service.Service):
                 logging.debug(error)
                 pass
 
+        # Remove the configuration files we create
+        try:
+            installutils.remove_file("/etc/httpd/conf.d/ipa-rewrite.conf")
+            installutils.remove_file("/etc/httpd/conf.d/ipa.conf")
+            installutils.remove_file("/etc/httpd/conf.d/ipa-pki-proxy.conf")
+        except:
+            pass
+
         sebool_state = self.restore_state("httpd_can_network_connect")
         if not sebool_state is None:
             try:
-- 
1.7.6

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to