70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
import yaml
|
|
|
|
from random import SystemRandom
|
|
|
|
def generate_secret_key():
|
|
cryptogen = SystemRandom()
|
|
return str(cryptogen.getrandbits(256))
|
|
|
|
|
|
def import_yaml(config_obj, config_file):
|
|
with open(config_file) as f:
|
|
c = yaml.safe_load(f)
|
|
if not c:
|
|
logger.debug('Empty YAML config file')
|
|
return
|
|
|
|
if isinstance(c, str):
|
|
raise Exception('Invalid YAML config file: ' + str(c))
|
|
|
|
for key in c.iterkeys():
|
|
if key.isupper():
|
|
config_obj[key] = c[key]
|
|
|
|
|
|
def export_yaml(config_obj, config_file):
|
|
with open(config_file, 'w') as f:
|
|
f.write(yaml.safe_dump(config_obj, encoding='utf-8', allow_unicode=True))
|
|
|
|
|
|
def set_config_value(config_file, config_key, value):
|
|
""" Loads the configuration from the given YAML config file, sets the given key to
|
|
the given value, and then writes it back out to the given YAML config file. """
|
|
config_obj = {}
|
|
import_yaml(config_obj, config_file)
|
|
config_obj[config_key] = value
|
|
export_yaml(config_obj, config_file)
|
|
|
|
|
|
def add_enterprise_config_defaults(config_obj):
|
|
""" Adds/Sets the config defaults for enterprise registry config. """
|
|
# These have to be false.
|
|
config_obj['TESTING'] = False
|
|
config_obj['USE_CDN'] = False
|
|
|
|
# Default features that are on.
|
|
config_obj['FEATURE_USER_LOG_ACCESS'] = config_obj.get('FEATURE_USER_LOG_ACCESS', True)
|
|
config_obj['FEATURE_USER_CREATION'] = config_obj.get('FEATURE_USER_CREATION', True)
|
|
|
|
# Default features that are off.
|
|
config_obj['FEATURE_MAILING'] = config_obj.get('FEATURE_MAILING', False)
|
|
config_obj['FEATURE_BUILD_SUPPORT'] = config_obj.get('FEATURE_BUILD_SUPPORT', False)
|
|
|
|
# Default secret key.
|
|
if not 'SECRET_KEY' in config_obj:
|
|
config_obj['SECRET_KEY'] = generate_secret_key()
|
|
|
|
# Default storage configuration.
|
|
if not 'DISTRIBUTED_STORAGE_CONFIG' in config_obj:
|
|
config_obj['DISTRIBUTED_STORAGE_PREFERENCE'] = ['local']
|
|
config_obj['DISTRIBUTED_STORAGE_CONFIG'] = {
|
|
'local': ['LocalStorage', { 'storage_path': '/datastorage/registry' }]
|
|
}
|
|
|
|
config_obj['USERFILES_LOCATION'] = 'local'
|
|
config_obj['USERFILES_PATH'] = 'userfiles/'
|
|
|
|
# Misc configuration.
|
|
config_obj['PREFERRED_URL_SCHEME'] = config_obj.get('PREFERRED_URL_SCHEME', 'http')
|
|
config_obj['ENTERPRISE_LOGO_URL'] = config_obj.get('ENTERPRISE_LOGO_URL',
|
|
'/static/img/quay-logo.png')
|