Commit 18b66839fb085a70efb3aa1448ab881d8b2add39

Authored by Sergio Oliveira
1 parent e7bb0d7b

Reading settings from /etc/colab/settings.d

Showing 1 changed file with 22 additions and 7 deletions   Show diff stats
colab/utils/conf.py
@@ -11,13 +11,7 @@ class InaccessibleYAMLSettings(ImproperlyConfigured): @@ -11,13 +11,7 @@ class InaccessibleYAMLSettings(ImproperlyConfigured):
11 Check if the file exists and if you have read permissions.""" 11 Check if the file exists and if you have read permissions."""
12 12
13 13
14 -def load_yaml_settings():  
15 - yaml_path = os.getenv('COLAB_SETTINGS', '/etc/colab/settings.yaml')  
16 -  
17 - if not os.path.exists(yaml_path):  
18 - msg = "The yaml file {} does not exist".format(yaml_path)  
19 - raise InaccessibleYAMLSettings(msg)  
20 - 14 +def _load_yaml_file(yaml_path):
21 try: 15 try:
22 with open(yaml_path) as yaml_file: 16 with open(yaml_path) as yaml_file:
23 yaml_settings = yaml.load(yaml_file.read()) 17 yaml_settings = yaml.load(yaml_file.read())
@@ -27,6 +21,27 @@ def load_yaml_settings(): @@ -27,6 +21,27 @@ def load_yaml_settings():
27 'has read rights.').format(yaml_path) 21 'has read rights.').format(yaml_path)
28 raise InaccessibleYAMLSettings(msg) 22 raise InaccessibleYAMLSettings(msg)
29 23
  24 + return yaml_settings
  25 +
  26 +
  27 +def load_yaml_settings():
  28 + settings_dir = '/etc/colab/settings.d'
  29 + yaml_path = os.getenv('COLAB_SETTINGS', '/etc/colab/settings.yaml')
  30 +
  31 + if not os.path.exists(yaml_path):
  32 + msg = "The yaml file {} does not exist".format(yaml_path)
  33 + raise InaccessibleYAMLSettings(msg)
  34 +
  35 + yaml_settings = _load_yaml_file(yaml_path)
  36 +
  37 + # Try to read settings from settings.d
  38 + if os.path.exists(settings_dir):
  39 + for file_name in os.listdir(settings_dir):
  40 + if file_name.endswith('.yaml') or file_name.endswith('yml'):
  41 + file_path = os.path.join(settings_dir, file_name)
  42 + yaml_settings_d = _load_yaml_file(file_path)
  43 + yaml_settings.update(yaml_settings_d)
  44 +
30 return yaml_settings or {} 45 return yaml_settings or {}
31 46
32 yaml_settings = load_yaml_settings() 47 yaml_settings = load_yaml_settings()