summaryrefslogtreecommitdiff
path: root/quantumclient/common/exceptions.py
diff options
context:
space:
mode:
authorMaru Newby <mnewby@internap.com>2012-04-11 02:20:57 -0700
committerMaru Newby <mnewby@internap.com>2012-04-24 14:14:52 -0700
commit05c5a2b4a9b0eb9c0bf88cd81390c7bc906bd289 (patch)
tree529385294ddb9077cf5d3c7e7819939271222389 /quantumclient/common/exceptions.py
parent9b09f53a158a6184a560190b0d26293dcc1a44a6 (diff)
downloadpython-neutronclient-05c5a2b4a9b0eb9c0bf88cd81390c7bc906bd289.tar.gz
Remove server-specific functionality.
* Moved server-specific functionality found in quantum.common to the quantum repo. * Renamed primary package from quantum -> quantumclient. * Addresses bug 977711 and bug 921933 Change-Id: If34553924c8dfcc6b148c1d91f173a4b81eeb95a
Diffstat (limited to 'quantumclient/common/exceptions.py')
-rw-r--r--quantumclient/common/exceptions.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/quantumclient/common/exceptions.py b/quantumclient/common/exceptions.py
new file mode 100644
index 0000000..33526c2
--- /dev/null
+++ b/quantumclient/common/exceptions.py
@@ -0,0 +1,122 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 Nicira Networks, Inc
+# All Rights Reserved.
+#
+# 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.
+
+"""
+Quantum base exception handling.
+"""
+
+
+class QuantumException(Exception):
+ """Base Quantum Exception
+
+ Taken from nova.exception.NovaException
+ To correctly use this class, inherit from it and define
+ a 'message' property. That message will get printf'd
+ with the keyword arguments provided to the constructor.
+
+ """
+ message = _("An unknown exception occurred.")
+
+ def __init__(self, **kwargs):
+ try:
+ self._error_string = self.message % kwargs
+
+ except Exception:
+ # at least get the core message out if something happened
+ self._error_string = self.message
+
+ def __str__(self):
+ return self._error_string
+
+
+class NotFound(QuantumException):
+ pass
+
+
+class QuantumClientException(QuantumException):
+
+ def __init__(self, **kwargs):
+ message = kwargs.get('message')
+ if message:
+ self.message = message
+ super(QuantumClientException, self).__init__(**kwargs)
+
+
+# NOTE: on the client side, we use different exception types in order
+# to allow client library users to handle server exceptions in try...except
+# blocks. The actual error message is the one generated on the server side
+class NetworkNotFoundClient(QuantumClientException):
+ pass
+
+
+class PortNotFoundClient(QuantumClientException):
+ pass
+
+
+class MalformedResponseBody(QuantumException):
+ message = _("Malformed response body: %(reason)s")
+
+
+class StateInvalidClient(QuantumClientException):
+ pass
+
+
+class NetworkInUseClient(QuantumClientException):
+ pass
+
+
+class PortInUseClient(QuantumClientException):
+ pass
+
+
+class AlreadyAttachedClient(QuantumClientException):
+ pass
+
+
+class NotAuthorized(QuantumClientException):
+ pass
+
+
+class QuantumCLIError(QuantumClientException):
+ """ Exception raised when command line parsing fails """
+ pass
+
+
+class ConnectionFailed(QuantumClientException):
+ message = _("Connection to quantum failed: %(reason)s")
+
+
+class BadInputError(Exception):
+ """Error resulting from a client sending bad input to a server"""
+ pass
+
+
+class Error(Exception):
+ def __init__(self, message=None):
+ super(Error, self).__init__(message)
+
+
+class MalformedRequestBody(QuantumException):
+ message = _("Malformed request body: %(reason)s")
+
+
+class Invalid(Error):
+ pass
+
+
+class InvalidContentType(Invalid):
+ message = _("Invalid content type %(content_type)s.")