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={{ opdk_ldap_remote_host }}

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'] %}
LDAP_SID=1
LDAP_PEER={{ hostvars[groups['dc-2-ldap'][0]]['local_address']  }}
{% endif %}
{% if groups['dc-1-ldap'] is defined and groups['dc-2-ldap'] is defined and inventory_hostname in groups['dc-2'] %}
LDAP_SID=2
LDAP_PEER={{ hostvars[groups['dc-1-ldap'][0]]['local_address']  }}
{% endif %}
{% endif %}
APIGEE_LDAPPW={{ opdk_ldap_pass }}

ENABLE_AX={{ opdk_enable_ax }}
MP_POD={{ opdk_mp_pod }}

{# TODO: Build a module that discover the region of the inventory_hostname and update the REGION dynamically #}
{% if groups['dc-1'] is defined and inventory_hostname in groups['dc-1'] %}
REGION=dc-1
{% elif groups['dc-2'] is defined and inventory_hostname in groups['dc-2'] %}
REGION=dc-2
{% elif groups['dc-3'] is defined and inventory_hostname in groups['dc-3'] %}
REGION=dc-3
{% endif %}

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]['local_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'] is defined and inventory_hostname in groups['dc-1'] %}
ZK_CLIENT_HOSTS="{% for host in groups['dc-1-ds'] %}{{ hostvars[host]['local_address'] }}{% if not loop.last %} {% endif %}{% endfor %}"
{% elif groups['dc-2'] is defined and inventory_hostname in groups['dc-2']%}
ZK_CLIENT_HOSTS="{% for host in groups['dc-2-ds'] %}{{ hostvars[host]['local_address'] }}{% if not loop.last %} {% endif %}{% endfor %}"
{% else %}
ZK_CLIENT_HOSTS="{% for host in groups['ds'] %}{{ hostvars[host]['local_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 pgstandby_ip is defined %}
PG_MASTER={{ pgmaster_ip }}
PG_STANDBY={{ pgstandby_ip }}
{% endif %}
PG_PWD={{ pg_pass }}

{% if opdk_monetization is defined and opdk_monetization %}
# Monetization has been configured
PG_USER={{ pg_user }}
MO_PG_HOST={{ pgmaster_ip }}
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(' ') }}"
{% else %}
QPID_HOST="{{  groups['dc-2-qpid'] | join(' ') }}"
{% endif %}
QPID_PORT={{ qpid_ext_mgmt_port }}
MX_GROUP=mxgroup
ORG_NAME={{ org_name }}
{% endif %}

