Support for identity version 3
diff --git a/nova/files/kilo/nova-compute.conf.contrail.Debian b/nova/files/kilo/nova-compute.conf.contrail.Debian
index 34013f0..29e738b 100644
--- a/nova/files/kilo/nova-compute.conf.contrail.Debian
+++ b/nova/files/kilo/nova-compute.conf.contrail.Debian
@@ -34,7 +34,7 @@
 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 }}/v2.0
+neutron_admin_auth_url = http://{{ compute.identity.host }}:35357/v{% if compute.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
 neutron_url=http://{{ compute.network.host }}:{{ compute.network.port }}
 #neutron_url = http://10.0.102.35:9696/
 
@@ -108,6 +108,8 @@
 
 {%- endif %}
 
+{%- if compute.identity.get('version', 2) == 2 %}
+
 [keystone_authtoken]
 signing_dirname=/tmp/keystone-signing-nova
 admin_tenant_name = {{ compute.identity.tenant }}
@@ -118,6 +120,26 @@
 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]
 
 rabbit_host = {{ compute.message_queue.host }}
@@ -136,7 +158,7 @@
 admin_username={{ compute.network.user }}
 admin_password={{ compute.network.password }}
 admin_tenant_name={{ compute.identity.tenant }}
-admin_auth_url=http://{{ compute.identity.host }}:{{ compute.identity.port }}/v2.0
+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 }}
 
 [cinder]
diff --git a/nova/files/kilo/nova-controller.conf.Debian b/nova/files/kilo/nova-controller.conf.Debian
index b396ef1..86dc405 100644
--- a/nova/files/kilo/nova-controller.conf.Debian
+++ b/nova/files/kilo/nova-controller.conf.Debian
@@ -50,7 +50,7 @@
 
 
 neutron_auth_strategy = keystone
-neutron_admin_auth_url = http://{{ controller.identity.host }}:35357/v2.0
+neutron_admin_auth_url = http://{{ controller.identity.host }}:35357/v{% if controller.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
 {% if pillar.neutron is defined %}
 neutron_admin_password={{ pillar.neutron.server.identity.password }}
 neutron_admin_tenant_name={{ pillar.neutron.server.identity.tenant }}
@@ -125,6 +125,8 @@
 rabbit_retry_interval = 1
 rabbit_retry_backoff = 2
 
+{%- if controller.identity.get('version', 2) == 2 %}
+
 [keystone_authtoken]
 signing_dirname=/tmp/keystone-signing-nova
 signing_dir=/tmp/keystone-signing-nova
@@ -136,6 +138,26 @@
 auth_protocol=http
 auth_uri=http://{{ controller.identity.host }}:5000
 
+{%- else %}
+
+[keystone_authtoken]
+signing_dirname=/tmp/keystone-signing-nova
+identity_uri = http://{{ controller.identity.host }}:35357/v3
+revocation_cache_time = 10
+auth_section = generic_password
+
+[generic_password]
+auth_plugin = 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/v3
+auth_url=http://{{ controller.identity.host }}:35357/v3
+
+{%- endif %}
+
 [conductor]
 workers = 8
 
@@ -158,7 +180,7 @@
 
 [neutron]
 auth_strategy = keystone
-admin_auth_url = http://{{ controller.identity.host }}:35357/v2.0
+admin_auth_url = http://{{ controller.identity.host }}:35357/v{% if controller.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
 {% if pillar.neutron is defined %}
 admin_password={{ pillar.neutron.server.identity.password }}
 admin_tenant_name={{ pillar.neutron.server.identity.tenant }}
diff --git a/nova/files/liberty/nova-compute.conf.contrail.Debian b/nova/files/liberty/nova-compute.conf.contrail.Debian
index 34013f0..360fc66 100644
--- a/nova/files/liberty/nova-compute.conf.contrail.Debian
+++ b/nova/files/liberty/nova-compute.conf.contrail.Debian
@@ -34,7 +34,7 @@
 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 }}/v2.0
+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_url = http://10.0.102.35:9696/
 
@@ -108,6 +108,8 @@
 
 {%- endif %}
 
+{%- if compute.identity.get('version', 2) == 2 %}
+
 [keystone_authtoken]
 signing_dirname=/tmp/keystone-signing-nova
 admin_tenant_name = {{ compute.identity.tenant }}
@@ -118,6 +120,26 @@
 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]
 
 rabbit_host = {{ compute.message_queue.host }}
@@ -136,7 +158,7 @@
 admin_username={{ compute.network.user }}
 admin_password={{ compute.network.password }}
 admin_tenant_name={{ compute.identity.tenant }}
-admin_auth_url=http://{{ compute.identity.host }}:{{ compute.identity.port }}/v2.0
+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 }}
 
 [cinder]
diff --git a/nova/files/liberty/nova-controller.conf.Debian b/nova/files/liberty/nova-controller.conf.Debian
index 84eaa4f..98c8c7a 100644
--- a/nova/files/liberty/nova-controller.conf.Debian
+++ b/nova/files/liberty/nova-controller.conf.Debian
@@ -49,7 +49,7 @@
 
 
 neutron_auth_strategy = keystone
-neutron_admin_auth_url = http://{{ controller.identity.host }}:35357/v2.0
+neutron_admin_auth_url = http://{{ controller.identity.host }}:35357/v{% if controller.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
 {% if pillar.neutron is defined %}
 neutron_admin_password={{ pillar.neutron.server.identity.password }}
 neutron_admin_tenant_name={{ pillar.neutron.server.identity.tenant }}
@@ -124,6 +124,8 @@
 rabbit_retry_interval = 1
 rabbit_retry_backoff = 2
 
+{%- if controller.identity.get('version', 2) == 2 %}
+
 [keystone_authtoken]
 signing_dirname=/tmp/keystone-signing-nova
 signing_dir=/tmp/keystone-signing-nova
@@ -135,6 +137,26 @@
 auth_protocol=http
 auth_uri=http://{{ controller.identity.host }}:5000
 
+{%- else %}
+
+[keystone_authtoken]
+signing_dirname=/tmp/keystone-signing-nova
+identity_uri = http://{{ controller.identity.host }}:35357/v3
+revocation_cache_time = 10
+auth_section = generic_password
+
+[generic_password]
+auth_plugin = 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/v3
+auth_url=http://{{ controller.identity.host }}:35357/v3
+
+{%- endif %}
+
 [conductor]
 workers = 8
 
@@ -157,7 +179,7 @@
 
 [neutron]
 auth_strategy = keystone
-admin_auth_url = http://{{ controller.identity.host }}:35357/v2.0
+admin_auth_url = http://{{ controller.identity.host }}:35357/v{% if controller.identity.get('version', 2) == 2 %}2.0{% else %}3{% endif %}
 {% if pillar.neutron is defined %}
 admin_password={{ pillar.neutron.server.identity.password }}
 admin_tenant_name={{ pillar.neutron.server.identity.tenant }}
@@ -172,4 +194,4 @@
 service_metadata_proxy=True
 
 [cinder]
-os_region_name = RegionOne
\ No newline at end of file
+os_region_name = RegionOne