{%- from "cinder/map.jinja" import controller with context %}

[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini

iscsi_helper = tgtadm
volume_name_template = volume-%s
#volume_group = cinder

verbose = True

osapi_volume_workers = {{ controller.get('volume_workers', '4') }}

auth_strategy = keystone

state_path = /var/lib/cinder

use_syslog=False

glance_num_retries=0
debug=False

os_region_name={{ controller.identity.region }}

#glance_api_ssl_compression=False
#glance_api_insecure=False

osapi_volume_listen={{ controller.osapi.host }}
osapi_max_limit={{ controller.osapi_max_limit|default('1000') }}

glance_host={{ controller.glance.host }}
glance_port={{ controller.glance.port }}
glance_api_version=2

volume_backend_name=DEFAULT

{%- if controller.backend is defined %}

default_volume_type={{ controller.default_volume_type }}

enabled_backends={% for backend_name, backend in controller.get('backend', {}).iteritems() %}{{ backend_name }}{% if not loop.last %},{% endif %}{% endfor %}

{%- endif %}

{%- if controller.storage_availability_zone is defined %}
storage_availability_zone={{controller.storage_availability_zone}}
{%- endif %}

{%- if controller.default_availability_zone is defined %}
default_availability_zone={{controller.default_availability_zone}}
{%- endif %}


#RPC response timeout recommended by Hitachi
rpc_response_timeout=3600

#Rabbit
rpc_backend=rabbit
control_exchange=cinder


volume_clear={{ controller.wipe_method }}



volume_name_template = volume-%s

#volume_group = vg_cinder_volume

volumes_dir = /var/lib/cinder/volumes
log_dir=/var/log/cinder

# Use syslog for logging. (boolean value)
#use_syslog=false

use_syslog=false
verbose=True
lock_path=/var/lock/cinder

{%- if controller.query_volume_filters is defined %}
query_volume_filters = {{ controller.query_volume_filters|join(",") }}
{%- endif %}

[oslo_messaging_notifications]
{%- if controller.notification is mapping %}
driver = {{ controller.notification.get('driver', 'messagingv2') }}
{%- if controller.notification.topics is defined %}
topics = {{ controller.notification.topics }}
{%- endif %}
{%- elif controller.notification %}
driver = messagingv2
{%- endif %}

[oslo_concurrency]

lock_path=/var/lock/cinder

[oslo_messaging_rabbit]
{%- if controller.message_queue.members is defined %}
rabbit_hosts = {% for member in controller.message_queue.members -%}
                   {{ member.host }}:{{ member.get('port', 5672) }}
                   {%- if not loop.last -%},{%- endif -%}
               {%- endfor -%}
{%- else %}
rabbit_host = {{ controller.message_queue.host }}
rabbit_port = {{ controller.message_queue.port }}
{%- endif %}

rabbit_userid = {{ controller.message_queue.user }}
rabbit_password = {{ controller.message_queue.password }}
rabbit_virtual_host = {{ controller.message_queue.virtual_host }}
kombu_reconnect_delay=5.0

[keystone_authtoken]
signing_dir=/tmp/keystone-signing-cinder
revocation_cache_time = 10
auth_type = password
user_domain_id = {{ controller.identity.get('domain', 'default') }}
project_domain_id = {{ controller.identity.get('domain', 'default') }}
project_name = {{ controller.identity.tenant }}
username = {{ controller.identity.user }}
password = {{ controller.identity.password }}
auth_uri=http://{{ controller.identity.host }}:5000
auth_url=http://{{ controller.identity.host }}:35357
{%- if controller.cache is defined %}
memcached_servers={%- for member in controller.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
{%- endif %}

[database]
idle_timeout=3600
max_pool_size=30
max_retries=-1
max_overflow=40
connection = {{ controller.database.engine }}+pymysql://{{ controller.database.user }}:{{ controller.database.password }}@{{ controller.database.host }}/{{ controller.database.name }}

{%- if controller.backend is defined %}

{%- for backend_name, backend in controller.get('backend', {}).iteritems() %}

{%- set backend_fragment = "cinder/files/backend/_" + backend.engine + ".conf" %}
{%- include backend_fragment %}

{%- endfor %}

{%- endif %}
