common logging.yaml

This commit is contained in:
Devaev Maxim 2018-11-14 20:34:46 +03:00
parent e97975fc15
commit b690dbce44
8 changed files with 61 additions and 78 deletions

View File

@ -5,12 +5,15 @@ TESTENV_LOOP ?= /dev/loop7
TESTENV_CMD ?= /bin/bash -c " \ TESTENV_CMD ?= /bin/bash -c " \
(socat PTY,link=$(TESTENV_HID) PTY,link=/dev/ttyS11 &) \ (socat PTY,link=$(TESTENV_HID) PTY,link=/dev/ttyS11 &) \
&& rm -rf /etc/nginx/* \ && rm -rf /etc/nginx/* \
&& cp -r /configs/nginx/* /etc/nginx \ && cp -r /usr/share/kvmd/configs/nginx/* /etc/nginx \
&& mkdir -p /etc/kvmd \
&& cp /usr/share/kvmd/configs/kvmd/logging.yaml /etc/kvmd/logging.yaml \
&& cp /testenv/kvmd.yaml /etc/kvmd \
&& nginx -c /etc/nginx/nginx.conf \ && nginx -c /etc/nginx/nginx.conf \
&& ln -s $(TESTENV_VIDEO) /dev/kvmd-streamer \ && ln -s $(TESTENV_VIDEO) /dev/kvmd-streamer \
&& (losetup -d /dev/kvmd-msd || true) \ && (losetup -d /dev/kvmd-msd || true) \
&& losetup /dev/kvmd-msd /root/loop.img \ && losetup /dev/kvmd-msd /root/loop.img \
&& python -m kvmd.apps.kvmd -c testenv/kvmd.yaml \ && python -m kvmd.apps.kvmd -c /etc/kvmd/kvmd.yaml \
" "
@ -29,8 +32,8 @@ run:
- docker run --rm \ - docker run --rm \
--volume `pwd`/kvmd:/kvmd:ro \ --volume `pwd`/kvmd:/kvmd:ro \
--volume `pwd`/web:/usr/share/kvmd/web:ro \ --volume `pwd`/web:/usr/share/kvmd/web:ro \
--volume `pwd`/configs:/usr/share/kvmd/configs:ro \
--volume `pwd`/testenv:/testenv:ro \ --volume `pwd`/testenv:/testenv:ro \
--volume `pwd`/configs:/configs:ro \
--device $(TESTENV_LOOP):/dev/kvmd-msd \ --device $(TESTENV_LOOP):/dev/kvmd-msd \
--device $(TESTENV_VIDEO):$(TESTENV_VIDEO) \ --device $(TESTENV_VIDEO):$(TESTENV_VIDEO) \
--publish 8080:80/tcp \ --publish 8080:80/tcp \

View File

@ -73,26 +73,4 @@ kvmd:
state_poll: 1.0 state_poll: 1.0
logging: logging: !include logging.yaml
version: 1
disable_existing_loggers: false
formatters:
console:
(): logging.Formatter
style: "{"
format: "{name:30.30} {levelname:>7} --- {message}"
handlers:
console:
level: DEBUG
class: logging.StreamHandler
stream: ext://sys.stdout
formatter: console
root:
level: INFO
handlers:
- console
# vim: syntax=yaml filetype=yaml

View File

@ -74,26 +74,4 @@ kvmd:
state_poll: 1.0 state_poll: 1.0
logging: logging: !include logging.yaml
version: 1
disable_existing_loggers: false
formatters:
console:
(): logging.Formatter
style: "{"
format: "{name:30.30} {levelname:>7} --- {message}"
handlers:
console:
level: DEBUG
class: logging.StreamHandler
stream: ext://sys.stdout
formatter: console
root:
level: INFO
handlers:
- console
# vim: syntax=yaml filetype=yaml

20
configs/kvmd/logging.yaml Normal file
View File

@ -0,0 +1,20 @@
version: 1
disable_existing_loggers: false
formatters:
console:
(): logging.Formatter
style: "{"
format: "{name:30.30} {levelname:>7} --- {message}"
handlers:
console:
level: DEBUG
class: logging.StreamHandler
stream: ext://sys.stdout
formatter: console
root:
level: INFO
handlers:
- console

View File

@ -1,10 +1,15 @@
import os
import argparse import argparse
import logging import logging
import logging.config import logging.config
from typing import Dict from typing import Dict
from typing import IO
from typing import Any
import yaml import yaml
import yaml.loader
import yaml.nodes
# ===== # =====
@ -13,10 +18,32 @@ def init() -> Dict:
parser.add_argument("-c", "--config", required=True, metavar="<path>") parser.add_argument("-c", "--config", required=True, metavar="<path>")
options = parser.parse_args() options = parser.parse_args()
with open(options.config) as config_file: config: Dict = _load_yaml_file(options.config)
config = yaml.load(config_file)
logging.captureWarnings(True) logging.captureWarnings(True)
logging.config.dictConfig(config["logging"]) logging.config.dictConfig(config["logging"])
return config["kvmd"] return config
# =====
def _load_yaml_file(path: str) -> Any:
with open(path) as yaml_file:
try:
return yaml.load(yaml_file, _YamlLoader)
except Exception:
# Reraise internal exception as standard ValueError and show the incorrect file
raise ValueError("Incorrect YAML syntax in file '{}'".format(path))
class _YamlLoader(yaml.loader.Loader): # pylint: disable=too-many-ancestors
def __init__(self, yaml_file: IO) -> None:
yaml.loader.Loader.__init__(self, yaml_file)
self.__root = os.path.dirname(yaml_file.name)
def include(self, node: yaml.nodes.Node) -> str:
path = os.path.join(self.__root, self.construct_scalar(node)) # pylint: disable=no-member
return _load_yaml_file(path)
_YamlLoader.add_constructor("!include", _YamlLoader.include) # pylint: disable=no-member

View File

@ -10,7 +10,7 @@ from ... import gpio
# ===== # =====
def main() -> None: def main() -> None:
config = init() config = init()["kvmd"]
logger = get_logger(0) logger = get_logger(0)
logger.info("Cleaning up ...") logger.info("Cleaning up ...")

View File

@ -17,7 +17,7 @@ from .server import Server
# ===== # =====
def main() -> None: def main() -> None:
config = init() config = init()["kvmd"]
with gpio.bcm(): with gpio.bcm():
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
http_session = aiohttp.ClientSession(loop=loop) http_session = aiohttp.ClientSession(loop=loop)

View File

@ -68,27 +68,4 @@ kvmd:
state_poll: 1.0 state_poll: 1.0
logging: logging: !include logging.yaml
version: 1
disable_existing_loggers: false
formatters:
console:
(): logging.Formatter
style: "{"
datefmt: "%H:%M:%S"
format: "[{asctime}] {name:30.30} {levelname:>7} --- {message}"
handlers:
console:
level: DEBUG
class: logging.StreamHandler
stream: ext://sys.stdout
formatter: console
root:
level: INFO
handlers:
- console
# vim: syntax=yaml filetype=yaml