[Freeipa-devel] [PATCH] 0012 Modify existing SSSD configuration instead of dropping it

Alexander Bokovoy abokovoy at redhat.com
Wed Sep 7 13:15:15 UTC 2011


Hi!

When modifying SSSD configuration, attempt to add new domain rather 
than replacing whole configuration file.

Only replace file in case it is impossible to parse it by current SSSD 
version.

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

-- 
/ Alexander Bokovoy
-------------- next part --------------
>From d09127943967e1760bd2f8a61d10be15776f4255 Mon Sep 17 00:00:00 2001
From: Alexander Bokovoy <abokovoy at redhat.com>
Date: Wed, 7 Sep 2011 14:23:29 +0300
Subject: [PATCH] ipa-client-install should not clobber existing SSSD
 configurations

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

When modifying SSSD configuration, attempt to add new domain rather than replacing whole configuration file.
Only replace file in case it is impossible to parse it by current SSSD version.
---
 ipa-client/ipa-install/ipa-client-install |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/ipa-client/ipa-install/ipa-client-install b/ipa-client/ipa-install/ipa-client-install
index fe520be9e79b12b2222fce45c6f7b1716d67ff46..31f0e87da5266cc7528b802a96322254a04cfa6e 100755
--- a/ipa-client/ipa-install/ipa-client-install
+++ b/ipa-client/ipa-install/ipa-client-install
@@ -609,8 +609,17 @@ $)''', re.VERBOSE)
         print >>sys.stderr, "Failed to set permissions for %s (%s)." % (network_filename, str(e))
 
 def configure_sssd_conf(fstore, cli_realm, cli_domain, cli_server, options):
-    sssdconfig = SSSDConfig.SSSDConfig()
-    sssdconfig.new_config()
+    try:
+        sssdconfig = SSSDConfig.SSSDConfig()
+        sssdconfig.import_config()
+    except SSSDConfig.ParsingError, e:
+        # no existing SSSD configuration, make a new one
+        # We do make new SSSDConfig instance because IPAChangeConf-derived classes have no
+        # means to reset their state and ParseError exception could come due to parsing
+        # error from older version which cannot be upgraded anymore, leaving sssdconfig
+        # instance practically unusable
+        sssdconfig = SSSDConfig.SSSDConfig()
+        sssdconfig.new_config()
 
     domain = sssdconfig.new_domain(cli_domain)
     domain.add_provider('ipa', 'id')
-- 
1.7.6.1



More information about the Freeipa-devel mailing list