]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Remove unused utils.wrap_exception
authorMark McLoughlin <markmc@redhat.com>
Fri, 7 Sep 2012 10:29:00 +0000 (11:29 +0100)
committerMark McLoughlin <markmc@redhat.com>
Fri, 7 Sep 2012 10:29:00 +0000 (11:29 +0100)
Moved into utils by commit 6ad36074, but it hasn't been used in cinder
since commit 9e4242c3 which prepared for switching to common rpc.

Change-Id: I9dff70e81c0bae36f26df893ac6971e17ba46bb3

cinder/tests/test_exception.py
cinder/utils.py

index 30e002bf31e7048899c6c6f7c6ebea349170f053..f87a71cef56b8caf0059577e1fd9e45cb37f567f 100644 (file)
@@ -50,42 +50,6 @@ def bad_function_exception():
     raise test.TestingException()
 
 
-class WrapExceptionTestCase(test.TestCase):
-    def test_wrap_exception_good_return(self):
-        wrapped = utils.wrap_exception()
-        self.assertEquals(99, wrapped(good_function)())
-
-    def test_wrap_exception_throws_error(self):
-        wrapped = utils.wrap_exception()
-        self.assertRaises(exception.Error, wrapped(bad_function_error))
-
-    def test_wrap_exception_throws_exception(self):
-        wrapped = utils.wrap_exception()
-        self.assertRaises(test.TestingException,
-                          wrapped(bad_function_exception))
-
-    def test_wrap_exception_with_notifier(self):
-        notifier = FakeNotifier()
-        wrapped = utils.wrap_exception(notifier, "publisher", "event",
-                                           "level")
-        self.assertRaises(test.TestingException,
-                          wrapped(bad_function_exception))
-        self.assertEquals(notifier.provided_publisher, "publisher")
-        self.assertEquals(notifier.provided_event, "event")
-        self.assertEquals(notifier.provided_priority, "level")
-        for key in ['exception', 'args']:
-            self.assertTrue(key in notifier.provided_payload.keys())
-
-    def test_wrap_exception_with_notifier_defaults(self):
-        notifier = FakeNotifier()
-        wrapped = utils.wrap_exception(notifier)
-        self.assertRaises(test.TestingException,
-                          wrapped(bad_function_exception))
-        self.assertEquals(notifier.provided_publisher, None)
-        self.assertEquals(notifier.provided_event, "bad_function_exception")
-        self.assertEquals(notifier.provided_priority, notifier.ERROR)
-
-
 class CinderExceptionTestCase(test.TestCase):
     def test_default_error_msg(self):
         class FakeCinderException(exception.CinderException):
index 5f896a3af80097261f891abca7a8b79a9fc46481..c025c624137e1acfefd52a4a29594e29f9b9abfb 100644 (file)
@@ -1077,71 +1077,3 @@ class UndoManager(object):
                 LOG.exception(msg, **kwargs)
 
             self._rollback()
-
-
-def wrap_exception(notifier=None, publisher_id=None, event_type=None,
-                   level=None):
-    """This decorator wraps a method to catch any exceptions that may
-    get thrown. It logs the exception as well as optionally sending
-    it to the notification system.
-    """
-    # TODO(sandy): Find a way to import cinder.notifier.api so we don't have
-    # to pass it in as a parameter. Otherwise we get a cyclic import of
-    # cinder.notifier.api -> cinder.utils -> cinder.exception :(
-    # TODO(johannes): Also, it would be nice to use
-    # utils.save_and_reraise_exception() without an import loop
-    def inner(f):
-        def wrapped(*args, **kw):
-            try:
-                return f(*args, **kw)
-            except Exception, e:
-                # Save exception since it can be clobbered during processing
-                # below before we can re-raise
-                exc_info = sys.exc_info()
-
-                if notifier:
-                    payload = dict(args=args, exception=e)
-                    payload.update(kw)
-
-                    # Use a temp vars so we don't shadow
-                    # our outer definitions.
-                    temp_level = level
-                    if not temp_level:
-                        temp_level = notifier.ERROR
-
-                    temp_type = event_type
-                    if not temp_type:
-                        # If f has multiple decorators, they must use
-                        # functools.wraps to ensure the name is
-                        # propagated.
-                        temp_type = f.__name__
-
-                    context = get_context_from_function_and_args(f,
-                                                                 args,
-                                                                 kw)
-
-                    notifier.notify(context, publisher_id, temp_type,
-                                    temp_level, payload)
-
-                # re-raise original exception since it may have been clobbered
-                raise exc_info[0], exc_info[1], exc_info[2]
-
-        return functools.wraps(f)(wrapped)
-    return inner
-
-
-def get_context_from_function_and_args(function, args, kwargs):
-    """Find an arg of type RequestContext and return it.
-
-       This is useful in a couple of decorators where we don't
-       know much about the function we're wrapping.
-    """
-
-    # import here to avoid circularity:
-    from cinder import context
-
-    for arg in itertools.chain(kwargs.values(), args):
-        if isinstance(arg, context.RequestContext):
-            return arg
-
-    return None