def wrap_hvac(msg):
    """Error catching Vault API wrapper
    This decorator wraps API interactions with Vault. It will
    catch and return appropriate error output on common
    problems. Do we even need this now that we extend the
    hvac class?"""
    # pylint: disable=missing-docstring
    def wrap_call(func):
        # pylint: disable=missing-docstring
        def func_wrapper(self, vault_client):
            try:
                return func(self, vault_client)
            except (hvac.exceptions.InvalidRequest,
                    hvac.exceptions.Forbidden) as vault_exception:
                if vault_exception.errors[0] == 'permission denied':
                    emsg = "Permission denied %s from %s" % (msg, self.path)
                    raise aomi.exceptions.AomiCredentials(emsg)
                else:
                    raise

        return func_wrapper
    return wrap_call
Error catching Vault API wrapper
    This decorator wraps API interactions with Vault. It will
    catch and return appropriate error output on common
    problems. Do we even need this now that we extend the
    hvac class?