def catch_notimplementederror(f):
    def wrapped_func(self, *args, **kwargs):
        try:
            return f(self, *args, **kwargs)
        except NotImplementedError:
            frame = traceback.extract_tb(sys.exc_info()[2])[-1]
            LOG.error('%(driver)s does not implement %(method)s' % {
                                               'driver': type(self.connection),
                                               'method': frame[2]})

    wrapped_func.__name__ = f.__name__
    wrapped_func.__doc__ = f.__doc__
    return wrapped_func
Decorator to simplify catching drivers raising NotImplementedError
dataset/ETHPy150Open nii-cloud/dodai-compute/nova/tests/test_virt_drivers.py/catch_notimplementederror