very common exceptions

This commit is contained in:
Devaev Maxim 2019-12-09 02:26:48 +03:00
parent dd52a85cf6
commit 3048fc7923
7 changed files with 52 additions and 21 deletions

View File

@ -42,16 +42,13 @@ import setproctitle
from ...logging import get_logger
from ...errors import OperationError
from ...errors import IsBusyError
from ...plugins import BasePlugin
from ...plugins.hid import BaseHid
from ...plugins.atx import AtxOperationError
from ...plugins.atx import AtxIsBusyError
from ...plugins.atx import BaseAtx
from ...plugins.msd import MsdOperationError
from ...plugins.msd import MsdIsBusyError
from ...plugins.msd import BaseMsd
from ...validators import ValidatorError
@ -71,8 +68,6 @@ from .auth import AuthManager
from .info import InfoManager
from .logreader import LogReader
from .streamer import Streamer
from .wol import WolDisabledError
from .wol import WakeOnLan
from .http import UnauthorizedError
@ -337,9 +332,9 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
return (await exposed.handler(request))
except (AtxIsBusyError, MsdIsBusyError) as err:
except IsBusyError as err:
return make_json_exception(err, 409)
except (ValidatorError, AtxOperationError, MsdOperationError, WolDisabledError) as err:
except (ValidatorError, OperationError) as err:
return make_json_exception(err, 400)
except UnauthorizedError as err:
return make_json_exception(err, 401)

View File

@ -27,11 +27,13 @@ from typing import Optional
from ...logging import get_logger
from ...errors import OperationError
from ... import aiotools
# =====
class WolDisabledError(Exception):
class WolDisabledError(OperationError):
def __init__(self) -> None:
super().__init__("WoL is disabled")

28
kvmd/errors.py Normal file
View File

@ -0,0 +1,28 @@
# ========================================================================== #
# #
# KVMD - The main Pi-KVM daemon. #
# #
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
# #
# ========================================================================== #
class OperationError(Exception):
pass
class IsBusyError(Exception):
pass

View File

@ -24,6 +24,9 @@ from typing import Dict
from typing import AsyncGenerator
from typing import Type
from ...errors import OperationError
from ...errors import IsBusyError
from .. import BasePlugin
from .. import get_plugin_class
@ -33,11 +36,11 @@ class AtxError(Exception):
pass
class AtxOperationError(AtxError):
class AtxOperationError(OperationError, AtxError):
pass
class AtxIsBusyError(AtxOperationError):
class AtxIsBusyError(IsBusyError, AtxError):
def __init__(self) -> None:
super().__init__("Performing another ATX operation, please try again later")

View File

@ -27,6 +27,9 @@ from typing import Type
from typing import AsyncGenerator
from typing import Optional
from ...errors import OperationError
from ...errors import IsBusyError
from .. import BasePlugin
from .. import get_plugin_class
@ -36,10 +39,15 @@ class MsdError(Exception):
pass
class MsdOperationError(MsdError):
class MsdOperationError(OperationError, MsdError):
pass
class MsdIsBusyError(IsBusyError, MsdError):
def __init__(self) -> None:
super().__init__("Performing another MSD operation, please try again later")
class MsdOfflineError(MsdOperationError):
def __init__(self) -> None:
super().__init__("MSD is not found")
@ -70,11 +78,6 @@ class MsdImageExistsError(MsdOperationError):
super().__init__("This image is already exists")
class MsdIsBusyError(MsdOperationError):
def __init__(self) -> None:
super().__init__("Performing another MSD operation, please try again later")
class MsdMultiNotSupported(MsdOperationError):
def __init__(self) -> None:
super().__init__("This MSD does not support storing multiple images")

View File

@ -48,13 +48,13 @@ from .... import aiotools
from .... import aioregion
from .. import MsdError
from .. import MsdIsBusyError
from .. import MsdOfflineError
from .. import MsdConnectedError
from .. import MsdDisconnectedError
from .. import MsdImageNotSelected
from .. import MsdUnknownImageError
from .. import MsdImageExistsError
from .. import MsdIsBusyError
from .. import BaseMsd
from . import fs

View File

@ -53,10 +53,10 @@ from ...validators.os import valid_abs_path
from ...validators.hw import valid_gpio_pin
from . import MsdError
from . import MsdIsBusyError
from . import MsdOfflineError
from . import MsdConnectedError
from . import MsdDisconnectedError
from . import MsdIsBusyError
from . import MsdMultiNotSupported
from . import MsdCdromNotSupported
from . import BaseMsd