##// END OF EJS Templates
config: bootstrap default configs for license file import
super-admin -
r5532:a91274a8 default
parent child Browse files
Show More
@@ -1,228 +1,234 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 logging_conf = jn(os.path.dirname(global_config.get('__file__')), 'logging.ini')
55 ini_loc = os.path.dirname(global_config.get('__file__'))
56 logging_conf = jn(ini_loc, 'logging.ini')
56 57 settings_maker.enable_logging(logging_conf, level='INFO' if debug_enabled else 'DEBUG')
57 58
58 59 # Default includes, possible to change as a user
59 60 pyramid_includes = settings_maker.make_setting('pyramid.includes', [], parser='list:newline')
60 61 log.debug(
61 62 "Using the following pyramid.includes: %s",
62 63 pyramid_includes)
63 64
64 65 settings_maker.make_setting('rhodecode.edition', 'Community Edition')
65 66 settings_maker.make_setting('rhodecode.edition_id', 'CE')
66 67
67 68 if 'mako.default_filters' not in settings:
68 69 # set custom default filters if we don't have it defined
69 70 settings['mako.imports'] = 'from rhodecode.lib.base import h_filter'
70 71 settings['mako.default_filters'] = 'h_filter'
71 72
72 73 if 'mako.directories' not in settings:
73 74 mako_directories = settings.setdefault('mako.directories', [
74 75 # Base templates of the original application
75 76 'rhodecode:templates',
76 77 ])
77 78 log.debug(
78 79 "Using the following Mako template directories: %s",
79 80 mako_directories)
80 81
81 82 # NOTE(marcink): fix redis requirement for schema of connection since 3.X
82 83 if 'beaker.session.type' in settings and settings['beaker.session.type'] == 'ext:redis':
83 84 raw_url = settings['beaker.session.url']
84 85 if not raw_url.startswith(('redis://', 'rediss://', 'unix://')):
85 86 settings['beaker.session.url'] = 'redis://' + raw_url
86 87
87 88 settings_maker.make_setting('__file__', global_config.get('__file__'))
88 89
89 90 # TODO: johbo: Re-think this, usually the call to config.include
90 91 # should allow to pass in a prefix.
91 92 settings_maker.make_setting('rhodecode.api.url', '/_admin/api')
92 93
93 94 # Sanitize generic settings.
94 95 settings_maker.make_setting('default_encoding', 'UTF-8', parser='list')
95 96 settings_maker.make_setting('gzip_responses', False, parser='bool')
96 97 settings_maker.make_setting('startup.import_repos', 'false', parser='bool')
97 98
99 # License settings.
100 settings_maker.make_setting('license.hide_license_info', False, parser='bool')
101 settings_maker.make_setting('license.import_path', jn(ini_loc, 'rhodecode_enterprise.license'))
102 settings_maker.make_setting('license.import_path_mode', 'if-missing')
103
98 104 # statsd
99 105 settings_maker.make_setting('statsd.enabled', False, parser='bool')
100 106 settings_maker.make_setting('statsd.statsd_host', 'statsd-exporter', parser='string')
101 107 settings_maker.make_setting('statsd.statsd_port', 9125, parser='int')
102 108 settings_maker.make_setting('statsd.statsd_prefix', '')
103 109 settings_maker.make_setting('statsd.statsd_ipv6', False, parser='bool')
104 110
105 111 settings_maker.make_setting('vcs.svn.compatible_version', '')
106 112 settings_maker.make_setting('vcs.svn.redis_conn', 'redis://redis:6379/0')
107 113 settings_maker.make_setting('vcs.svn.proxy.enabled', True, parser='bool')
108 114 settings_maker.make_setting('vcs.svn.proxy.host', 'http://svn:8090', parser='string')
109 115 settings_maker.make_setting('vcs.hooks.protocol.v2', 'celery')
110 116 settings_maker.make_setting('vcs.hooks.host', '*')
111 117 settings_maker.make_setting('vcs.scm_app_implementation', 'http')
112 118 settings_maker.make_setting('vcs.server', '')
113 119 settings_maker.make_setting('vcs.server.protocol', 'http')
114 120 settings_maker.make_setting('vcs.server.enable', 'true', parser='bool')
115 121 settings_maker.make_setting('vcs.hooks.direct_calls', 'false', parser='bool')
116 122 settings_maker.make_setting('vcs.start_server', 'false', parser='bool')
117 123 settings_maker.make_setting('vcs.backends', 'hg, git, svn', parser='list')
118 124 settings_maker.make_setting('vcs.connection_timeout', 3600, parser='int')
119 125
120 126 settings_maker.make_setting('vcs.methods.cache', True, parser='bool')
121 127
122 128 # repo_store path
123 129 settings_maker.make_setting('repo_store.path', '/var/opt/rhodecode_repo_store')
124 130 # Support legacy values of vcs.scm_app_implementation. Legacy
125 131 # configurations may use 'rhodecode.lib.middleware.utils.scm_app_http', or
126 132 # disabled since 4.13 'vcsserver.scm_app' which is now mapped to 'http'.
127 133 scm_app_impl = settings['vcs.scm_app_implementation']
128 134 if scm_app_impl in ['rhodecode.lib.middleware.utils.scm_app_http', 'vcsserver.scm_app']:
129 135 settings['vcs.scm_app_implementation'] = 'http'
130 136
131 137 settings_maker.make_setting('appenlight', False, parser='bool')
132 138
133 139 temp_store = tempfile.gettempdir()
134 140 tmp_cache_dir = jn(temp_store, 'rc_cache')
135 141
136 142 # save default, cache dir, and use it for all backends later.
137 143 default_cache_dir = settings_maker.make_setting(
138 144 'cache_dir',
139 145 default=tmp_cache_dir, default_when_empty=True,
140 146 parser='dir:ensured')
141 147
142 148 # exception store cache
143 149 settings_maker.make_setting(
144 150 'exception_tracker.store_path',
145 151 default=jn(default_cache_dir, 'exc_store'), default_when_empty=True,
146 152 parser='dir:ensured'
147 153 )
148 154
149 155 settings_maker.make_setting(
150 156 'celerybeat-schedule.path',
151 157 default=jn(default_cache_dir, 'celerybeat_schedule', 'celerybeat-schedule.db'), default_when_empty=True,
152 158 parser='file:ensured'
153 159 )
154 160
155 161 # celery
156 162 broker_url = settings_maker.make_setting('celery.broker_url', 'redis://redis:6379/8')
157 163 settings_maker.make_setting('celery.result_backend', broker_url)
158 164
159 165 settings_maker.make_setting('exception_tracker.send_email', False, parser='bool')
160 166 settings_maker.make_setting('exception_tracker.email_prefix', '[RHODECODE ERROR]', default_when_empty=True)
161 167
162 168 # sessions, ensure file since no-value is memory
163 169 settings_maker.make_setting('beaker.session.type', 'file')
164 170 settings_maker.make_setting('beaker.session.data_dir', jn(default_cache_dir, 'session_data'))
165 171
166 172 # cache_general
167 173 settings_maker.make_setting('rc_cache.cache_general.backend', 'dogpile.cache.rc.file_namespace')
168 174 settings_maker.make_setting('rc_cache.cache_general.expiration_time', 60 * 60 * 12, parser='int')
169 175 settings_maker.make_setting('rc_cache.cache_general.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_general.db'))
170 176
171 177 # cache_perms
172 178 settings_maker.make_setting('rc_cache.cache_perms.backend', 'dogpile.cache.rc.file_namespace')
173 179 settings_maker.make_setting('rc_cache.cache_perms.expiration_time', 60 * 60, parser='int')
174 180 settings_maker.make_setting('rc_cache.cache_perms.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_perms_db'))
175 181
176 182 # cache_repo
177 183 settings_maker.make_setting('rc_cache.cache_repo.backend', 'dogpile.cache.rc.file_namespace')
178 184 settings_maker.make_setting('rc_cache.cache_repo.expiration_time', 60 * 60 * 24 * 30, parser='int')
179 185 settings_maker.make_setting('rc_cache.cache_repo.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_repo_db'))
180 186
181 187 # cache_license
182 188 settings_maker.make_setting('rc_cache.cache_license.backend', 'dogpile.cache.rc.file_namespace')
183 189 settings_maker.make_setting('rc_cache.cache_license.expiration_time', 60 * 5, parser='int')
184 190 settings_maker.make_setting('rc_cache.cache_license.arguments.filename', jn(default_cache_dir, 'rhodecode_cache_license_db'))
185 191
186 192 # cache_repo_longterm memory, 96H
187 193 settings_maker.make_setting('rc_cache.cache_repo_longterm.backend', 'dogpile.cache.rc.memory_lru')
188 194 settings_maker.make_setting('rc_cache.cache_repo_longterm.expiration_time', 345600, parser='int')
189 195 settings_maker.make_setting('rc_cache.cache_repo_longterm.max_size', 10000, parser='int')
190 196
191 197 # sql_cache_short
192 198 settings_maker.make_setting('rc_cache.sql_cache_short.backend', 'dogpile.cache.rc.memory_lru')
193 199 settings_maker.make_setting('rc_cache.sql_cache_short.expiration_time', 30, parser='int')
194 200 settings_maker.make_setting('rc_cache.sql_cache_short.max_size', 10000, parser='int')
195 201
196 202 # archive_cache
197 203 settings_maker.make_setting('archive_cache.locking.url', 'redis://redis:6379/1')
198 204 settings_maker.make_setting('archive_cache.backend.type', 'filesystem')
199 205
200 206 settings_maker.make_setting('archive_cache.filesystem.store_dir', jn(default_cache_dir, 'archive_cache'), default_when_empty=True,)
201 207 settings_maker.make_setting('archive_cache.filesystem.cache_shards', 8, parser='int')
202 208 settings_maker.make_setting('archive_cache.filesystem.cache_size_gb', 10, parser='float')
203 209 settings_maker.make_setting('archive_cache.filesystem.eviction_policy', 'least-recently-stored')
204 210
205 211 settings_maker.make_setting('archive_cache.filesystem.retry', False, parser='bool')
206 212 settings_maker.make_setting('archive_cache.filesystem.retry_backoff', 1, parser='int')
207 213 settings_maker.make_setting('archive_cache.filesystem.retry_attempts', 10, parser='int')
208 214
209 215 settings_maker.make_setting('archive_cache.objectstore.url', 'http://s3-minio:9000', default_when_empty=True,)
210 216 settings_maker.make_setting('archive_cache.objectstore.key', '')
211 217 settings_maker.make_setting('archive_cache.objectstore.secret', '')
212 218 settings_maker.make_setting('archive_cache.objectstore.region', 'eu-central-1')
213 219 settings_maker.make_setting('archive_cache.objectstore.bucket', 'rhodecode-archive-cache', default_when_empty=True,)
214 220 settings_maker.make_setting('archive_cache.objectstore.bucket_shards', 8, parser='int')
215 221
216 222 settings_maker.make_setting('archive_cache.objectstore.cache_size_gb', 10, parser='float')
217 223 settings_maker.make_setting('archive_cache.objectstore.eviction_policy', 'least-recently-stored')
218 224
219 225 settings_maker.make_setting('archive_cache.objectstore.retry', False, parser='bool')
220 226 settings_maker.make_setting('archive_cache.objectstore.retry_backoff', 1, parser='int')
221 227 settings_maker.make_setting('archive_cache.objectstore.retry_attempts', 10, parser='int')
222 228
223 229 settings_maker.env_expand()
224 230
225 231 # configure instance id
226 232 config_utils.set_instance_id(settings)
227 233
228 234 return settings
General Comments 0
You need to be logged in to leave comments. Login now