{%- from "opencontrail/map.jinja" import collector,common with context %}
[DEFAULTS]
host_ip = {{ collector.bind.address }}
#collectors = 127.0.0.1:8086
#http_server_port = 5995
{%- if collector.alarm_gen.workers != 1 %}
http_server_port = {{ collector.alarm_gen.port_prefix }}01
{%- endif %}
log_local = 1
log_level = SYS_NOTICE
#log_category = 
log_file = /var/log/contrail/contrail-alarm-gen.log
kafka_broker_list = {% for member in collector.database.members %}{{ member.host }}:9092 {% endfor %}
zk_list = {% for member in collector.database.members %}{{ member.host }}:2181{% if not loop.last %},{% endif %}{% endfor %}
{%- if collector.get('message_queue', {}).members is defined %}
rabbitmq_server_list={{ collector.message_queue.members | join(',', attribute='host') }}
rabbitmq_ha_mode=True
{%- elif collector.get('message_queue', {}).host is defined %}
rabbitmq_server_list={{ collector.message_queue.host }}
{%- endif %}
rabbitmq_port={{ collector.get('message_queue', {}).get('port', 5672) }}
rabbitmq_user={{ collector.get('message_queue', {}).get('user', 'guest') }}
rabbitmq_password={{ collector.get('message_queue', {}).get('password', 'guest') }}
rabbitmq_vhost={{ collector.get('message_queue', {}).get('vhost', '') }}

[DISCOVERY]
disc_server_ip = {{ collector.discovery.host }}
disc_server_port = 5998

[API_SERVER]
api_server_list={{ collector.discovery.host }}:8082
api_server_use_ssl=False

{%- if common.identity.engine == "keystone" and not common.get('k8s_enabled', False) %}
[KEYSTONE]
auth_host={{ common.identity.host }}
auth_protocol={{ common.identity.protocol }}
auth_port={{ common.identity.port }}
admin_user={{ common.identity.get('user', "admin") }}
admin_password={{ common.identity.password }}
admin_tenant_name={{ common.identity.get('tenant', "admin") }}
{%- endif %}

[REDIS]
#redis_server_port=6379
