diff options
author | Michal Židek <mzidek@redhat.com> | 2015-07-07 15:15:32 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-09-03 09:32:15 +0200 |
commit | 175613be0cfb0890174d12d941e634d833b63dd9 (patch) | |
tree | f60beceb3b170ceca78cbb8cf7d668d3ce9aec0f | |
parent | 3954cd07dae78bf79136f0854472757d1ed26897 (diff) | |
download | sssd-175613be0cfb0890174d12d941e634d833b63dd9.tar.gz sssd-175613be0cfb0890174d12d941e634d833b63dd9.tar.xz sssd-175613be0cfb0890174d12d941e634d833b63dd9.zip |
CONFDB: Assume config file version 2 if missing
Default to config file version 2 if the version
is not specified explicitly.
Ticket:
https://fedorahosted.org/sssd/ticket/2688
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
-rw-r--r-- | src/confdb/confdb.h | 1 | ||||
-rw-r--r-- | src/confdb/confdb_setup.c | 48 | ||||
-rw-r--r-- | src/config/SSSDConfig/__init__.py.in | 5 | ||||
-rw-r--r-- | src/config/SSSDConfig/sssd_upgrade_config.py | 3 | ||||
-rwxr-xr-x | src/config/SSSDConfigTest.py | 11 | ||||
-rw-r--r-- | src/tests/intg/ldap_test.py | 2 | ||||
-rw-r--r-- | src/tests/intg/test_memory_cache.py | 3 |
7 files changed, 29 insertions, 44 deletions
diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 9aa264899..427c309a2 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -38,6 +38,7 @@ * @{ */ +#define CONFDB_DEFAULT_CFG_FILE_VER 2 #define CONFDB_FILE "config.ldb" #define CONFDB_DEFAULT_CONFIG_FILE SSSD_CONF_DIR"/sssd.conf" #define SSSD_MIN_ID 1 diff --git a/src/confdb/confdb_setup.c b/src/confdb/confdb_setup.c index 93a1a1b53..694a7f016 100644 --- a/src/confdb/confdb_setup.c +++ b/src/confdb/confdb_setup.c @@ -224,30 +224,30 @@ int confdb_init_db(const char *config_file, struct confdb_ctx *cdb) ret = sss_ini_check_config_obj(init_data); if (ret != EOK) { - /* No known version. Assumed to be version 1 */ - DEBUG(SSSDBG_FATAL_FAILURE, - "Config file is an old version. " - "Please run configuration upgrade script.\n"); - ret = EINVAL; - goto done; - } - - version = sss_ini_get_int_config_value(init_data, 1, -1, &ret); - if (ret != EOK) { - DEBUG(SSSDBG_FATAL_FAILURE, - "Config file version could not be determined\n"); - goto done; - } else if (version < CONFDB_VERSION_INT) { - DEBUG(SSSDBG_FATAL_FAILURE, - "Config file is an old version. " - "Please run configuration upgrade script.\n"); - ret = EINVAL; - goto done; - } else if (version > CONFDB_VERSION_INT) { - DEBUG(SSSDBG_FATAL_FAILURE, - "Config file version is newer than confdb\n"); - ret = EINVAL; - goto done; + /* No known version. Use default. */ + DEBUG(SSSDBG_CONF_SETTINGS, + "Value of config_file_version option not found. " + "Assumed to be version %d.\n", CONFDB_DEFAULT_CFG_FILE_VER); + } else { + version = sss_ini_get_int_config_value(init_data, + CONFDB_DEFAULT_CFG_FILE_VER, + -1, &ret); + if (ret != EOK) { + DEBUG(SSSDBG_FATAL_FAILURE, + "Config file version could not be determined\n"); + goto done; + } else if (version < CONFDB_VERSION_INT) { + DEBUG(SSSDBG_FATAL_FAILURE, + "Config file is an old version. " + "Please run configuration upgrade script.\n"); + ret = EINVAL; + goto done; + } else if (version > CONFDB_VERSION_INT) { + DEBUG(SSSDBG_FATAL_FAILURE, + "Config file version is newer than confdb\n"); + ret = EINVAL; + goto done; + } } /* Set up a transaction to replace the configuration */ diff --git a/src/config/SSSDConfig/__init__.py.in b/src/config/SSSDConfig/__init__.py.in index f10b58c5c..cb9c368b9 100644 --- a/src/config/SSSDConfig/__init__.py.in +++ b/src/config/SSSDConfig/__init__.py.in @@ -738,11 +738,6 @@ class SSSDService(SSSDConfigObject): # Set up default options for this service self.options.update(self.schema.get_defaults(self.name)) - # For the [sssd] service, force the config file version - if servicename == 'sssd': - self.options['config_file_version'] = 2 - self.hidden_options.append('config_file_version') - def list_options_with_mandatory(self): """ List options for the service, including the mandatory flag. diff --git a/src/config/SSSDConfig/sssd_upgrade_config.py b/src/config/SSSDConfig/sssd_upgrade_config.py index 282d6c46f..767d06ddc 100644 --- a/src/config/SSSDConfig/sssd_upgrade_config.py +++ b/src/config/SSSDConfig/sssd_upgrade_config.py @@ -47,7 +47,8 @@ class SSSDConfigFile(SSSDChangeConf): def get_version(self): ver = self.get_option_index('sssd', 'config_file_version')[1] if not ver: - return 1 + # config_file_version not found -> default to version 2 + return 2 try: return int(ver['value']) except ValueError: diff --git a/src/config/SSSDConfigTest.py b/src/config/SSSDConfigTest.py index 4aefe6702..5047bd723 100755 --- a/src/config/SSSDConfigTest.py +++ b/src/config/SSSDConfigTest.py @@ -403,9 +403,6 @@ class SSSDConfigTestSSSDService(unittest.TestCase): def testGetOption(self): service = SSSDConfig.SSSDService('sssd', self.schema) - # Positive test - Single-valued - self.assertEqual(service.get_option('config_file_version'), 2) - # Positive test - List of values self.assertEqual(service.get_option('services'), ['nss', 'pam']) @@ -417,9 +414,7 @@ class SSSDConfigTestSSSDService(unittest.TestCase): #Positive test options = service.get_all_options() - control_list = [ - 'config_file_version', - 'services'] + control_list = ['services'] self.assertTrue(type(options) == dict, "Options should be a dictionary") @@ -1266,9 +1261,7 @@ class SSSDConfigTestSSSDConfig(unittest.TestCase): for section in sssdconfig.sections(): self.assertTrue(section['name'] in control_list) - control_list = [ - 'config_file_version', - 'services'] + control_list = ['services'] for option in control_list: self.assertTrue(sssdconfig.has_option('sssd', option), "Option [%s] missing from [sssd]" % diff --git a/src/tests/intg/ldap_test.py b/src/tests/intg/ldap_test.py index 09b0636a1..73237ebeb 100644 --- a/src/tests/intg/ldap_test.py +++ b/src/tests/intg/ldap_test.py @@ -116,7 +116,6 @@ def sanity_rfc2307(request, ldap_conn): conf = unindent("""\ [sssd] debug_level = 0xffff - config_file_version = 2 domains = LDAP services = nss, pam @@ -206,7 +205,6 @@ def sanity_rfc2307_bis(request, ldap_conn): conf = unindent("""\ [sssd] debug_level = 0xffff - config_file_version = 2 domains = LDAP services = nss, pam diff --git a/src/tests/intg/test_memory_cache.py b/src/tests/intg/test_memory_cache.py index a33314771..1f4ccb0f9 100644 --- a/src/tests/intg/test_memory_cache.py +++ b/src/tests/intg/test_memory_cache.py @@ -136,7 +136,6 @@ def sanity_rfc2307(request, ldap_conn): conf = unindent("""\ [sssd] - config_file_version = 2 domains = LDAP services = nss @@ -162,7 +161,6 @@ def fqname_rfc2307(request, ldap_conn): conf = unindent("""\ [sssd] - config_file_version = 2 domains = LDAP services = nss @@ -189,7 +187,6 @@ def fqname_case_insensitive_rfc2307(request, ldap_conn): conf = unindent("""\ [sssd] - config_file_version = 2 domains = LDAP services = nss |