summaryrefslogtreecommitdiffstats
path: root/openstack
diff options
context:
space:
mode:
Diffstat (limited to 'openstack')
-rw-r--r--openstack/common/db/sqlalchemy/utils.py12
-rw-r--r--openstack/common/deprecated/wsgi.py31
-rw-r--r--openstack/common/exception.py139
-rw-r--r--openstack/common/rpc/__init__.py3
4 files changed, 29 insertions, 156 deletions
diff --git a/openstack/common/db/sqlalchemy/utils.py b/openstack/common/db/sqlalchemy/utils.py
index 64edec2..102f0e5 100644
--- a/openstack/common/db/sqlalchemy/utils.py
+++ b/openstack/common/db/sqlalchemy/utils.py
@@ -40,7 +40,6 @@ from sqlalchemy.types import NullType
from openstack.common.gettextutils import _ # noqa
-from openstack.common import exception
from openstack.common import log as logging
from openstack.common import timeutils
@@ -186,6 +185,10 @@ def visit_insert_from_select(element, compiler, **kw):
compiler.process(element.select))
+class ColumnError(Exception):
+ """Error raised when no column or an invalid column is found."""
+
+
def _get_not_supported_column(col_name_col_instance, column_name):
try:
column = col_name_col_instance[column_name]
@@ -193,13 +196,13 @@ def _get_not_supported_column(col_name_col_instance, column_name):
msg = _("Please specify column %s in col_name_col_instance "
"param. It is required because column has unsupported "
"type by sqlite).")
- raise exception.OpenstackException(message=msg % column_name)
+ raise ColumnError(msg % column_name)
if not isinstance(column, Column):
msg = _("col_name_col_instance param has wrong type of "
"column instance for column %s It should be instance "
"of sqlalchemy.Column.")
- raise exception.OpenstackException(message=msg % column_name)
+ raise ColumnError(msg % column_name)
return column
@@ -297,8 +300,7 @@ def _get_default_deleted_value(table):
return 0
if isinstance(table.c.id.type, String):
return ""
- raise exception.OpenstackException(
- message=_("Unsupported id columns type"))
+ raise ColumnError(_("Unsupported id columns type"))
def _restore_indexes_on_deleted_columns(migrate_engine, table_name, indexes):
diff --git a/openstack/common/deprecated/wsgi.py b/openstack/common/deprecated/wsgi.py
index a9530b3..aff4b92 100644
--- a/openstack/common/deprecated/wsgi.py
+++ b/openstack/common/deprecated/wsgi.py
@@ -35,7 +35,6 @@ import webob.exc
from xml.dom import minidom
from xml.parsers import expat
-from openstack.common import exception
from openstack.common.gettextutils import _ # noqa
from openstack.common import jsonutils
from openstack.common import log as logging
@@ -59,6 +58,18 @@ CONF.register_opts(socket_opts)
LOG = logging.getLogger(__name__)
+class MalformedRequestBody(Exception):
+ def __init__(self, reason):
+ super(MalformedRequestBody, self).__init__(
+ "Malformed message body: %s", reason)
+
+
+class InvalidContentType(Exception):
+ def __init__(self, content_type):
+ super(InvalidContentType, self).__init__(
+ "Invalid content type %s", content_type)
+
+
def run_server(application, port, **kwargs):
"""Run a WSGI server with the given application."""
sock = eventlet.listen(('0.0.0.0', port))
@@ -255,7 +266,7 @@ class Request(webob.Request):
self.default_request_content_types)
if content_type not in allowed_content_types:
- raise exception.InvalidContentType(content_type=content_type)
+ raise InvalidContentType(content_type=content_type)
return content_type
@@ -294,10 +305,10 @@ class Resource(object):
try:
action, action_args, accept = self.deserialize_request(request)
- except exception.InvalidContentType:
+ except InvalidContentType:
msg = _("Unsupported Content-Type")
return webob.exc.HTTPUnsupportedMediaType(explanation=msg)
- except exception.MalformedRequestBody:
+ except MalformedRequestBody:
msg = _("Malformed request body")
return webob.exc.HTTPBadRequest(explanation=msg)
@@ -530,7 +541,7 @@ class ResponseSerializer(object):
try:
return self.body_serializers[content_type]
except (KeyError, TypeError):
- raise exception.InvalidContentType(content_type=content_type)
+ raise InvalidContentType(content_type=content_type)
class RequestHeadersDeserializer(ActionDispatcher):
@@ -589,7 +600,7 @@ class RequestDeserializer(object):
try:
content_type = request.get_content_type()
- except exception.InvalidContentType:
+ except InvalidContentType:
LOG.debug(_("Unrecognized Content-Type provided in request"))
raise
@@ -599,7 +610,7 @@ class RequestDeserializer(object):
try:
deserializer = self.get_body_deserializer(content_type)
- except exception.InvalidContentType:
+ except InvalidContentType:
LOG.debug(_("Unable to deserialize body as provided Content-Type"))
raise
@@ -609,7 +620,7 @@ class RequestDeserializer(object):
try:
return self.body_deserializers[content_type]
except (KeyError, TypeError):
- raise exception.InvalidContentType(content_type=content_type)
+ raise InvalidContentType(content_type=content_type)
def get_expected_content_type(self, request):
return request.best_match_content_type(self.supported_content_types)
@@ -651,7 +662,7 @@ class JSONDeserializer(TextDeserializer):
return jsonutils.loads(datastring)
except ValueError:
msg = _("cannot understand JSON")
- raise exception.MalformedRequestBody(reason=msg)
+ raise MalformedRequestBody(reason=msg)
def default(self, datastring):
return {'body': self._from_json(datastring)}
@@ -676,7 +687,7 @@ class XMLDeserializer(TextDeserializer):
return {node.nodeName: self._from_xml_node(node, plurals)}
except expat.ExpatError:
msg = _("cannot understand XML")
- raise exception.MalformedRequestBody(reason=msg)
+ raise MalformedRequestBody(reason=msg)
def _from_xml_node(self, node, listnames):
"""Convert a minidom node to a simple Python type.
diff --git a/openstack/common/exception.py b/openstack/common/exception.py
deleted file mode 100644
index 13c3bff..0000000
--- a/openstack/common/exception.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2011 OpenStack Foundation.
-# 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.
-
-"""
-Exceptions common to OpenStack projects
-"""
-
-import logging
-
-from openstack.common.gettextutils import _ # noqa
-
-_FATAL_EXCEPTION_FORMAT_ERRORS = False
-
-
-class Error(Exception):
- def __init__(self, message=None):
- super(Error, self).__init__(message)
-
-
-class ApiError(Error):
- def __init__(self, message='Unknown', code='Unknown'):
- self.api_message = message
- self.code = code
- super(ApiError, self).__init__('%s: %s' % (code, message))
-
-
-class NotFound(Error):
- pass
-
-
-class UnknownScheme(Error):
-
- msg_fmt = "Unknown scheme '%s' found in URI"
-
- def __init__(self, scheme):
- msg = self.msg_fmt % scheme
- super(UnknownScheme, self).__init__(msg)
-
-
-class BadStoreUri(Error):
-
- msg_fmt = "The Store URI %s was malformed. Reason: %s"
-
- def __init__(self, uri, reason):
- msg = self.msg_fmt % (uri, reason)
- super(BadStoreUri, self).__init__(msg)
-
-
-class Duplicate(Error):
- pass
-
-
-class NotAuthorized(Error):
- pass
-
-
-class NotEmpty(Error):
- pass
-
-
-class Invalid(Error):
- pass
-
-
-class BadInputError(Exception):
- """Error resulting from a client sending bad input to a server"""
- pass
-
-
-class MissingArgumentError(Error):
- pass
-
-
-class DatabaseMigrationError(Error):
- pass
-
-
-class ClientConnectionError(Exception):
- """Error resulting from a client connecting to a server"""
- pass
-
-
-def wrap_exception(f):
- def _wrap(*args, **kw):
- try:
- return f(*args, **kw)
- except Exception as e:
- if not isinstance(e, Error):
- logging.exception(_('Uncaught exception'))
- raise Error(str(e))
- raise
- _wrap.func_name = f.func_name
- return _wrap
-
-
-class OpenstackException(Exception):
- """Base Exception class.
-
- To correctly use this class, inherit from it and define
- a 'msg_fmt' property. That message will get printf'd
- with the keyword arguments provided to the constructor.
- """
- msg_fmt = "An unknown exception occurred"
-
- def __init__(self, **kwargs):
- try:
- self._error_string = self.msg_fmt % kwargs
-
- except Exception:
- if _FATAL_EXCEPTION_FORMAT_ERRORS:
- raise
- else:
- # at least get the core message out if something happened
- self._error_string = self.msg_fmt
-
- def __str__(self):
- return self._error_string
-
-
-class MalformedRequestBody(OpenstackException):
- msg_fmt = "Malformed message body: %(reason)s"
-
-
-class InvalidContentType(OpenstackException):
- msg_fmt = "Invalid content type %(content_type)s"
diff --git a/openstack/common/rpc/__init__.py b/openstack/common/rpc/__init__.py
index e39f294..104b059 100644
--- a/openstack/common/rpc/__init__.py
+++ b/openstack/common/rpc/__init__.py
@@ -56,8 +56,7 @@ rpc_opts = [
help='Seconds to wait before a cast expires (TTL). '
'Only supported by impl_zmq.'),
cfg.ListOpt('allowed_rpc_exception_modules',
- default=['openstack.common.exception',
- 'nova.exception',
+ default=['nova.exception',
'cinder.exception',
'exceptions',
],