{%- from "nova/map.jinja" import compute with context %}

[DEFAULT]
logdir=/var/log/nova
state_path=/var/lib/nova
connection_type=libvirt
rootwrap_config=/etc/nova/rootwrap.conf
verbose=True
api_paste_config=/etc/nova/api-paste.ini
volumes_path=/var/lib/nova/volumes
compute_manager=nova.compute.manager.ComputeManager
network_device_mtu=65000
use_neutron = True
config_drive_format=vfat
force_config_drive=True
force_raw_images=True
notify_api_faults=False
allow_resize_to_same_host=True
security_group_api=neutron
vif_plugging_is_fatal=True
vif_plugging_timeout=300
dhcp_domain={{ compute.get('dhcp_domain', 'novalocal') }}
{%- if compute.get('sriov', false) %}
{%- for nic_name, sriov in compute.sriov.iteritems() %}
pci_passthrough_whitelist = {"devname":"{{ sriov.devname }}","physical_network":"{{ sriov.physical_network }}"}
{%- endfor %}
{%- endif %}
{%- if compute.image.use_cow is defined %}
use_cow_images = {{ compute.image.use_cow }}
{%- endif %}

remove_unused_original_minimum_age_seconds=86400
image_service=nova.image.glance.GlanceImageService

reserved_host_memory_mb = {{ compute.get('reserved_host_memory_mb', '512') }}

{%- if compute.vcpu_pin_set is defined %}
vcpu_pin_set={{ compute.vcpu_pin_set }}
{%- endif %}

allow_resize_to_same_host=True

auth_strategy = keystone

neutron_url_timeout = 300
compute_driver = libvirt.LibvirtDriver

heal_instance_info_cache_interval = {{ compute.heal_instance_info_cache_interval }}

image_cache_manager_interval = 0
firewall_driver = nova.virt.firewall.NoopFirewallDriver

rpc_cast_timeout = 30
rpc_response_timeout = 3600
executor_thread_pool_size = 70
report_interval = {{ compute.get('report_interval', '60') }}

block_device_allocate_retries=600
block_device_allocate_retries_interval=10

resume_guests_state_on_host_boot = {{ compute.get('resume_guests_state_on_host_boot', True) }}
service_down_time = 90

{%- if compute.message_queue.members is defined %}
transport_url = rabbit://{% for member in compute.message_queue.members -%}
                             {{ compute.message_queue.user }}:{{ compute.message_queue.password }}@{{ member.host }}:{{ member.get('port', 5672) }}
                             {%- if not loop.last -%},{%- endif -%}
                         {%- endfor -%}
                             /{{ compute.message_queue.virtual_host }}
{%- else %}
transport_url = rabbit://{{ compute.message_queue.user }}:{{ compute.message_queue.password }}@{{ compute.message_queue.host }}:{{ controller.message_queue.port }}{{ compute.message_queue.virtual_host }}
{%- endif %}

rpc_backend=rabbit

{% if pillar.ceilometer is defined %}
instance_usage_audit = True
instance_usage_audit_period = hour
{%- endif %}

{%- if compute.get('notification', {}).notify_on is defined %}
{%- for key, value in compute.notification.notify_on.iteritems() %}
notify_on_{{ key }} = {{ value }}
{%- endfor %}
{%- elif pillar.ceilometer is defined %}
notify_on_state_change = vm_and_task_state
{%- endif %}

[oslo_concurrency]
lock_path = /var/lib/nova/tmp

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

[vnc]
enabled = true
novncproxy_base_url={{ compute.vncproxy_url }}/vnc_auto.html
novncproxy_port={{ compute.bind.vnc_port }}
vncserver_listen=0.0.0.0
vncserver_proxyclient_address={{ compute.bind.vnc_address }}
keymap = {{ compute.get('vnc_keymap', 'en-us') }}

[spice]
enabled = false
html5proxy_base_url = {{ compute.vncproxy_url }}/spice_auto.html

[cache]
{%- if compute.cache is defined %}
backend = oslo_cache.memcache_pool
enabled = true
memcache_servers={%- for member in compute.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
{%- endif %}

[libvirt]
cpu_mode = host-passthrough
virt_type = kvm
inject_partition=-2
inject_password=False
disk_cachemodes="network=writeback,block=none"
libvirt_inject_password=True
block_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_NON_SHARED_INC
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST
libvirt_inject_key=True
inject_key=False
vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver

{%- if compute.get('ceph', {}).ephemeral is defined %}
images_type=rbd
images_rbd_pool={{ compute.ceph.rbd_pool }}
images_rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user={{ compute.ceph.rbd_user }}
rbd_secret_uuid={{ compute.ceph.secret_uuid }}
libvirt_inject_password=false
libvirt_inject_key=false
{%- endif %}

{%- if compute.get('libvirt', {}).uri is defined %}
connection_uri={{ compute.libvirt.uri }}
{%- endif %}

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

[oslo_messaging_rabbit]


[glance]
api_servers={{ compute.image.host }}:9292
host={{ compute.image.host }}

[neutron]
username={{ compute.network.user }}
password={{ compute.network.password }}
project_name={{ compute.identity.tenant }}
auth_url=http://{{ compute.identity.host }}:{{ compute.identity.port }}/v3
url=http://{{ compute.network.host }}:{{ compute.network.port }}
region_name= {{ compute.network.region }}
extension_sync_interval={{ compute.network.get('extension_sync_interval', '600') }}
auth_type = v3password
project_domain_name = Default
user_domain_name = Default
timeout=30

[cinder]
os_region_name = {{ compute.identity.region }}
catalog_info=volumev2:cinderv2:internalURL

