automatic choosing journald services

This commit is contained in:
Devaev Maxim 2018-11-17 11:20:10 +03:00
parent 0bf39f56e2
commit 43f161f9c4
5 changed files with 11 additions and 27 deletions

View File

@ -10,11 +10,6 @@ kvmd:
info:
meta: /etc/kvmd/meta.yaml
log:
services:
- kvmd.service
- kvmd-tc358743.service
hid:
pinout:
reset: 4

View File

@ -10,11 +10,6 @@ kvmd:
info:
meta: /etc/kvmd/meta.yaml
log:
services:
- kvmd.service
- kvmd-tc358743.service
hid:
pinout:
reset: 4

View File

@ -22,10 +22,7 @@ def main() -> None:
loop = asyncio.get_event_loop()
http_session = aiohttp.ClientSession(loop=loop)
log = Log(
services=list(config["log"]["services"]),
loop=loop,
)
log = Log(loop)
hid = Hid(
reset=int(config["hid"]["pinout"]["reset"]),

View File

@ -1,9 +1,9 @@
import sys
import re
import asyncio
import logging
import time
from typing import List
from typing import Dict
from typing import AsyncGenerator
@ -24,13 +24,7 @@ def get_logger(depth: int=1) -> logging.Logger:
class Log:
def __init__(
self,
services: List[str],
loop: asyncio.AbstractEventLoop,
) -> None:
self.__services = services
def __init__(self, loop: asyncio.AbstractEventLoop) -> None:
self.__loop = loop
async def poll_log(self, seek: int, follow: bool) -> AsyncGenerator[Dict, None]:
@ -38,7 +32,14 @@ class Log:
reader.this_boot()
reader.this_machine()
reader.log_level(systemd.journal.LOG_DEBUG)
for service in self.__services:
services = set(
service
for service in systemd.journal.Reader().query_unique("_SYSTEMD_UNIT")
if re.match(r"kvmd(-\w+)?\.service", service)
).union(["kvmd.service"])
for service in services:
reader.add_match(_SYSTEMD_UNIT=service)
if seek > 0:
reader.seek_realtime(float(time.time() - seek))

View File

@ -7,10 +7,6 @@ kvmd:
info:
meta: /etc/kvmd/meta.yaml
log:
services:
- kvmd.service
hid:
pinout:
reset: 4