From 04ce3d90265f0623457705a2490ea6abd3703ab5 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Wed, 2 May 2012 13:44:20 -0400 Subject: [PATCH] Update common.importutils from openstack-common. This patch updates common.importutils from openstack-common. The change was to remove the usage of common.exception. The rest of the patch includes the changes required in nova to no longer use common.exception, as well. Change-Id: Iacd186b2c466cba84248ae10589ffbb5a9cec0ba --- nova/notifier/list_notifier.py | 1 - nova/openstack/common/exception.py | 147 ---------------------- nova/openstack/common/importutils.py | 7 +- nova/scheduler/filter_scheduler.py | 3 +- nova/tests/scheduler/test_host_filters.py | 3 +- openstack-common.conf | 2 +- 6 files changed, 6 insertions(+), 157 deletions(-) delete mode 100644 nova/openstack/common/exception.py diff --git a/nova/notifier/list_notifier.py b/nova/notifier/list_notifier.py index c3f27fd0e..9f6d29775 100644 --- a/nova/notifier/list_notifier.py +++ b/nova/notifier/list_notifier.py @@ -16,7 +16,6 @@ from nova import flags from nova import log as logging from nova.openstack.common import cfg -from nova.openstack.common import exception as common_exception from nova.openstack.common import importutils diff --git a/nova/openstack/common/exception.py b/nova/openstack/common/exception.py deleted file mode 100644 index ba32da550..000000000 --- a/nova/openstack/common/exception.py +++ /dev/null @@ -1,147 +0,0 @@ -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -# Copyright 2011 OpenStack LLC. -# 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 - - -class ProcessExecutionError(IOError): - def __init__(self, stdout=None, stderr=None, exit_code=None, cmd=None, - description=None): - if description is None: - description = "Unexpected error while running command." - if exit_code is None: - exit_code = '-' - message = "%s\nCommand: %s\nExit code: %s\nStdout: %r\nStderr: %r" % ( - description, cmd, exit_code, stdout, stderr) - IOError.__init__(self, message) - - -class Error(Exception): - def __init__(self, message=None): - super(Error, self).__init__(message) - - -class ApiError(Error): - def __init__(self, message='Unknown', code='Unknown'): - self.message = message - self.code = code - super(ApiError, self).__init__('%s: %s' % (code, message)) - - -class NotFound(Error): - pass - - -class UnknownScheme(Error): - - msg = "Unknown scheme '%s' found in URI" - - def __init__(self, scheme): - msg = self.__class__.msg % scheme - super(UnknownScheme, self).__init__(msg) - - -class BadStoreUri(Error): - - msg = "The Store URI %s was malformed. Reason: %s" - - def __init__(self, uri, reason): - msg = self.__class__.msg % (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, e: - if not isinstance(e, Error): - #exc_type, exc_value, exc_traceback = sys.exc_info() - logging.exception('Uncaught exception') - #logging.error(traceback.extract_stack(exc_traceback)) - raise Error(str(e)) - raise - _wrap.func_name = f.func_name - return _wrap - - -class OpenstackException(Exception): - """ - Base Exception - - 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 MalformedRequestBody(OpenstackException): - message = "Malformed message body: %(reason)s" - - -class InvalidContentType(OpenstackException): - message = "Invalid content type %(content_type)s" diff --git a/nova/openstack/common/importutils.py b/nova/openstack/common/importutils.py index 2d8bc09a9..7654af5b9 100644 --- a/nova/openstack/common/importutils.py +++ b/nova/openstack/common/importutils.py @@ -21,8 +21,6 @@ Import related utilities and helper functions. import sys -from nova.openstack.common import exception - def import_class(import_str): """Returns a class from a string including module and class""" @@ -30,8 +28,9 @@ def import_class(import_str): try: __import__(mod_str) return getattr(sys.modules[mod_str], class_str) - except (ImportError, ValueError, AttributeError): - raise exception.NotFound('Class %s cannot be found' % class_str) + except (ImportError, ValueError, AttributeError), exc: + raise ImportError('Class %s cannot be found (%s)' % + (class_str, str(exc))) def import_object(import_str, *args, **kwargs): diff --git a/nova/scheduler/filter_scheduler.py b/nova/scheduler/filter_scheduler.py index ce7ba420b..1e7ee16b9 100644 --- a/nova/scheduler/filter_scheduler.py +++ b/nova/scheduler/filter_scheduler.py @@ -25,7 +25,6 @@ from nova import exception from nova import flags from nova import log as logging from nova.notifier import api as notifier -from nova.openstack.common import exception as common_exception from nova.openstack.common import importutils from nova.scheduler import driver from nova.scheduler import least_cost @@ -245,7 +244,7 @@ class FilterScheduler(driver.Scheduler): # the weighing function can be any non-class callable # (i.e., no 'self') cost_fn = importutils.import_class(cost_fn_str) - except common_exception.NotFound: + except ImportError: raise exception.SchedulerCostFunctionNotFound( cost_fn_str=cost_fn_str) diff --git a/nova/tests/scheduler/test_host_filters.py b/nova/tests/scheduler/test_host_filters.py index 1d61d0fe9..d37ce1c02 100644 --- a/nova/tests/scheduler/test_host_filters.py +++ b/nova/tests/scheduler/test_host_filters.py @@ -20,7 +20,6 @@ import json from nova import context from nova import exception from nova import flags -from nova.openstack.common import exception as common_exception from nova.scheduler import filters from nova import test from nova.tests.scheduler import fakes @@ -65,7 +64,7 @@ class HostFiltersTestCase(test.TestCase): self.assertEqual(len(classes), 1 + len(self.class_map)) def test_get_filter_classes_raises_on_invalid_classes(self): - self.assertRaises(common_exception.NotFound, + self.assertRaises(ImportError, filters.get_filter_classes, ['nova.tests.scheduler.test_host_filters.NoExist']) self.assertRaises(exception.ClassNotFound, diff --git a/openstack-common.conf b/openstack-common.conf index d32dec4e6..61850d238 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -1,7 +1,7 @@ [DEFAULT] # The list of modules to copy from openstack-common -modules=cfg,exception,local,importutils,iniparser +modules=cfg,local,importutils,iniparser # The base module to hold the copy of openstack.common base=nova