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

[DEFAULT]
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
force_dhcp_release=True
iscsi_helper=tgtadm
libvirt_use_virtio_for_bridges=True
connection_type=libvirt
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
verbose=True
ec2_private_dns_show_ip=False
api_paste_config=/etc/nova/api-paste.ini
volumes_path=/var/lib/nova/volumes
enabled_apis=ec2,osapi_compute,metadata
{%- 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 %}

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

{%- if compute.get('ceph', {}).ephemeral is defined %}
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"
block_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"
{%- else %}
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE
block_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE
{%- endif %}
live_migration_retry_count=30
#Neutron
neutron_admin_username={{ compute.network.user }}
neutron_admin_password={{ compute.network.password }}
neutron_admin_tenant_name={{ compute.identity.tenant }}
neutron_admin_auth_url=http://{{ compute.identity.host }}:{{ compute.identity.port }}/v{% if compute.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
neutron_url=http://{{ compute.network.host }}:{{ compute.network.port }}
neutron_region_name= {{ compute.network.region }}
#neutron_url = http://10.0.102.35:9696/


auth_strategy = keystone
libvirt_nonblocking = True
libvirt_inject_partition = -1

neutron_url_timeout = 300
network_api_class=nova.network.neutronv2.api.API
compute_driver = libvirt.LibvirtDriver

#NoVNC
vnc_enabled=true
vncserver_enabled = true
vncserver_listen=0.0.0.0
vncserver_proxyclient_address={{ compute.bind.vnc_address }}
novncproxy_base_url={{ compute.vncproxy_url }}/vnc_auto.html
novncproxy_port={{ compute.bind.vnc_port }}

heal_instance_info_cache_interval = {{ compute.heal_instance_info_cache_interval }}

{%- if compute.cache is defined %}
memcached_servers={%- for member in compute.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
{%- endif %}

security_group_api = neutron
libvirt_cpu_mode = host-passthrough
image_cache_manager_interval = 0
firewall_driver = nova.virt.firewall.NoopFirewallDriver
glance_port = 9292
glance_num_retries = 10

rabbit_retry_interval = 1
rabbit_retry_backoff = 2

rpc_cast_timeout = 30
rpc_conn_pool_size = 300
rpc_response_timeout = 3600
rpc_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 = True
service_down_time = 90

{% 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 %}

{%- if compute.notification is mapping %}
notification_driver = {{ compute.notification.get('driver', 'messagingv2') }}

{%- if compute.notification.topics is defined %}
notification_topics = {{ compute.notification.topics }}
{%- endif %}

{%- if compute.notification.notify_on is defined %}
{%- for key, value in compute.notification.notify_on.iteritems() %}
notify_on_{{ key }} = {{ value }}
{%- endfor %}
{%- endif %}

{%- elif compute.notification %}
notification_driver = messagingv2
{%- endif %}

resume_guests_state_on_host_boot = {% compute.get('resume_guests_state_on_host_boot', False) %}

{%- if compute.identity.get('version', 2) == 2 %}

[keystone_authtoken]
signing_dirname=/tmp/keystone-signing-nova
admin_tenant_name = {{ compute.identity.tenant }}
admin_user = {{ compute.identity.user }}
admin_password = {{ compute.identity.password }}
auth_host = {{ compute.identity.host }}
auth_port = {{ compute.identity.port }}
auth_protocol=http
auth_uri=http://{{ compute.identity.host }}:5000

{%- else %}

[keystone_authtoken]
signing_dirname=/tmp/keystone-signing-nova
identity_uri = http://{{ compute.identity.host }}:35357/v3
revocation_cache_time = 10
auth_section = generic_password

[generic_password]
auth_plugin = 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/v3
auth_url=http://{{ compute.identity.host }}:35357/v3

{%- endif %}

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

rabbit_userid = {{ compute.message_queue.user }}
rabbit_password = {{ compute.message_queue.password }}
rabbit_virtual_host = {{ compute.message_queue.virtual_host }}

[glance]

host = {{ compute.image.host }}

[neutron]
auth_strategy = keystone
admin_username={{ compute.network.user }}
extension_sync_interval={{ compute.network.get('extension_sync_interval', '600') }}
admin_password={{ compute.network.password }}
admin_tenant_name={{ compute.identity.tenant }}
admin_auth_url=http://{{ compute.identity.host }}:{{ compute.identity.port }}/v{% if compute.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
url=http://{{ compute.network.host }}:{{ compute.network.port }}
region_name= {{ compute.network.region }}
timeout=30

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

{%- if compute.get('ceph', {}).ephemeral is defined %}
[libvirt]
disk_cachemodes="network=writeback,block=none"
cpu_mode=host-passthrough
virt_type=kvm
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST
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
libvirt_inject_partition=-2
{%- endif %}

[vnc]
keymap = {{ compute.get('vnc_keymap', 'en-us') }}
