kinto/local/config/__init__.py (59 lines of code) (raw):

import codecs import logging import os from time import strftime from kinto import __version__ from kinto.core import utils as core_utils logger = logging.getLogger(__name__) HERE = os.path.dirname(__file__) def render_template(template, destination, **kwargs): template = os.path.join(HERE, template) folder = os.path.dirname(destination) if folder and not os.path.exists(folder): os.makedirs(folder) logger.info(f"Created config {os.path.abspath(destination)}") with codecs.open(template, "r", encoding="utf-8") as f: raw_template = f.read() rendered = raw_template.format_map(kwargs) with codecs.open(destination, "w+", encoding="utf-8") as output: output.write(rendered) postgresql_url = "postgresql://postgres:postgres@localhost/postgres" redis_url = "redis://localhost:6379" backend_to_values = { "postgresql": { "storage_backend": "kinto.core.storage.postgresql", "storage_url": postgresql_url, "permission_backend": "kinto.core.permission.postgresql", "permission_url": postgresql_url, }, "redis": { "storage_backend": "kinto_redis.storage", "storage_url": redis_url + "/1", "permission_backend": "kinto_redis.permission", "permission_url": redis_url + "/3", }, "memory": { "storage_backend": "kinto.core.storage.memory", "storage_url": "", "permission_backend": "kinto.core.permission.memory", "permission_url": "", }, } cache_backend_to_values = { "postgresql": {"cache_backend": "kinto.core.cache.postgresql", "cache_url": postgresql_url}, "redis": {"cache_backend": "kinto_redis.cache", "cache_url": redis_url + "/2"}, "memcached": { "cache_backend": "kinto.core.cache.memcached", "cache_url": "127.0.0.1:11211 127.0.0.2:11211", }, "memory": {"cache_backend": "kinto.core.cache.memory", "cache_url": ""}, } def init(config_file, backend, cache_backend, host="127.0.0.1"): values = {} values["host"] = host values["secret"] = core_utils.random_bytes_hex(32) values["kinto_version"] = __version__ values["config_file_timestamp"] = str(strftime("%a, %d %b %Y %H:%M:%S %z")) values.update(backend_to_values[backend]) values.update(cache_backend_to_values[cache_backend]) render_template("kinto.tpl", config_file, **values)