Show More
@@ -34,6 +34,8 b' def _sanitize_settings_and_apply_default' | |||||
34 | default_store = os.path.join(os.path.dirname(settings['__file__']), 'upload_store') |
|
34 | default_store = os.path.join(os.path.dirname(settings['__file__']), 'upload_store') | |
35 | settings_maker.make_setting(config_keys.store_path, default_store) |
|
35 | settings_maker.make_setting(config_keys.store_path, default_store) | |
36 |
|
36 | |||
|
37 | settings_maker.env_expand() | |||
|
38 | ||||
37 |
|
39 | |||
38 | def includeme(config): |
|
40 | def includeme(config): | |
39 | from rhodecode.apps.file_store.views import FileStoreView |
|
41 | from rhodecode.apps.file_store.views import FileStoreView |
@@ -48,6 +48,8 b' def _sanitize_settings_and_apply_default' | |||||
48 | settings_maker.make_setting(config_keys.ssh_git_bin, '~/.rccontrol/vcsserver-1/profile/bin/git') |
|
48 | settings_maker.make_setting(config_keys.ssh_git_bin, '~/.rccontrol/vcsserver-1/profile/bin/git') | |
49 | settings_maker.make_setting(config_keys.ssh_svn_bin, '~/.rccontrol/vcsserver-1/profile/bin/svnserve') |
|
49 | settings_maker.make_setting(config_keys.ssh_svn_bin, '~/.rccontrol/vcsserver-1/profile/bin/svnserve') | |
50 |
|
50 | |||
|
51 | settings_maker.env_expand() | |||
|
52 | ||||
51 |
|
53 | |||
52 | def includeme(config): |
|
54 | def includeme(config): | |
53 | settings = config.registry.settings |
|
55 | settings = config.registry.settings |
@@ -48,6 +48,8 b' def _sanitize_settings_and_apply_default' | |||||
48 | settings_maker.make_setting(config_keys.reload_command, '') |
|
48 | settings_maker.make_setting(config_keys.reload_command, '') | |
49 | settings_maker.make_setting(config_keys.template, '') |
|
49 | settings_maker.make_setting(config_keys.template, '') | |
50 |
|
50 | |||
|
51 | settings_maker.env_expand() | |||
|
52 | ||||
51 | # Convert negative timeout values to zero. |
|
53 | # Convert negative timeout values to zero. | |
52 | if settings[config_keys.reload_timeout] < 0: |
|
54 | if settings[config_keys.reload_timeout] < 0: | |
53 | settings[config_keys.reload_timeout] = 0 |
|
55 | settings[config_keys.reload_timeout] = 0 |
@@ -525,6 +525,13 b' def sanitize_settings_and_apply_defaults' | |||||
525 | settings_maker.make_setting('is_test', False, parser='bool') |
|
525 | settings_maker.make_setting('is_test', False, parser='bool') | |
526 | settings_maker.make_setting('gzip_responses', False, parser='bool') |
|
526 | settings_maker.make_setting('gzip_responses', False, parser='bool') | |
527 |
|
527 | |||
|
528 | # statsd | |||
|
529 | settings_maker.make_setting('statsd.enabled', False, parser='bool') | |||
|
530 | settings_maker.make_setting('statsd.statsd_host', '0.0.0.0') | |||
|
531 | settings_maker.make_setting('statsd.statsd_port', 8125, parser='int') | |||
|
532 | settings_maker.make_setting('statsd.statsd_prefix', '') | |||
|
533 | settings_maker.make_setting('statsd.statsd_ipv6', False, parser='bool') | |||
|
534 | ||||
528 | settings_maker.make_setting('vcs.svn.compatible_version', '') |
|
535 | settings_maker.make_setting('vcs.svn.compatible_version', '') | |
529 | settings_maker.make_setting('vcs.hooks.protocol', 'http') |
|
536 | settings_maker.make_setting('vcs.hooks.protocol', 'http') | |
530 | settings_maker.make_setting('vcs.hooks.host', '127.0.0.1') |
|
537 | settings_maker.make_setting('vcs.hooks.host', '127.0.0.1') | |
@@ -549,17 +556,6 b' def sanitize_settings_and_apply_defaults' | |||||
549 |
|
556 | |||
550 | settings_maker.make_setting('appenlight', False, parser='bool') |
|
557 | settings_maker.make_setting('appenlight', False, parser='bool') | |
551 |
|
558 | |||
552 | _sanitize_cache_settings(settings) |
|
|||
553 |
|
||||
554 | # configure instance id |
|
|||
555 | config_utils.set_instance_id(settings) |
|
|||
556 |
|
||||
557 | return settings |
|
|||
558 |
|
||||
559 |
|
||||
560 | def _sanitize_cache_settings(settings): |
|
|||
561 | settings_maker = SettingsMaker(settings) |
|
|||
562 |
|
||||
563 | temp_store = tempfile.gettempdir() |
|
559 | temp_store = tempfile.gettempdir() | |
564 | default_cache_dir = os.path.join(temp_store, 'rc_cache') |
|
560 | default_cache_dir = os.path.join(temp_store, 'rc_cache') | |
565 |
|
561 | |||
@@ -609,3 +605,10 b' def _sanitize_cache_settings(settings):' | |||||
609 | settings_maker.make_setting('rc_cache.sql_cache_short.backend', 'dogpile.cache.rc.memory_lru') |
|
605 | settings_maker.make_setting('rc_cache.sql_cache_short.backend', 'dogpile.cache.rc.memory_lru') | |
610 | settings_maker.make_setting('rc_cache.sql_cache_short.expiration_time', 30, parser='int') |
|
606 | settings_maker.make_setting('rc_cache.sql_cache_short.expiration_time', 30, parser='int') | |
611 | settings_maker.make_setting('rc_cache.sql_cache_short.max_size', 10000, parser='int') |
|
607 | settings_maker.make_setting('rc_cache.sql_cache_short.max_size', 10000, parser='int') | |
|
608 | ||||
|
609 | settings_maker.env_expand() | |||
|
610 | ||||
|
611 | # configure instance id | |||
|
612 | config_utils.set_instance_id(settings) | |||
|
613 | ||||
|
614 | return settings |
@@ -27,6 +27,8 b' import tempfile' | |||||
27 | import logging.config |
|
27 | import logging.config | |
28 | log = logging.getLogger(__name__) |
|
28 | log = logging.getLogger(__name__) | |
29 |
|
29 | |||
|
30 | set_keys = {} | |||
|
31 | ||||
30 |
|
32 | |||
31 | def str2bool(_str): |
|
33 | def str2bool(_str): | |
32 | """ |
|
34 | """ | |
@@ -119,6 +121,27 b' class SettingsMaker(object):' | |||||
119 | def _key_transformator(cls, key): |
|
121 | def _key_transformator(cls, key): | |
120 | return "{}_{}".format('RC'.upper(), key.upper().replace('.', '_').replace('-', '_')) |
|
122 | return "{}_{}".format('RC'.upper(), key.upper().replace('.', '_').replace('-', '_')) | |
121 |
|
123 | |||
|
124 | def maybe_env_key(self, key): | |||
|
125 | # now maybe we have this KEY in env, search and use the value with higher priority. | |||
|
126 | transformed_key = self._key_transformator(key) | |||
|
127 | envvar_value = os.environ.get(transformed_key) | |||
|
128 | if envvar_value: | |||
|
129 | log.debug('using `%s` key instead of `%s` key for config', transformed_key, key) | |||
|
130 | ||||
|
131 | return envvar_value | |||
|
132 | ||||
|
133 | def env_expand(self): | |||
|
134 | replaced = {} | |||
|
135 | for k, v in self.settings.items(): | |||
|
136 | if k not in set_keys: | |||
|
137 | envvar_value = self.maybe_env_key(k) | |||
|
138 | if envvar_value: | |||
|
139 | replaced[k] = envvar_value | |||
|
140 | set_keys[k] = envvar_value | |||
|
141 | ||||
|
142 | # replace ALL keys updated | |||
|
143 | self.settings.update(replaced) | |||
|
144 | ||||
122 | def enable_logging(self, logging_conf=None, level='INFO', formatter='generic'): |
|
145 | def enable_logging(self, logging_conf=None, level='INFO', formatter='generic'): | |
123 | """ |
|
146 | """ | |
124 | Helper to enable debug on running instance |
|
147 | Helper to enable debug on running instance | |
@@ -133,7 +156,8 b' class SettingsMaker(object):' | |||||
133 | logging_conf = self.settings.get('logging.logging_conf_file') or '' |
|
156 | logging_conf = self.settings.get('logging.logging_conf_file') or '' | |
134 |
|
157 | |||
135 | if not os.path.isfile(logging_conf): |
|
158 | if not os.path.isfile(logging_conf): | |
136 |
log.error('Unable to setup logging based on %s, |
|
159 | log.error('Unable to setup logging based on %s, ' | |
|
160 | 'file does not exist.... specify path using logging.logging_conf_file= config setting. ', logging_conf) | |||
137 | return |
|
161 | return | |
138 |
|
162 | |||
139 | with open(logging_conf, 'rb') as f: |
|
163 | with open(logging_conf, 'rb') as f: | |
@@ -151,7 +175,6 b' class SettingsMaker(object):' | |||||
151 | os.remove(f.name) |
|
175 | os.remove(f.name) | |
152 |
|
176 | |||
153 | def make_setting(self, key, default, lower=False, default_when_empty=False, parser=None): |
|
177 | def make_setting(self, key, default, lower=False, default_when_empty=False, parser=None): | |
154 |
|
||||
155 | input_val = self.settings.get(key, default) |
|
178 | input_val = self.settings.get(key, default) | |
156 |
|
179 | |||
157 | if default_when_empty and not input_val: |
|
180 | if default_when_empty and not input_val: | |
@@ -172,11 +195,10 b' class SettingsMaker(object):' | |||||
172 | None: lambda i: i |
|
195 | None: lambda i: i | |
173 | }[parser] |
|
196 | }[parser] | |
174 |
|
197 | |||
175 | # now maybe we have this KEY in env, search and use the value with higher priority. |
|
198 | envvar_value = self.maybe_env_key(key) | |
176 | transformed_key = self._key_transformator(key) |
|
|||
177 | envvar_value = os.environ.get(transformed_key) |
|
|||
178 | if envvar_value: |
|
199 | if envvar_value: | |
179 | log.debug('using `%s` key instead of `%s` key for config', transformed_key, key) |
|
|||
180 | input_val = envvar_value |
|
200 | input_val = envvar_value | |
|
201 | set_keys[key] = input_val | |||
|
202 | ||||
181 | self.settings[key] = parser_func(input_val) |
|
203 | self.settings[key] = parser_func(input_val) | |
182 | return self.settings[key] |
|
204 | return self.settings[key] |
General Comments 0
You need to be logged in to leave comments.
Login now