Commit c30d7a0022ba865fea11aa77e23be0e396b8c576

Authored by Sergio Oliveira
1 parent fac44a85

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  
... ...