Coverage for n2vc/exceptions.py: 75%
77 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-05-07 06:04 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-05-07 06:04 +0000
1# 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.
16class N2VCException(Exception):
17 """
18 N2VC exception base class
19 """
21 def __init__(self, message: str = ""):
22 Exception.__init__(self, message)
23 self.message = message
25 def __str__(self):
26 return self.message
28 def __repr__(self):
29 return "{}({})".format(type(self), self.message)
32class N2VCBadArgumentsException(N2VCException):
33 """
34 Bad argument values exception
35 """
37 def __init__(self, message: str = "", bad_args: list = None):
38 N2VCException.__init__(self, message=message)
39 self.bad_args = bad_args
41 def __str__(self):
42 return "<{}> Bad arguments: {} -> {}".format(
43 type(self), super().__str__(), self.bad_args
44 )
47class N2VCConnectionException(N2VCException):
48 """
49 Error connecting to VCA
50 """
52 def __init__(self, message: str = "", url: str = None):
53 N2VCException.__init__(self, message=message)
54 self.url = url
56 def __str__(self):
57 return "<{}> Connection to {} failed: {}".format(
58 type(self), self.url, super().__str__()
59 )
62class N2VCTimeoutException(N2VCException):
63 """
64 Timeout
65 """
67 def __init__(self, message: str = "", timeout: str = ""):
68 N2VCException.__init__(self, message=message)
69 self.timeout = timeout
71 def __str__(self):
72 return "<{}> {} timeout: {}".format(type(self), self.timeout, super().__str__())
75class N2VCExecutionException(N2VCException):
76 """
77 Error executing primitive
78 """
80 def __init__(self, message: str = "", primitive_name: str = ""):
81 N2VCException.__init__(self, message=message)
82 self.primitive_name = primitive_name
84 def __str__(self):
85 return "<{}> Error executing primitive {} failed: {}".format(
86 type(self), self.primitive_name, super().__str__()
87 )
90class N2VCInvalidCertificate(N2VCException):
91 """
92 Invalid certificate
93 """
95 def __init__(self, message: str = ""):
96 N2VCException.__init__(self, message=message)
98 def __str__(self):
99 return "<{}> Invalid certificate: {}".format(type(self), super().__str__())
102class N2VCNotFound(N2VCException):
103 """
104 Not found
105 """
107 def __init__(self, message: str = ""):
108 N2VCException.__init__(self, message=message)
110 def __str__(self):
111 return "<{}> Not found: {}".format(type(self), super().__str__())
114class N2VCApplicationExists(N2VCException):
115 """
116 Application Exists
117 """
119 def __init__(self, message: str = ""):
120 N2VCException.__init__(self, message=message)
122 def __str__(self):
123 return "<{}> Application Exists: {}".format(type(self), super().__str__())
126class JujuError(N2VCException):
127 """
128 Juju Error
129 """
131 def __init__(self, message: str = ""):
132 N2VCException.__init__(self, message=message)
134 def __str__(self):
135 return "<{}> Juju Error: {}".format(type(self), super().__str__())
138class K8sException(Exception):
139 """
140 K8s exception
141 """
143 def __init__(self, message: str):
144 Exception.__init__(self, message)
145 self._message = message
147 def __str__(self):
148 return self._message
150 def __repr__(self):
151 return self._message
154class EntityInvalidException(Exception):
155 """Entity is not valid, the type does not match any EntityType."""
158class JujuInvalidK8sConfiguration(N2VCException):
159 """Invalid K8s configuration."""
162class JujuCharmNotFound(N2VCException):
163 """The Charm can't be found or is not readable."""
166class JujuControllerFailedConnecting(N2VCException):
167 """Failed connecting to juju controller."""
170class JujuModelAlreadyExists(N2VCException):
171 """The model already exists."""
174class JujuApplicationExists(N2VCException):
175 """The Application already exists."""
178class JujuApplicationNotFound(N2VCException):
179 """The Application cannot be found."""
182class JujuLeaderUnitNotFound(N2VCException):
183 """The Application cannot be found."""
186class JujuActionNotFound(N2VCException):
187 """The Action cannot be found."""
190class JujuMachineNotFound(N2VCException):
191 """The machine cannot be found."""
194class JujuK8sProxycharmNotSupported(N2VCException):
195 """K8s Proxy Charms not supported in this installation."""
198class N2VCPrimitiveExecutionFailed(N2VCException):
199 """Something failed while attempting to execute a primitive."""
202class NetworkServiceDoesNotExist(N2VCException):
203 """The Network Service being acted against does not exist."""
206class PrimitiveDoesNotExist(N2VCException):
207 """The Primitive being executed does not exist."""
210class NoRouteToHost(N2VCException):
211 """There was no route to the specified host."""
214class AuthenticationFailed(N2VCException):
215 """The authentication for the specified user failed."""
218class MethodNotImplemented(N2VCException):
219 """The method is not implemented."""