Commit c30d7a0022ba865fea11aa77e23be0e396b8c576
1 parent
fac44a85
Exists in
master
and in
30 other branches
Added logging for settings initialization
[skip ci]
Showing
2 changed files
with
51 additions
and
31 deletions
Show diff stats
colab/settings.py
... | ... | @@ -253,8 +253,8 @@ from .utils import conf |
253 | 253 | |
254 | 254 | SOCIAL_NETWORK_ENABLED = locals().get('SOCIAL_NETWORK_ENABLED') or False |
255 | 255 | |
256 | -locals().update(conf.load_colab_apps()) | |
257 | 256 | locals().update(conf.load_py_settings()) |
257 | +locals().update(conf.load_colab_apps()) | |
258 | 258 | |
259 | 259 | COLAB_APPS = locals().get('COLAB_APPS') or {} |
260 | 260 | PROXIED_APPS = {} | ... | ... |
colab/utils/conf.py
1 | 1 | |
2 | 2 | import os |
3 | 3 | import sys |
4 | +import logging | |
4 | 5 | import importlib |
5 | 6 | import warnings |
6 | 7 | |
7 | 8 | from django.core.exceptions import ImproperlyConfigured |
8 | 9 | |
10 | +logger = logging.getLogger('colab.init') | |
11 | +if os.environ.get('COLAB_DEBUG'): | |
12 | + logger.addHandler(logging.StreamHandler()) | |
13 | + logger.setLevel(logging.INFO) | |
14 | + | |
9 | 15 | |
10 | 16 | class InaccessibleSettings(ImproperlyConfigured): |
11 | 17 | """Settings.py is Inaccessible. |
... | ... | @@ -48,57 +54,71 @@ def _load_py_file(py_path, path): |
48 | 54 | |
49 | 55 | |
50 | 56 | def load_py_settings(): |
51 | - settings_dir = '/etc/colab/settings.d' | |
52 | 57 | settings_file = os.getenv('COLAB_SETTINGS', '/etc/colab/settings.py') |
53 | 58 | settings_module = settings_file.split('.')[-2].split('/')[-1] |
54 | 59 | py_path = "/".join(settings_file.split('/')[:-1]) |
55 | 60 | |
61 | + logger.info('Settings file: %s', settings_file) | |
62 | + | |
56 | 63 | if not os.path.exists(py_path): |
57 | 64 | msg = "The py file {} does not exist".format(py_path) |
58 | 65 | raise InaccessibleSettings(msg) |
59 | 66 | |
60 | 67 | py_settings = _load_py_file(settings_module, py_path) |
61 | 68 | |
62 | - # Try to read settings from settings.d | |
69 | + # Read settings from settings.d | |
70 | + settings_dir = '/etc/colab/settings.d' | |
71 | + logger.info('Settings directory: %s', settings_dir) | |
72 | + | |
73 | + if not os.path.exists(settings_dir): | |
74 | + return py_settings | |
75 | + | |
76 | + for file_name in os.listdir(settings_dir): | |
77 | + if not file_name.endswith('.py'): | |
78 | + continue | |
63 | 79 | |
64 | - if os.path.exists(settings_dir): | |
65 | - for file_name in os.listdir(settings_dir): | |
66 | - if file_name.endswith('.py'): | |
67 | - file_module = file_name.split('.')[0] | |
68 | - py_settings_d = _load_py_file(file_module, settings_dir) | |
69 | - py_settings.update(py_settings_d) | |
80 | + file_module = file_name.split('.')[0] | |
81 | + py_settings_d = _load_py_file(file_module, settings_dir) | |
82 | + py_settings.update(py_settings_d) | |
83 | + logger.info('Loaded %s/%s', settings_dir, file_name) | |
70 | 84 | |
71 | 85 | return py_settings |
72 | 86 | |
73 | 87 | |
74 | 88 | def load_colab_apps(): |
75 | 89 | plugins_dir = os.getenv('COLAB_PLUGINS', '/etc/colab/plugins.d/') |
90 | + logger.info('Plugin settings directory: %s', plugins_dir) | |
76 | 91 | |
77 | 92 | COLAB_APPS = {} |
78 | 93 | |
79 | 94 | # Try to read settings from plugins.d |
80 | - if os.path.exists(plugins_dir): | |
81 | - for file_name in os.listdir(plugins_dir): | |
82 | - if file_name.endswith('.py'): | |
83 | - file_module = file_name.split('.')[0] | |
84 | - py_settings_d = _load_py_file(file_module, plugins_dir) | |
85 | - fields = ['verbose_name', 'upstream', 'urls', | |
86 | - 'menu_urls', 'middlewares', 'dependencies', | |
87 | - 'context_processors', 'private_token'] | |
88 | - | |
89 | - app_name = py_settings_d.get('name') | |
90 | - if not app_name: | |
91 | - warnings.warn("Plugin missing name variable") | |
92 | - continue | |
93 | - | |
94 | - COLAB_APPS[app_name] = {} | |
95 | - COLAB_APPS[app_name]['menu_title'] = \ | |
96 | - py_settings_d.get('menu_title') | |
97 | - | |
98 | - for key in fields: | |
99 | - value = py_settings_d.get(key) | |
100 | - if value: | |
101 | - COLAB_APPS[app_name][key] = value | |
95 | + if not os.path.exists(plugins_dir): | |
96 | + return {'COLAB_APPS': COLAB_APPS} | |
97 | + | |
98 | + for file_name in os.listdir(plugins_dir): | |
99 | + if not file_name.endswith('.py'): | |
100 | + continue | |
101 | + | |
102 | + file_module = file_name.split('.')[0] | |
103 | + py_settings_d = _load_py_file(file_module, plugins_dir) | |
104 | + logger.info('Loaded plugin settings: %s/%s', plugins_dir, file_name) | |
105 | + | |
106 | + app_name = py_settings_d.get('name') | |
107 | + if not app_name: | |
108 | + warnings.warn("Plugin missing name variable") | |
109 | + continue | |
110 | + | |
111 | + COLAB_APPS[app_name] = {} | |
112 | + COLAB_APPS[app_name]['menu_title'] = py_settings_d.get('menu_title') | |
113 | + | |
114 | + fields = ['verbose_name', 'upstream', 'urls', | |
115 | + 'menu_urls', 'middlewares', 'dependencies', | |
116 | + 'context_processors', 'private_token'] | |
117 | + | |
118 | + for key in fields: | |
119 | + value = py_settings_d.get(key) | |
120 | + if value: | |
121 | + COLAB_APPS[app_name][key] = value | |
102 | 122 | |
103 | 123 | return {'COLAB_APPS': COLAB_APPS} |
104 | 124 | ... | ... |