[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