summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2019-12-09 02:26:48 +0300
committerDevaev Maxim <[email protected]>2019-12-09 02:26:48 +0300
commit3048fc79233f1ece909dee0f100e72a2f3f5a639 (patch)
tree834e0ab68541ecf0f58a4100f90ca0836b6f9bf5
parentdd52a85cf6c21c5a7743acad152d8378f1ae0ef4 (diff)
very common exceptions
-rw-r--r--kvmd/apps/kvmd/server.py15
-rw-r--r--kvmd/apps/kvmd/wol.py4
-rw-r--r--kvmd/errors.py28
-rw-r--r--kvmd/plugins/atx/__init__.py7
-rw-r--r--kvmd/plugins/msd/__init__.py15
-rw-r--r--kvmd/plugins/msd/otg/__init__.py2
-rw-r--r--kvmd/plugins/msd/relay.py2
7 files changed, 52 insertions, 21 deletions
diff --git a/kvmd/apps/kvmd/server.py b/kvmd/apps/kvmd/server.py
index cd687918..70d02582 100644
--- a/kvmd/apps/kvmd/server.py
+++ b/kvmd/apps/kvmd/server.py
@@ -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)
diff --git a/kvmd/apps/kvmd/wol.py b/kvmd/apps/kvmd/wol.py
index 40c40d1d..ea62aea1 100644
--- a/kvmd/apps/kvmd/wol.py
+++ b/kvmd/apps/kvmd/wol.py
@@ -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")
diff --git a/kvmd/errors.py b/kvmd/errors.py
new file mode 100644
index 00000000..8103b16c
--- /dev/null
+++ b/kvmd/errors.py
@@ -0,0 +1,28 @@
+# ========================================================================== #
+# #
+# KVMD - The main Pi-KVM daemon. #
+# #
+# Copyright (C) 2018 Maxim Devaev <[email protected]> #
+# #
+# 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
diff --git a/kvmd/plugins/atx/__init__.py b/kvmd/plugins/atx/__init__.py
index a593929e..b536ef87 100644
--- a/kvmd/plugins/atx/__init__.py
+++ b/kvmd/plugins/atx/__init__.py
@@ -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")
diff --git a/kvmd/plugins/msd/__init__.py b/kvmd/plugins/msd/__init__.py
index f43a40c2..95c0f0d0 100644
--- a/kvmd/plugins/msd/__init__.py
+++ b/kvmd/plugins/msd/__init__.py
@@ -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")
diff --git a/kvmd/plugins/msd/otg/__init__.py b/kvmd/plugins/msd/otg/__init__.py
index d8a5e9b7..41e1653f 100644
--- a/kvmd/plugins/msd/otg/__init__.py
+++ b/kvmd/plugins/msd/otg/__init__.py
@@ -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
diff --git a/kvmd/plugins/msd/relay.py b/kvmd/plugins/msd/relay.py
index 1bec7d48..4e621cc2 100644
--- a/kvmd/plugins/msd/relay.py
+++ b/kvmd/plugins/msd/relay.py
@@ -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