HOSTIP="$(hostname -i)"
MSIP={{ local_mgmt_ip }}
ADMIN_EMAIL={{ opdk_user_email }}
APIGEE_ADMINPW='{{ opdk_user_pass }}'
LICENSE_FILE={{ opdk_license_target_file_path }}

USE_LDAP_REMOTE_HOST={{ use_opdk_ldap_remote_host | default('n') }}
{% if (use_opdk_ldap_remote_host is defined and use_opdk_ldap_remote_host | trim == 'n') or use_opdk_ldap_remote_host is not defined %}
LDAP_TYPE='{{ opdk_ldap_type }}'
{#{% if opdk_ldap_type == '2' %}#}
{#{% if groups['dc-1-ldap'] is defined and groups['dc-2-ldap'] is defined and inventory_hostname in groups['dc-1-edge'] %}#}
{#LDAP_SID=1#}
{#LDAP_PEER={{ hostvars[groups['dc-2-ldap'][0]]['private_address']  }}#}
{#{% endif %}#}
{#{% if groups['dc-1-ldap'] is defined and groups['dc-2-ldap'] is defined and inventory_hostname in groups['dc-2-edge'] %}#}
{#LDAP_SID=2#}
{#LDAP_PEER={{ hostvars[groups['dc-1-ldap'][0]]['private_address']  }}#}
{#{% endif %}#}
{#{% endif %}#}
APIGEE_LDAPPW='{{ opdk_ldap_pass }}'
{% endif %}
{% if use_opdk_ldap_remote_host is defined and use_opdk_ldap_remote_host | trim | lower == 'y' %}
LDAP_HOST={{ opdk_ldap_host }}
LDAP_PORT={{ opdk_ldap_port }}
{% endif %}


ENABLE_AX={{ opdk_enable_ax }}
MP_POD={{ opdk_mp_pod | default(default_mp_pod) }}

REGION={{ region }}

USE_ZK_CLUSTER={{ opdk_use_zk_cluster }}
{# TODO: Build a module to construct the ZK_HOSTS value#}
ZK_HOSTS="{% for host in groups['ds'] %}{{ hostvars[host]['private_address'] }}{% if hostvars[host]['zk_observer'] is defined and hostvars[host]['zk_observer'] == 'true' %}:observer{% endif %}{% if not loop.last %} {% endif %}{% endfor %}"

{# TODO: Build a module to construct the ZK_CLIENT_HOSTS value#}
{% if groups['dc-1-edge'] is defined and inventory_hostname in groups['dc-1-edge'] %}
ZK_CLIENT_HOSTS="{% for host in groups['dc-1-ds'] %}{{ hostvars[host]['private_address'] }}{% if not loop.last %} {% endif %}{% endfor %}"
{% elif groups['dc-2-edge'] is defined and inventory_hostname in groups['dc-2-edge']%}
ZK_CLIENT_HOSTS="{% for host in groups['dc-2-ds'] %}{{ hostvars[host]['private_address'] }}{% if not loop.last %} {% endif %}{% endfor %}"
{% else %}
ZK_CLIENT_HOSTS="{% for host in groups['ds'] %}{{ hostvars[host]['private_address'] }}{% if not loop.last %} {% endif %}{% endfor %}"
{% endif %}

USE_CASS_CLUSTER={{ opdk_use_cass_cluster }}
CASS_HOSTS="{{ cassandra_hosts }}"
CASS_USERNAME={{ opdk_cass_username }}
CASS_PASSWORD='{{ opdk_cass_password }}'
CASS_AUTH={{ opdk_cass_auth }}

SMTPMAILFROM="{{ opdk_smtp_mail_from }} <{{  opdk_user_email }}>"

SKIP_SMTP={{ opdk_smtp_skip }}
{% if opdk_smtp_skip | trim == 'n' %}
SMTPHOST={{ opdk_smtp_host }}
SMTPPORT={{ opdk_smtp_port }}
SMTPUSER={{ opdk_smtp_user }}
SMTPPASSWORD='{{ opdk_smtp_password }}'
SMTPSSL={{ opdk_smtp_ssl }}
{% endif %}
BIND_ON_ALL_INTERFACES={{ opdk_bind_on_all_interfaces }}

{% if pgmaster_ip is defined and pgmaster_ip | trim | length > 0 and pgstandby_ip is defined and pgstandby_ip | trim | length > 0 %}
PG_MASTER={{ pgmaster_ip }}
PG_STANDBY={{ pgstandby_ip }}
{% endif %}
PG_PWD='{{ pg_pass }}'

{% if opdk_monetization is defined and opdk_monetization | bool == True %}
# Monetization has been configured
PG_USER={{ pg_user }}
{% if pgmaster_ip is defined  %}
MO_PG_HOST={{ pgmaster_ip }}
{%  elif pg_ip is defined %}
MO_PG_HOST={{ pg_ip }}
{% endif %}
MO_PG_USER={{ pg_user }}
MO_PG_PASSWD='{{ pg_pass }}'
CASS_CLUSTERNAME={{ opdk_cass_clustername }}
APIGEE_PORT_HTTP_MS={{ ms_ext_mgmt_port }}
{% if groups['dc-1-qpid'] is defined and inventory_hostname in groups['dc-1-qpid'] %}
QPID_HOST="{{  groups['dc-1-qpid'] | join(' ') }}"
{% elif groups['dc-2-qpid'] is defined and inventory_hostname in groups['dc-2-qpid'] %}
QPID_HOST="{{  groups['dc-2-qpid'] | join(' ') }}"
{% endif %}
QPID_PORT={{ qpid_ext_mgmt_port }}
MX_GROUP=mxgroup
ORG_NAME={{ org_name }}
{% endif %}

ENABLE_SYSTEM_CHECK={{ enable_system_check }}

