def get_funcs_strategy(client, engine_type, engine, function):
    """Retrieve a function to setup Auth/Secrets Vault engines

    Arguments:
        client {hvac} -- hvac client
        engine_type {string} - The type of engine (e.g., auth, secrets, audit)
        engine {string} - The mechanism within the engine to configure
        function {string} - The method within the engine needed

    Returns:
        [function] - configuration function for Auth/Secrets Vault engines
    """

    funcs = {
        "auth": {
            "aws": {
                "list": client.auth.aws.list_roles,
                "create": client.auth.aws.create_role,
                "delete": client.auth.aws.delete_role,
                "configure": client.auth.aws.configure,
                "key": "roles",
            },
            "ldap": {
                "list": client.auth.ldap.list_groups,
                "create": client.auth.ldap.create_or_update_group,
                "delete": client.auth.ldap.delete_group,
                "configure": client.auth.ldap.configure,
                "key": "group_policy_map",
            },
        },
        "secrets": {
            "kv": {
                "list": client.secrets.kv.list_secrets,
                "configure": client.secrets.kv.configure,
                "create": client.secrets.kv.create_or_update_secret,
            },
            "ad": {
                "list": client.secrets.activedirectory.list_roles,
                "create": client.secrets.activedirectory.create_or_update_role,
                "delete": client.secrets.activedirectory.delete_role,
                "configure": client.secrets.activedirectory.configure,
            },
            "database": {"configure": client.secrets.database.configure},
        },
    }

    try:
        return funcs[engine_type][engine][function]
    except KeyError:
        raise NotImplementedError("Functionality has not yet been implemented")