blob: 9867cb99f2997e3f1afbd854bbaa2190fb6c538c [file] [log] [blame]
almagiacdd20ae2024-12-13 09:45:45 +01001# Copyright 2019 Canonical Ltd.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15
16class N2VCException(Exception):
17 """
18 N2VC exception base class
19 """
20
21 def __init__(self, message: str = ""):
22 Exception.__init__(self, message)
23 self.message = message
24
25 def __str__(self):
26 return self.message
27
28 def __repr__(self):
29 return "{}({})".format(type(self), self.message)
30
31
32class N2VCBadArgumentsException(N2VCException):
33 """
34 Bad argument values exception
35 """
36
37 def __init__(self, message: str = "", bad_args: list = None):
38 N2VCException.__init__(self, message=message)
39 self.bad_args = bad_args
40
41 def __str__(self):
42 return "<{}> Bad arguments: {} -> {}".format(
43 type(self), super().__str__(), self.bad_args
44 )
45
46
47class N2VCConnectionException(N2VCException):
48 """
49 Error connecting to VCA
50 """
51
52 def __init__(self, message: str = "", url: str = None):
53 N2VCException.__init__(self, message=message)
54 self.url = url
55
56 def __str__(self):
57 return "<{}> Connection to {} failed: {}".format(
58 type(self), self.url, super().__str__()
59 )
60
61
62class N2VCTimeoutException(N2VCException):
63 """
64 Timeout
65 """
66
67 def __init__(self, message: str = "", timeout: str = ""):
68 N2VCException.__init__(self, message=message)
69 self.timeout = timeout
70
71 def __str__(self):
72 return "<{}> {} timeout: {}".format(type(self), self.timeout, super().__str__())
73
74
75class N2VCExecutionException(N2VCException):
76 """
77 Error executing primitive
78 """
79
80 def __init__(self, message: str = "", primitive_name: str = ""):
81 N2VCException.__init__(self, message=message)
82 self.primitive_name = primitive_name
83
84 def __str__(self):
85 return "<{}> Error executing primitive {} failed: {}".format(
86 type(self), self.primitive_name, super().__str__()
87 )
88
89
90class N2VCInvalidCertificate(N2VCException):
91 """
92 Invalid certificate
93 """
94
95 def __init__(self, message: str = ""):
96 N2VCException.__init__(self, message=message)
97
98 def __str__(self):
99 return "<{}> Invalid certificate: {}".format(type(self), super().__str__())
100
101
102class N2VCNotFound(N2VCException):
103 """
104 Not found
105 """
106
107 def __init__(self, message: str = ""):
108 N2VCException.__init__(self, message=message)
109
110 def __str__(self):
111 return "<{}> Not found: {}".format(type(self), super().__str__())
112
113
114class N2VCApplicationExists(N2VCException):
115 """
116 Application Exists
117 """
118
119 def __init__(self, message: str = ""):
120 N2VCException.__init__(self, message=message)
121
122 def __str__(self):
123 return "<{}> Application Exists: {}".format(type(self), super().__str__())
124
125
126class JujuError(N2VCException):
127 """
128 Juju Error
129 """
130
131 def __init__(self, message: str = ""):
132 N2VCException.__init__(self, message=message)
133
134 def __str__(self):
135 return "<{}> Juju Error: {}".format(type(self), super().__str__())
136
137
138class K8sException(Exception):
139 """
140 K8s exception
141 """
142
143 def __init__(self, message: str):
144 Exception.__init__(self, message)
145 self._message = message
146
147 def __str__(self):
148 return self._message
149
150 def __repr__(self):
151 return self._message
152
153
154class EntityInvalidException(Exception):
155 """Entity is not valid, the type does not match any EntityType."""
156
157
158class JujuInvalidK8sConfiguration(N2VCException):
159 """Invalid K8s configuration."""
160
161
162class JujuCharmNotFound(N2VCException):
163 """The Charm can't be found or is not readable."""
164
165
166class JujuControllerFailedConnecting(N2VCException):
167 """Failed connecting to juju controller."""
168
169
170class JujuModelAlreadyExists(N2VCException):
171 """The model already exists."""
172
173
174class JujuApplicationExists(N2VCException):
175 """The Application already exists."""
176
177
178class JujuApplicationNotFound(N2VCException):
179 """The Application cannot be found."""
180
181
182class JujuLeaderUnitNotFound(N2VCException):
183 """The Application cannot be found."""
184
185
186class JujuActionNotFound(N2VCException):
187 """The Action cannot be found."""
188
189
190class JujuMachineNotFound(N2VCException):
191 """The machine cannot be found."""
192
193
194class JujuK8sProxycharmNotSupported(N2VCException):
195 """K8s Proxy Charms not supported in this installation."""
196
197
198class N2VCPrimitiveExecutionFailed(N2VCException):
199 """Something failed while attempting to execute a primitive."""
200
201
202class NetworkServiceDoesNotExist(N2VCException):
203 """The Network Service being acted against does not exist."""
204
205
206class PrimitiveDoesNotExist(N2VCException):
207 """The Primitive being executed does not exist."""
208
209
210class NoRouteToHost(N2VCException):
211 """There was no route to the specified host."""
212
213
214class AuthenticationFailed(N2VCException):
215 """The authentication for the specified user failed."""
216
217
218class MethodNotImplemented(N2VCException):
219 """The method is not implemented."""