/
exceptions.py
119 lines (91 loc) · 3.92 KB
/
exceptions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
# +------------------------------------------------------------------+
# | ____ _ _ __ __ _ __ |
# | / ___| |__ ___ ___| | __ | \/ | |/ / |
# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
# | | |___| | | | __/ (__| < | | | | . \ |
# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
# | |
# | Copyright Mathias Kettner 2014 mk@mathias-kettner.de |
# +------------------------------------------------------------------+
#
# This file is part of Check_MK.
# The official homepage is at http://mathias-kettner.de/check_mk.
#
# check_mk 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 in version 2. check_mk is distributed
# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more de-
# tails. You should have received a copy of the GNU General Public
# License along with GNU Make; see the file COPYING. If not, write
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
import httplib
from typing import Optional, Text # pylint: disable=unused-import
from werkzeug.http import HTTP_STATUS_CODES
from cmk.gui.i18n import _
from cmk.utils.exceptions import MKGeneralException, MKException, MKTimeout
class RequestTimeout(MKTimeout):
"""Is raised from the alarm signal handler (handle_request_timeout()) to
abort page processing before the system apache times out."""
pass
class FinalizeRequest(Exception):
"""Is used to end the HTTP request processing from deeper code levels"""
def __init__(self, code):
# type: (int) -> None
super(FinalizeRequest, self).__init__("%d %s" % (code, HTTP_STATUS_CODES[code]))
self.status = code
class HTTPRedirect(FinalizeRequest):
"""Is used to end the HTTP request processing from deeper code levels
and making the client request another page after receiving the response."""
def __init__(self, url):
# type: (str) -> None
super(HTTPRedirect, self).__init__(httplib.FOUND)
self.url = url #type: str
class MKAuthException(MKException):
def __init__(self, reason):
# type: (str) -> None
self.reason = reason # type: str
super(MKAuthException, self).__init__(reason)
def __str__(self):
# type: () -> str
return self.reason
def title(self):
# type: () -> unicode
return _("Permission denied")
def plain_title(self):
# type: () -> unicode
return _("Authentication error")
class MKUnauthenticatedException(MKGeneralException):
def title(self):
# type: () -> unicode
return _("Not authenticated")
def plain_title(self):
# type: () -> unicode
return _("Missing authentication credentials")
class MKConfigError(MKException):
def title(self):
# type: () -> unicode
return _("Configuration error")
def plain_title(self):
# type: () -> unicode
return self.title()
class MKUserError(MKException):
def __init__(self, varname, message):
# type: (Optional[str], Text) -> None
self.varname = varname # type: Optional[str]
self.message = message # type: Text
super(MKUserError, self).__init__(varname, message)
def __str__(self):
return self.message
def title(self):
# type: () -> Text
return _("Invalid User Input")
def plain_title(self):
# type: () -> Text
return _("User error")
class MKInternalError(MKException):
pass