changeset 6470:8377f2bfb88f

config: refactor beaker configuration While refactoring: * drop support for 'cache.' prefix - it is only 'beaker.config.' that ever has been documented or used in examples * make prefix stripping more safe (if the prefix should appear twice in the key) * trust exactly what has been configured - drop stripping of strings * drop int conversion of 'expire' - beaker documentation suggests strings are fine
author Mads Kiilerich <mads@kiilerich.com>
date Mon, 23 Jan 2017 01:56:39 +0100
parents 62eedbae0558
children 8b4c09e740a7
files kallithea/lib/utils.py
diffstat 1 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/lib/utils.py	Fri Dec 23 21:29:53 2016 +0100
+++ b/kallithea/lib/utils.py	Mon Jan 23 01:56:39 2017 +0100
@@ -621,29 +621,30 @@
 
 # set cache regions for beaker so celery can utilise it
 def setup_cache_regions(settings):
+    # Create dict with just beaker cache configs with prefix stripped
     cache_settings = {'regions': None}
-    for key in settings.keys():
-        for prefix in ['beaker.cache.', 'cache.']:
-            if key.startswith(prefix):
-                name = key.split(prefix)[1].strip()
-                cache_settings[name] = settings[key].strip()
+    prefix = 'beaker.cache.'
+    for key in settings:
+        if key.startswith(prefix):
+            name = key[len(prefix):]
+            cache_settings[name] = settings[key]
+    # Find all regions, apply defaults, and apply to beaker
     if cache_settings['regions']:
         for region in cache_settings['regions'].split(','):
-            region = region.strip()
+            region = region.strip() + '.'
             region_settings = {}
-            for key, value in cache_settings.items():
+            for key in cache_settings:
                 if key.startswith(region):
-                    region_settings[key.split('.')[1]] = value
-            region_settings['expire'] = int(region_settings.get('expire',
-                                                                60))
+                    name = key[len(region):]
+                    region_settings[name] = cache_settings[key]
+            region_settings.setdefault('expire',
+                                       cache_settings.get('expire', '60'))
             region_settings.setdefault('lock_dir',
                                        cache_settings.get('lock_dir'))
             region_settings.setdefault('data_dir',
                                        cache_settings.get('data_dir'))
-
-            if 'type' not in region_settings:
-                region_settings['type'] = cache_settings.get('type',
-                                                             'memory')
+            region_settings.setdefault('type',
+                                       cache_settings.get('type', 'memory'))
             beaker.cache.cache_regions[region] = region_settings