##// END OF EJS Templates
fix(config): added default value to celery result and broker
super-admin -
r5485:633e0a3d default
parent child Browse files
Show More
@@ -1,224 +1,228 b''
1 1 # Copyright (C) 2010-2023 RhodeCode GmbH
2 2 #
3 3 # This program is free software: you can redistribute it and/or modify
4 4 # it under the terms of the GNU Affero General Public License, version 3
5 5 # (only), as published by the Free Software Foundation.
6 6 #
7 7 # This program is distributed in the hope that it will be useful,
8 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 10 # GNU General Public License for more details.
11 11 #
12 12 # You should have received a copy of the GNU Affero General Public License
13 13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 14 #
15 15 # This program is dual-licensed. If you wish to learn more about the
16 16 # RhodeCode Enterprise Edition, including its added features, Support services,
17 17 # and proprietary license terms, please see https://rhodecode.com/licenses/
18 18
19 19 import os
20 20 import tempfile
21 21 import logging
22 22
23 23 from pyramid.settings import asbool
24 24
25 25 from rhodecode.config.settings_maker import SettingsMaker
26 26 from rhodecode.config import utils as config_utils
27 27
28 28 log = logging.getLogger(__name__)
29 29
30 30
31 31 def sanitize_settings_and_apply_defaults(global_config, settings):
32 32 """
33 33 Applies settings defaults and does all type conversion.
34 34
35 35 We would move all settings parsing and preparation into this place, so that
36 36 we have only one place left which deals with this part. The remaining parts
37 37 of the application would start to rely fully on well-prepared settings.
38 38
39 39 This piece would later be split up per topic to avoid a big fat monster
40 40 function.
41 41 """
42 42 jn = os.path.join
43 43
44 44 global_settings_maker = SettingsMaker(global_config)
45 45 global_settings_maker.make_setting('debug', default=False, parser='bool')
46 46 debug_enabled = asbool(global_config.get('debug'))
47 47
48 48 settings_maker = SettingsMaker(settings)
49 49
50 50 settings_maker.make_setting(
51 51 'logging.autoconfigure',
52 52 default=False,
53 53 parser='bool')
54 54
55 55 logging_conf = jn(os.path.dirname(global_config.get('__file__')), 'logging.ini')
56 56 settings_maker.enable_logging(logging_conf, level='INFO' if debug_enabled else 'DEBUG')
57 57
58 58 # Default includes, possible to change as a user
59 59 pyramid_includes = settings_maker.make_setting('pyramid.includes', [], parser='list:newline')
60 60 log.debug(
61 61 "Using the following pyramid.includes: %s",
62 62 pyramid_includes)
63 63
64 64 settings_maker.make_setting('rhodecode.edition', 'Community Edition')
65 65 settings_maker.make_setting('rhodecode.edition_id', 'CE')
66 66
67 67 if 'mako.default_filters' not in settings:
68 68 # set custom default filters if we don't have it defined
69 69 settings['mako.imports'] = 'from rhodecode.lib.base import h_filter'
70 70 settings['mako.default_filters'] = 'h_filter'
71 71
72 72 if 'mako.directories' not in settings:
73 73 mako_directories = settings.setdefault('mako.directories', [
74 74 # Base templates of the original application
75 75 'rhodecode:templates',
76 76 ])
77 77 log.debug(
78 78 "Using the following Mako template directories: %s",
79 79 mako_directories)
80 80
81 81 # NOTE(marcink): fix redis requirement for schema of connection since 3.X
82 82 if 'beaker.session.type' in settings and settings['beaker.session.type'] == 'ext:redis':
83 83 raw_url = settings['beaker.session.url']
84 84 if not raw_url.startswith(('redis://', 'rediss://', 'unix://')):
85 85 settings['beaker.session.url'] = 'redis://' + raw_url
86 86
87 87 settings_maker.make_setting('__file__', global_config.get('__file__'))
88 88
89 89 # TODO: johbo: Re-think this, usually the call to config.include
90 90 # should allow to pass in a prefix.
91 91 settings_maker.make_setting('rhodecode.api.url', '/_admin/api')
92 92
93 93 # Sanitize generic settings.
94 94 settings_maker.make_setting('default_encoding', 'UTF-8', parser='list')
95 95 settings_maker.make_setting('gzip_responses', False, parser='bool')
96 96 settings_maker.make_setting('startup.import_repos', 'false', parser='bool')
97 97
98 98 # statsd
99 99 settings_maker.make_setting('statsd.enabled', False, parser='bool')
100 100 settings_maker.make_setting('statsd.statsd_host', 'statsd-exporter', parser='string')
101 101 settings_maker.make_setting('statsd.statsd_port', 9125, parser='int')
102 102 settings_maker.make_setting('statsd.statsd_prefix', '')
103 103 settings_maker.make_setting('statsd.statsd_ipv6', False, parser='bool')
104 104
105 105 settings_maker.make_setting('vcs.svn.compatible_version', '')
106 106 settings_maker.make_setting('vcs.svn.redis_conn', 'redis://redis:6379/0')
107 107 settings_maker.make_setting('vcs.svn.proxy.enabled', True, parser='bool')
108 108 settings_maker.make_setting('vcs.svn.proxy.host', 'http://svn:8090', parser='string')
109 109 settings_maker.make_setting('vcs.hooks.protocol', 'http')
110 110 settings_maker.make_setting('vcs.hooks.host', '*')
111 111 settings_maker.make_setting('vcs.scm_app_implementation', 'http')
112 112 settings_maker.make_setting('vcs.server', '')
113 113 settings_maker.make_setting('vcs.server.protocol', 'http')
114 114 settings_maker.make_setting('vcs.server.enable', 'true', parser='bool')
115 115 settings_maker.make_setting('vcs.hooks.direct_calls', 'false', parser='bool')
116 116 settings_maker.make_setting('vcs.start_server', 'false', parser='bool')
117 117 settings_maker.make_setting('vcs.backends', 'hg, git, svn', parser='list')
118 118 settings_maker.make_setting('vcs.connection_timeout', 3600, parser='int')
119 119
120 120 settings_maker.make_setting('vcs.methods.cache', True, parser='bool')
121 121
122 122 # repo_store path
123 123 settings_maker.make_setting('repo_store.path', '/var/opt/rhodecode_repo_store')
124 124 # Support legacy values of vcs.scm_app_implementation. Legacy
125 125 # configurations may use 'rhodecode.lib.middleware.utils.scm_app_http', or
126 126 # disabled since 4.13 'vcsserver.scm_app' which is now mapped to 'http'.
127 127 scm_app_impl = settings['vcs.scm_app_implementation']
128 128 if scm_app_impl in ['rhodecode.lib.middleware.utils.scm_app_http', 'vcsserver.scm_app']:
129 129 settings['vcs.scm_app_implementation'] = 'http'
130 130
131 131 settings_maker.make_setting('appenlight', False, parser='bool')
132 132
133 133 temp_store = tempfile.gettempdir()
134 134 tmp_cache_dir = jn(temp_store, 'rc_cache')
135 135
136 136 # save default, cache dir, and use it for all backends later.
137 137 default_cache_dir = settings_maker.make_setting(
138 138 'cache_dir',
139 139 default=tmp_cache_dir, default_when_empty=True,
140 140 parser='dir:ensured')
141 141
142 142 # exception store cache
143 143 settings_maker.make_setting(
144 144 'exception_tracker.store_path',
145 145 default=jn(default_cache_dir, 'exc_store'), default_when_empty=True,
146 146 parser='dir:ensured'
147 147 )
148 148
149 149 settings_maker.make_setting(
150 150 'celerybeat-schedule.path',
151 151 default=jn(default_cache_dir, 'celerybeat_schedule', 'celerybeat-schedule.db'), default_when_empty=True,
152 152 parser='file:ensured'
153 153 )
154 154
155 # celery
156 broker_url = settings_maker.make_setting('celery.broker_url', 'redis://redis:6379/8')
157 settings_maker.make_setting('celery.result_backend', broker_url)
158
155 159 settings_maker.make_setting('exception_tracker.send_email', False, parser='bool')
156 160 settings_maker.make_setting('exception_tracker.email_prefix', '[RHODECODE ERROR]', default_when_empty=True)
157 161
158 162 # sessions, ensure file since no-value is memory
159 163 settings_maker.make_setting('beaker.session.type', 'file')
160 164 settings_maker.make_setting('beaker.session.data_dir', jn(default_cache_dir, 'session_data'))
161 165
162 166 # cache_general
163 167 settings_maker.make_setting('rc_cache.cache_general.backend', 'dogpile.cache.rc.file_namespace')
164 168 settings_maker.make_setting('rc_cache.cache_general.expiration_time', 60 * 60 * 12, parser='int')
165 169 settings_maker.make_setting('rc_cache.cache_general.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_general.db'))
166 170
167 171 # cache_perms
168 172 settings_maker.make_setting('rc_cache.cache_perms.backend', 'dogpile.cache.rc.file_namespace')
169 173 settings_maker.make_setting('rc_cache.cache_perms.expiration_time', 60 * 60, parser='int')
170 174 settings_maker.make_setting('rc_cache.cache_perms.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_perms_db'))
171 175
172 176 # cache_repo
173 177 settings_maker.make_setting('rc_cache.cache_repo.backend', 'dogpile.cache.rc.file_namespace')
174 178 settings_maker.make_setting('rc_cache.cache_repo.expiration_time', 60 * 60 * 24 * 30, parser='int')
175 179 settings_maker.make_setting('rc_cache.cache_repo.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_repo_db'))
176 180
177 181 # cache_license
178 182 settings_maker.make_setting('rc_cache.cache_license.backend', 'dogpile.cache.rc.file_namespace')
179 183 settings_maker.make_setting('rc_cache.cache_license.expiration_time', 60 * 5, parser='int')
180 184 settings_maker.make_setting('rc_cache.cache_license.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_license_db'))
181 185
182 186 # cache_repo_longterm memory, 96H
183 187 settings_maker.make_setting('rc_cache.cache_repo_longterm.backend', 'dogpile.cache.rc.memory_lru')
184 188 settings_maker.make_setting('rc_cache.cache_repo_longterm.expiration_time', 345600, parser='int')
185 189 settings_maker.make_setting('rc_cache.cache_repo_longterm.max_size', 10000, parser='int')
186 190
187 191 # sql_cache_short
188 192 settings_maker.make_setting('rc_cache.sql_cache_short.backend', 'dogpile.cache.rc.memory_lru')
189 193 settings_maker.make_setting('rc_cache.sql_cache_short.expiration_time', 30, parser='int')
190 194 settings_maker.make_setting('rc_cache.sql_cache_short.max_size', 10000, parser='int')
191 195
192 196 # archive_cache
193 197 settings_maker.make_setting('archive_cache.locking.url', 'redis://redis:6379/1')
194 198 settings_maker.make_setting('archive_cache.backend.type', 'filesystem')
195 199
196 200 settings_maker.make_setting('archive_cache.filesystem.store_dir', jn(default_cache_dir, 'archive_cache'), default_when_empty=True,)
197 201 settings_maker.make_setting('archive_cache.filesystem.cache_shards', 8, parser='int')
198 202 settings_maker.make_setting('archive_cache.filesystem.cache_size_gb', 10, parser='float')
199 203 settings_maker.make_setting('archive_cache.filesystem.eviction_policy', 'least-recently-stored')
200 204
201 205 settings_maker.make_setting('archive_cache.filesystem.retry', False, parser='bool')
202 206 settings_maker.make_setting('archive_cache.filesystem.retry_backoff', 1, parser='int')
203 207 settings_maker.make_setting('archive_cache.filesystem.retry_attempts', 10, parser='int')
204 208
205 209 settings_maker.make_setting('archive_cache.objectstore.url', jn(default_cache_dir, 'archive_cache'), default_when_empty=True,)
206 210 settings_maker.make_setting('archive_cache.objectstore.key', '')
207 211 settings_maker.make_setting('archive_cache.objectstore.secret', '')
208 212 settings_maker.make_setting('archive_cache.objectstore.region', 'eu-central-1')
209 213 settings_maker.make_setting('archive_cache.objectstore.bucket', 'rhodecode-archive-cache', default_when_empty=True,)
210 214 settings_maker.make_setting('archive_cache.objectstore.bucket_shards', 8, parser='int')
211 215
212 216 settings_maker.make_setting('archive_cache.objectstore.cache_size_gb', 10, parser='float')
213 217 settings_maker.make_setting('archive_cache.objectstore.eviction_policy', 'least-recently-stored')
214 218
215 219 settings_maker.make_setting('archive_cache.objectstore.retry', False, parser='bool')
216 220 settings_maker.make_setting('archive_cache.objectstore.retry_backoff', 1, parser='int')
217 221 settings_maker.make_setting('archive_cache.objectstore.retry_attempts', 10, parser='int')
218 222
219 223 settings_maker.env_expand()
220 224
221 225 # configure instance id
222 226 config_utils.set_instance_id(settings)
223 227
224 228 return settings
General Comments 0
You need to be logged in to leave comments. Login now