Add credential_name option for add_k8s() and add_cloud()
[osm/N2VC.git] / n2vc / exceptions.py
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.
14
15
16 class 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
32 class 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
47 class 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
62 class 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
75 class 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
90 class 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
102 class 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
114 class K8sException(Exception):
115 """
116 K8s exception
117 """
118
119 def __init__(self, message: str):
120 Exception.__init__(self, message)
121 self._message = message
122
123 def __str__(self):
124 return self._message
125
126 def __repr__(self):
127 return self._message
128
129
130 class EntityInvalidException(Exception):
131 """Entity is not valid, the type does not match any EntityType."""
132
133
134 class JujuInvalidK8sConfiguration(N2VCException):
135 """Invalid K8s configuration."""
136
137
138 class JujuCharmNotFound(N2VCException):
139 """The Charm can't be found or is not readable."""
140
141
142 class JujuControllerFailedConnecting(N2VCException):
143 """Failed connecting to juju controller."""
144
145
146 class JujuModelAlreadyExists(N2VCException):
147 """The model already exists."""
148
149
150 class JujuApplicationExists(N2VCException):
151 """The Application already exists."""
152
153
154 class JujuApplicationNotFound(N2VCException):
155 """The Application cannot be found."""
156
157
158 class JujuLeaderUnitNotFound(N2VCException):
159 """The Application cannot be found."""
160
161
162 class JujuActionNotFound(N2VCException):
163 """The Action cannot be found."""
164
165
166 class JujuMachineNotFound(N2VCException):
167 """The machine cannot be found."""
168
169
170 class JujuK8sProxycharmNotSupported(N2VCException):
171 """K8s Proxy Charms not supported in this installation."""
172
173
174 class N2VCPrimitiveExecutionFailed(N2VCException):
175 """Something failed while attempting to execute a primitive."""
176
177
178 class NetworkServiceDoesNotExist(N2VCException):
179 """The Network Service being acted against does not exist."""
180
181
182 class PrimitiveDoesNotExist(N2VCException):
183 """The Primitive being executed does not exist."""
184
185
186 class NoRouteToHost(N2VCException):
187 """There was no route to the specified host."""
188
189
190 class AuthenticationFailed(N2VCException):
191 """The authentication for the specified user failed."""
192
193
194 class MethodNotImplemented(N2VCException):
195 """The method is not implemented."""