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={{ ldap_sid }}
{#LDAP_PEER={{ hostvars[groups['dc-2-ldap'][0]]['private_address']  }}#}
LDAP_PEER={{ ldap_peer }}
{#{% if groups['dc-1-ldap'] is defined and groups['dc-2-ldap'] is defined and inventory_hostname in groups['dc-2-edge'] %}#}
{% 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 }}

