refactoring

This commit is contained in:
Devaev Maxim 2021-01-23 07:00:49 +03:00
parent ebe40697a5
commit 4d4fb69d2e
9 changed files with 34 additions and 32 deletions

View File

@ -34,6 +34,7 @@ from ....logging import get_logger
from ....yamlconf import Section
from ....yamlconf.loader import load_yaml_file
from .... import tools
from .... import aiotools
from .base import BaseInfoSubmanager
@ -98,5 +99,5 @@ class ExtrasInfoSubmanager(BaseInfoSubmanager):
return (enabled or (manager.GetUnitFileState(name) in ["enabled", "enabled-runtime", "static", "indirect", "generated"]))
except Exception as err:
get_logger(0).error("Can't get info about the service %r: %s: %s", name, type(err).__name__, err)
get_logger(0).error("Can't get info about the service %r: %s", name, tools.efmt(err))
return True

View File

@ -325,7 +325,7 @@ class Streamer: # pylint: disable=too-many-instance-attributes
return snapshot
logger.error("Stream is offline, no signal or so")
except (aiohttp.ClientConnectionError, aiohttp.ServerConnectionError) as err:
logger.error("Can't connect to streamer: %s: %s", type(err).__name__, err)
logger.error("Can't connect to streamer: %s", tools.efmt(err))
except Exception:
logger.exception("Invalid streamer response from /snapshot")
return None

View File

@ -50,6 +50,8 @@ from ...clients.streamer import BaseStreamerClient
from ...clients.streamer import StreamerHttpClient
from ...clients.streamer import StreamerMemsinkClient
from ... import tools
from .rfb import RfbClient
from .rfb.stream import rfb_format_remote
from .rfb.stream import rfb_close_writer
@ -397,7 +399,7 @@ class VncServer: # pylint: disable=too-many-instance-attributes
async with kvmd.make_session("", "") as kvmd_session:
none_auth_only = await kvmd_session.auth.check()
except (aiohttp.ClientError, asyncio.TimeoutError) as err:
logger.error("[entry] %s: Can't check KVMD auth mode: %s: %s", remote, type(err).__name__, err)
logger.error("[entry] %s: Can't check KVMD auth mode: %s", remote, tools.efmt(err))
return
await _Client(

View File

@ -33,6 +33,7 @@ try:
except ImportError:
ustreamer = None
from .. import tools
from .. import aiotools
from .. import htclient
@ -119,7 +120,7 @@ class StreamerHttpClient(BaseStreamerClient):
except Exception as err: # Тут бывают и ассерты, и KeyError, и прочая херня
if isinstance(err, StreamerTempError):
raise
raise StreamerTempError(f"{type(err).__name__}: {err}")
raise StreamerTempError(tools.efmt(err))
raise StreamerTempError("Reached EOF")
def __make_http_session(self) -> aiohttp.ClientSession:
@ -165,6 +166,6 @@ class StreamerMemsinkClient(BaseStreamerClient):
if frame is not None:
yield (frame["online"], frame["width"], frame["height"], frame["data"])
except FileNotFoundError as err:
raise StreamerTempError(f"{type(err).__name__}: {err}")
raise StreamerTempError(tools.efmt(err))
except Exception as err:
raise StreamerPermError(f"{type(err).__name__}: {err}")
raise StreamerPermError(tools.efmt(err))

View File

@ -187,8 +187,7 @@ class BtServer: # pylint: disable=too-many-instance-attributes
elif data == b"\x71":
sock.send(b"\x00")
except Exception as err:
get_logger(0).exception("CTL socket error on %s: %s: %s",
client.addr, type(err).__name__, err)
get_logger(0).exception("CTL socket error on %s: %s", client.addr, tools.efmt(err))
self.__close_client("CTL", client, "ctl_sock")
continue
@ -202,8 +201,7 @@ class BtServer: # pylint: disable=too-many-instance-attributes
elif data[:2] == b"\xA2\x01":
self.__process_leds(data[2])
except Exception as err:
get_logger(0).exception("INT socket error on %s: %s: %s",
client.addr, type(err).__name__, err)
get_logger(0).exception("INT socket error on %s: %s", client.addr, tools.efmt(err))
self.__close_client("INT", client, "ctl_sock")
if qr in ready_read:
@ -286,8 +284,7 @@ class BtServer: # pylint: disable=too-many-instance-attributes
try:
client.int_sock.send(report)
except Exception as err:
get_logger(0).info("Can't send %s report to %s: %s: %s",
name, client.addr, type(err).__name__, err)
get_logger(0).info("Can't send %s report to %s: %s", name, client.addr, tools.efmt(err))
self.__close_client_pair(client)
def __clear_modifiers(self) -> None:
@ -379,7 +376,7 @@ class BtServer: # pylint: disable=too-many-instance-attributes
try:
self.__iface.set_public(public)
except Exception as err:
logger.error("Can't change public mode: %s: %s", type(err).__name__, err)
logger.error("Can't change public mode: %s", tools.efmt(err))
def __unpair_client(self, client: _BtClient) -> None:
logger = get_logger(0)
@ -387,4 +384,4 @@ class BtServer: # pylint: disable=too-many-instance-attributes
try:
self.__iface.unpair(client.addr)
except Exception as err:
logger.error("Can't unpair %s: %s: %s", client.addr, type(err).__name__, err)
logger.error("Can't unpair %s: %s", client.addr, tools.efmt(err))

View File

@ -167,8 +167,7 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in
err.errno == errno.EAGAIN # pylint: disable=no-member
or err.errno == errno.ESHUTDOWN # pylint: disable=no-member
):
logger.debug("HID-%s busy/unplugged (write): %s: %s",
self.__name, type(err).__name__, err)
logger.debug("HID-%s busy/unplugged (write): %s", self.__name, tools.efmt(err))
else:
logger.exception("Can't write report to HID-%s", self.__name)
@ -193,7 +192,7 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in
try:
read = bool(select.select([self.__fd], [], [], 0)[0])
except Exception as err:
logger.error("Can't select() for read HID-%s: %s: %s", self.__name, type(err).__name__, err)
logger.error("Can't select() for read HID-%s: %s", self.__name, tools.efmt(err))
break
if read:
@ -201,8 +200,7 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in
report = os.read(self.__fd, self.__read_size)
except Exception as err:
if isinstance(err, OSError) and err.errno == errno.EAGAIN: # pylint: disable=no-member
logger.debug("HID-%s busy/unplugged (read): %s: %s",
self.__name, type(err).__name__, err)
logger.debug("HID-%s busy/unplugged (read): %s", self.__name, tools.efmt(err))
else:
logger.exception("Can't read report from HID-%s", self.__name)
else:
@ -220,12 +218,8 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in
flags = os.O_NONBLOCK
flags |= (os.O_RDWR if self.__read_size else os.O_WRONLY)
self.__fd = os.open(self.__device_path, flags)
except FileNotFoundError:
logger.error("Missing HID-%s device: %s", self.__name, self.__device_path)
time.sleep(self.__reopen_delay)
except Exception as err:
logger.error("Can't open HID-%s device: %s: %s: %s",
self.__name, self.__device_path, type(err).__name__, err)
logger.error("Can't open HID-%s device %s: %s", self.__name, self.__device_path, tools.efmt(err))
time.sleep(self.__reopen_delay)
else:
time.sleep(self.__reopen_delay)
@ -238,7 +232,7 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in
else:
logger.debug("HID-%s is busy/unplugged (write select)", self.__name)
except Exception as err:
logger.error("Can't select() for write HID-%s: %s: %s", self.__name, type(err).__name__, err)
logger.error("Can't select() for write HID-%s: %s", self.__name, tools.efmt(err))
self.__close_device()
self.__state_flags.update(online=False)

View File

@ -25,6 +25,7 @@ import os
from ....logging import get_logger
from .... import env
from .... import tools
# =====
@ -47,7 +48,7 @@ class UsbDeviceController:
try:
candidates = sorted(os.listdir(path))
except Exception as err:
logger.error("Can't list %s: %s: %s: ignored", path, type(err).__name__, err)
logger.error("Can't list %s: %s: ignored", path, tools.efmt(err))
return
udc = ""

View File

@ -31,6 +31,7 @@ import hid
from ...logging import get_logger
from ... import tools
from ... import aiotools
from ...yamlconf import Option
@ -91,8 +92,8 @@ class Plugin(BaseUserGpioDriver):
with self.__ensure_device("probing"):
pass
except Exception as err:
logger.error("Can't probe %s on %s: %s: %s",
self, self.__device_path, type(err).__name__, err)
logger.error("Can't probe %s on %s: %s",
self, self.__device_path, tools.efmt(err))
self.__reset_pins()
async def run(self) -> None:
@ -135,8 +136,8 @@ class Plugin(BaseUserGpioDriver):
try:
self.__inner_write(pin, state)
except Exception as err:
logger.error("Can't reset pin=%d of %s on %s: %s: %s",
pin, self, self.__device_path, type(err).__name__, err)
logger.error("Can't reset pin=%d of %s on %s: %s",
pin, self, self.__device_path, tools.efmt(err))
def __inner_read(self, pin: int) -> bool:
if self.__check_pin(pin):
@ -173,8 +174,8 @@ class Plugin(BaseUserGpioDriver):
try:
yield self.__device
except Exception as err:
get_logger(0).error("Error occured on %s on %s while %s: %s: %s",
self, self.__device_path, context, type(err).__name__, err)
get_logger(0).error("Error occured on %s on %s while %s: %s",
self, self.__device_path, context, tools.efmt(err))
self.__close_device()
raise

View File

@ -32,6 +32,11 @@ from typing import Hashable
from typing import TypeVar
# =====
def efmt(err: Exception) -> str:
return f"{type(err).__name__}: {err}"
# =====
def merge(dest: Dict, src: Dict) -> None:
for key in src: