Newer
Older
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
P4 driver exceptions.
"""
class UserError(Exception):
"""
User error exception.
"""
def __init__(self, info=""):
super().__init__()
self.info = info
def __str__(self):
return self.info
# TODO: find better way to get a custom traceback # pylint: disable=W0511
def _render_traceback_(self):
return [str(self)]
class InvalidP4InfoError(Exception):
"""
Invalid P4 info exception.
"""
def __init__(self, info=""):
super().__init__()
self.info = info
def __str__(self):
return f"Invalid P4Info message: {self.info}"
def _render_traceback_(self):
return [str(self)]
class UnknownOptionName(UserError):
"""
Unknown option name exception.
"""
def __init__(self, option_name):
super().__init__()
self.option_name = option_name
def __str__(self):
return f"Unknown option name: {self.option_name}"
class InvalidOptionValueType(UserError):
"""
Invalid option value type exception.
"""
def __init__(self, option, value):
super().__init__()
self.option = option
self.value = value
def __str__(self):
return f"Invalid value type for option {self.option.name}. "\
"Expected {self.option.value.__name__} but got "\
"value {self.value} with type {type(self.value).__name__}"
class UserBadIPv4Error(UserError):
"""
Invalid IPv4 address value exception.
"""
def __init__(self, addr):
super().__init__()
self.addr = addr
def __str__(self):
return f"{self.addr}' is not a valid IPv4 address"
def _render_traceback_(self):
return [str(self)]
class UserBadIPv6Error(UserError):
"""
Invalid IPv6 address value exception.
"""
def __init__(self, addr):
super().__init__()
self.addr = addr
def __str__(self):
return f"'{self.addr}' is not a valid IPv6 address"
def _render_traceback_(self):
return [str(self)]
class UserBadMacError(UserError):
"""
Invalid MAC address value exception.
"""
def __init__(self, addr):
super().__init__()
self.addr = addr
def __str__(self):
return f"'{self.addr}' is not a valid MAC address"
def _render_traceback_(self):
return [str(self)]
class UserBadValueError(UserError):
"""
Invalid value exception.
"""
def __init__(self, info=""):
super().__init__()
self.info = info
def __str__(self):
return self.info
def _render_traceback_(self):
return [str(self)]