Bug #38560
Updated by Volker Theile about 5 years ago
The previously intended workflow of ``get_localized_module_option()`` that would lookup for localized config options with a fallback to global config options is broken now if there is a ``default`` defined in ``MODULE_OPTIONS``. The problem is that a user must explicitly configure the localized key if he wants to override something, it's not possible anymore to use the global key to do that IF there is a ``default`` set in ``MODULE_OPTIONS``. Let's assume the following scenario: - 'ssl' in dashboard MODULE_OPTIONS defaults to 'True' - User configures 'mgr/dashboard/ssl' to 'False' The module implementation queries the localized config option via ``get_localized_module_option()``. In this case the following happens: 1) get_localized_module_option(key='ssl', default='True') 2) _get_localized(key='ssl', default='True', setter=_get_module_option) 3) _get_module_option(key='<MGR_ID>/ssl', default=None) 4) _ceph_get_module_option('dashboard', '<MGR_ID>/ssl') returns None 5) MODULE_OPTION_DEFAULTS.get('ssl', None) returns True Finally the caller of the function will get 'True', but this is not the expected result IMHO. I expected to get ``False`` from ``mgr/dashboard/ssl``. If ``ssl`` wouldn't be configured in ``MODULE_OPTIONS``, then the following code path will be executed and returns the expected value. 5) MODULE_OPTION_DEFAULTS.get('ssl', None) returns None 6) _get_module_option(key='ssl', 'True') returns False The issue was introduced by: Link to source code: https://github.com/ceph/ceph/commit/0f814f38e5d811d84fe07fe2d443c1038d53ca9a https://github.com/ceph/ceph/commit/0f814f38e5d811d84fe07fe2d443c1038d53ca9a#r32541122