New defaults are now set on v2 keys, so previous installation are automatically set to new keys. Fallback mode is still available.
110 lines
3.9 KiB
Python
110 lines
3.9 KiB
Python
# Copyright (C) 2010-2023 RhodeCode GmbH
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License, version 3
|
|
# (only), as published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# This program is dual-licensed. If you wish to learn more about the
|
|
# RhodeCode Enterprise Edition, including its added features, Support services,
|
|
# and proprietary license terms, please see https://rhodecode.com/licenses/
|
|
|
|
import os
|
|
import platform
|
|
|
|
DEFAULT_USER = 'default'
|
|
|
|
|
|
def configure_vcs(config):
|
|
"""
|
|
Patch VCS config with some RhodeCode specific stuff
|
|
"""
|
|
from rhodecode.lib.vcs import conf
|
|
import rhodecode.lib.vcs.conf.settings
|
|
|
|
conf.settings.BACKENDS = {
|
|
'hg': 'rhodecode.lib.vcs.backends.hg.MercurialRepository',
|
|
'git': 'rhodecode.lib.vcs.backends.git.GitRepository',
|
|
'svn': 'rhodecode.lib.vcs.backends.svn.SubversionRepository',
|
|
}
|
|
|
|
conf.settings.HOOKS_PROTOCOL = config['vcs.hooks.protocol.v2']
|
|
conf.settings.HOOKS_HOST = config['vcs.hooks.host']
|
|
conf.settings.DEFAULT_ENCODINGS = config['default_encoding']
|
|
conf.settings.ALIASES[:] = config['vcs.backends']
|
|
conf.settings.SVN_COMPATIBLE_VERSION = config['vcs.svn.compatible_version']
|
|
|
|
|
|
def initialize_database(config):
|
|
from rhodecode.lib.utils2 import engine_from_config, get_encryption_key
|
|
from rhodecode.model import init_model
|
|
engine = engine_from_config(config, 'sqlalchemy.db1.')
|
|
init_model(engine, encryption_key=get_encryption_key(config))
|
|
|
|
|
|
def initialize_test_environment(settings, test_env=None):
|
|
if test_env is None:
|
|
test_env = not int(os.environ.get('RC_NO_TMP_PATH', 0))
|
|
|
|
from rhodecode.lib.utils import (
|
|
create_test_directory, create_test_database, create_test_repositories,
|
|
create_test_index)
|
|
from rhodecode.tests import TESTS_TMP_PATH
|
|
from rhodecode.lib.vcs.backends.hg import largefiles_store
|
|
from rhodecode.lib.vcs.backends.git import lfs_store
|
|
|
|
# test repos
|
|
if test_env:
|
|
create_test_directory(TESTS_TMP_PATH)
|
|
# large object stores
|
|
create_test_directory(largefiles_store(TESTS_TMP_PATH))
|
|
create_test_directory(lfs_store(TESTS_TMP_PATH))
|
|
|
|
create_test_database(TESTS_TMP_PATH, settings)
|
|
create_test_repositories(TESTS_TMP_PATH, settings)
|
|
create_test_index(TESTS_TMP_PATH, settings)
|
|
|
|
|
|
def get_vcs_server_protocol(config):
|
|
return config['vcs.server.protocol']
|
|
|
|
|
|
def set_instance_id(config):
|
|
"""
|
|
Sets a dynamic generated config['instance_id'] if missing or '*'
|
|
E.g instance_id = *cluster-1 or instance_id = *
|
|
"""
|
|
|
|
config['instance_id'] = config.get('instance_id') or ''
|
|
instance_id = config['instance_id']
|
|
if instance_id.startswith('*') or not instance_id:
|
|
prefix = instance_id.lstrip('*')
|
|
_platform_id = platform.uname()[1] or 'instance'
|
|
config['instance_id'] = '{prefix}uname:{platform}-pid:{pid}'.format(
|
|
prefix=prefix,
|
|
platform=_platform_id,
|
|
pid=os.getpid())
|
|
|
|
|
|
def get_default_user_id():
|
|
from sqlalchemy import text
|
|
from rhodecode.model import meta
|
|
|
|
engine = meta.get_engine()
|
|
with meta.SA_Session(engine) as session:
|
|
result = session.execute(text(
|
|
"SELECT user_id from users where username = :uname"
|
|
), {'uname': DEFAULT_USER})
|
|
user = result.first()
|
|
if not user:
|
|
raise ValueError('Unable to retrieve default user data from DB')
|
|
user_id = user[0]
|
|
|
|
return user_id
|