Shifts from JSON configuration to yml based

This commit is contained in:
Oleg Silkin 2020-03-27 01:26:13 -04:00
parent 0529fa7d01
commit a581425a64
6 changed files with 52 additions and 31 deletions

View file

@ -14,6 +14,8 @@ setup(
data_files=[('config', ['config/conf.json',])], data_files=[('config', ['config/conf.json',])],
include_package_data=True, include_package_data=True,
install_requires=[ install_requires=[
'mysql-connector-python',
'pyyaml',
'Faker>=1.0.7', 'Faker>=1.0.7',
'asyncio>=3.4.3', 'asyncio>=3.4.3',
'aiohttp==3.5.4', 'aiohttp==3.5.4',
@ -24,5 +26,6 @@ setup(
'PyNaCl>=1.3.0', 'PyNaCl>=1.3.0',
'requests', 'requests',
'cython', 'cython',
'peewee'
] ]
) )

7
src/definitions.py Normal file
View file

@ -0,0 +1,7 @@
import os
SRC_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT_DIR = os.path.dirname(SRC_DIR)
CONFIG_FILE = os.path.join(ROOT_DIR, 'config', 'conf.json')
LOGGING_DIR = os.path.join(ROOT_DIR, 'logs')
DATABASE_DIR = os.path.join(ROOT_DIR, 'database')

View file

@ -1,13 +1,20 @@
import argparse import argparse
import json
import yaml
import logging import logging
import logging.config import logging.config
import os
import sys import sys
from src.server.app import run_app from src.server.app import run_app
from src.settings import config from src.definitions import LOGGING_DIR, CONFIG_FILE, DATABASE_DIR
def config_logging_from_settings(conf): def setup_logging_from_config(conf: dict):
# set the logging directory here from the settings file
if not os.path.exists(LOGGING_DIR):
os.mkdir(LOGGING_DIR)
_config = { _config = {
"version": 1, "version": 1,
"disable_existing_loggers": False, "disable_existing_loggers": False,
@ -32,7 +39,7 @@ def config_logging_from_settings(conf):
"level": "DEBUG", "level": "DEBUG",
"formatter": "standard", "formatter": "standard",
"class": "logging.handlers.RotatingFileHandler", "class": "logging.handlers.RotatingFileHandler",
"filename": conf['path']['debug_log'], "filename": os.path.join(LOGGING_DIR, 'debug.log'),
"maxBytes": 10485760, "maxBytes": 10485760,
"backupCount": 5 "backupCount": 5
}, },
@ -40,7 +47,7 @@ def config_logging_from_settings(conf):
"level": "ERROR", "level": "ERROR",
"formatter": "standard", "formatter": "standard",
"class": "logging.handlers.RotatingFileHandler", "class": "logging.handlers.RotatingFileHandler",
"filename": conf['path']['error_log'], "filename": os.path.join(LOGGING_DIR, 'error.log'),
"maxBytes": 10485760, "maxBytes": 10485760,
"backupCount": 5 "backupCount": 5
}, },
@ -48,7 +55,7 @@ def config_logging_from_settings(conf):
"level": "NOTSET", "level": "NOTSET",
"formatter": "aiohttp", "formatter": "aiohttp",
"class": "logging.handlers.RotatingFileHandler", "class": "logging.handlers.RotatingFileHandler",
"filename": conf['path']['server_log'], "filename": os.path.join(LOGGING_DIR, 'server.log'),
"maxBytes": 10485760, "maxBytes": 10485760,
"backupCount": 5 "backupCount": 5
} }
@ -70,15 +77,36 @@ def config_logging_from_settings(conf):
logging.config.dictConfig(_config) logging.config.dictConfig(_config)
def get_config(filepath):
with open(filepath, 'r') as cfile:
config = yaml.load(cfile, Loader=yaml.FullLoader)
return config
def setup_db_from_config(config: dict):
if 'sqlite' in config['database']:
if not os.path.exists(DATABASE_DIR):
os.mkdir(DATABASE_DIR)
config['db_path'] = os.path.join(
DATABASE_DIR, config['database']['sqlite']
)
def main(argv=None): def main(argv=None):
argv = argv or sys.argv[1:] argv = argv or sys.argv[1:]
parser = argparse.ArgumentParser(description='LBRY Comment Server') parser = argparse.ArgumentParser(description='LBRY Comment Server')
parser.add_argument('--port', type=int) parser.add_argument('--port', type=int)
parser.add_argument('--config', type=str)
args = parser.parse_args(argv) args = parser.parse_args(argv)
config_logging_from_settings(config)
config = get_config(CONFIG_FILE) if not args.config else args.config
setup_logging_from_config(config)
setup_db_from_config(config)
if args.port: if args.port:
config['port'] = args.port config['port'] = args.port
config_logging_from_settings(config)
run_app(config) run_app(config)

View file

@ -75,12 +75,9 @@ class CommentDaemon:
self.config = app['config'] self.config = app['config']
# configure the db file # configure the db file
if db_file: app['db_path'] = db_file or config.get('db_path')
app['db_path'] = db_file if app['db_path']:
app['backup'] = backup app['backup'] = backup or '.'.join((app['db_path'], 'backup'))
else:
app['db_path'] = config['path']['database']
app['backup'] = backup or (app['db_path'] + '.backup')
# configure the order of tasks to run during app lifetime # configure the order of tasks to run during app lifetime
app.on_startup.append(setup_db_schema) app.on_startup.append(setup_db_schema)

View file

@ -1,17 +0,0 @@
# cython: language_level=3
import json
import pathlib
root_dir = pathlib.Path(__file__).parent.parent
config_path = root_dir / 'config' / 'conf.json'
def get_config(filepath):
with open(filepath, 'r') as cfile:
conf = json.load(cfile)
for key, path in conf['path'].items():
conf['path'][key] = str(root_dir / path)
return conf
config = get_config(config_path)

View file

@ -9,13 +9,16 @@ from faker.providers import internet
from faker.providers import lorem from faker.providers import lorem
from faker.providers import misc from faker.providers import misc
from src.settings import config from src.main import get_config, CONFIG_FILE
from src.server import app from src.server import app
from src.server.validation import is_valid_base_comment from src.server.validation import is_valid_base_comment
from test.testcase import AsyncioTestCase from test.testcase import AsyncioTestCase
config = get_config(CONFIG_FILE)
if 'slack_webhook' in config: if 'slack_webhook' in config:
config.pop('slack_webhook') config.pop('slack_webhook')