# {{ ansible_managed }}

{% set ldap_table_params = [ 'server_host', 'server_port', 'timeout', 'search_base',
                             'query_filter', 'result_format', 'domain', 'result_attribute',
                             'special_result_attribute', 'terminal_result_attribute',
                             'leaf_result_attribute', 'scope', 'bind', 'bind_dn',
                             'bind_pw', 'cache_expiry', 'cache_size', 'recursion_limit',
                             'expansion_limit', 'size_limit', 'dereference', 'chase_referrals',
                             'version', 'debuglevel', 'sasl_mechs', 'sasl_realm', 'sasl_authz_id',
                             'sasl_minssf', 'start_tls', 'tls_ca_cert_dir', 'tls_ca_cert_file',
                             'tls_cert', 'tls_key', 'tls_require_cert', 'tls_random_file',
                             'tls_cipher_suite' ] %}
{% set sql_table_params = [ 'hosts', 'user', 'password', 'dbname', 'query', 'result_format',
                            'domain', 'expansion_limit', 'option_file', 'option_group',
                            'require_result_set', 'tls_cert_file', 'tls_key_file',
                            'tls_CAfile', 'tls_CApath', 'tls_verify_cert', 'dbpath' ] %}
{% if item.by_role|d() %}
# File generated by Ansible role: '{{ item.by_role }}'

{% endif %}
{% if item.comment|d() %}
{{ item.comment | regex_replace('\n$','') | comment(prefix='', postfix='') }}
{% endif %}
{% set default_action = item.default_action | d('DUNNO') %}
{% set auto_margin = {'length': 8} %}
{% if item.raw|d() %}
{{ item.raw }}
{% elif (item.config|d() or item.connection|d()) %}
{%   for config_key in (ldap_table_params + sql_table_params + ((item.connection|d({})).keys() | sort) + ((item.config|d({})).keys() | sort)) | unique %}
{%     if item.connection[config_key] is defined %}
{%       set value = item.connection[config_key] %}
{{ '{} = {}'.format(config_key, (([ value ] if value is string else value) | join(', '))) }}
{%     elif item.config[config_key] is defined %}
{%       set value = item.config[config_key] %}
{{ '{} = {}'.format(config_key, (([ value ] if value is string else value) | join(', '))) }}
{%     elif config_key in item.keys() | sort %}
{%       set value = item[config_key] %}
{%       if value is iterable %}
{{ '{} = {}'.format(config_key, (([ value ] if value is string else value) | join(', '))) }}
{%       else %}
{{ '{} = {}'.format(config_key, value) }}
{%       endif %}
{%     endif %}
{%   endfor %}
{% else %}
{%   for element in (item.options|d([]) + item.content|d([])) %}
{%     if (element.key | d(element.name | d(element))) | length > auto_margin['length']|int %}
{%       set _ = auto_margin.update({'length': (element.key | d(element.name | d(element))) | length | int}) %}
{%     endif %}
{%   endfor %}
{%   for element in (item.options|d([]) + item.content|d([])) %}
{%     if element.state|d('present') != 'absent' %}
{%       set option_commented = ('#' if element.state|d('present') == 'comment' else '') %}
{%       set margin = (7 if element.state|d('present') == 'comment' else 8) %}
{%       if element.comment|d() %}
{{ element.comment | regex_replace('\n$','') | comment(prefix='\n', postfix='') -}}
{%       endif %}
{{ ('{}{:<' + (margin + auto_margin['length'])|string + '} {}').format(option_commented, element.key | d(element.name | d(element)), element.action | d(element.value | d(default_action))) }}
{%     endif %}
{%   endfor %}
{% endif %}
